REST API
Utilisation de l’API REST (Application Programming Interface) de Relution
Toutes les fonctionnalités de Relution sont disponibles via une API REST étendue. Vous pouvez utiliser cette API pour contrôler Relution à partir de n’importe quelle autre application ou via un script. La documentation de l’API est disponible via le menu d’aide en haut à droite.
Créer des jetons d’accès à l’API
Vous avez besoin d’un jeton d’accès à l’API pour accéder à Relution à partir de systèmes ou de scripts tiers. Vous pouvez créer un jeton d’accès en cliquant sur le nom d’utilisateur dans le coin supérieur droit du portail Relution. Ensuite, cliquez sur Profil > Jeton d'accès > Ajouter un jeton d'accès
.
Nommez le jeton et copiez-le. Il doit être fourni via l’en-tête HTTP X-User-Access-Token
pour authentifier les requêtes.
Le jeton ne sera affiché qu’une seule fois lors de sa création.
Exemples de scripts
Voici quelques exemples de scripts qui montrent comment l’API peut être utilisée :
Utilisateurs au format CSV
Dans la première ligne du fichier .csv
, insérez une ligne d’en-tête avec une liste des noms de propriétés souhaités. L’ordre des noms de colonnes n’a pas d’importance. Vous pouvez également omettre les propriétés qui ne sont pas nécessaires.
Les champs obligatoires sont les suivants
userid, email, first name, last name, password.
Veillez à respecter la politique en matière de mot de passe lorsque vous saisissez un mot de passe. Vous trouverez cette politique sous Paramètres > Politique en matière de mot de passe. En outre, le numéro de téléphone, s’il est utilisé, doit être au format international, c’est-à-dire +4912345.
En outre, vous pouvez définir jusqu’à 15 propriétés personnalisées. Les colonnes d’en-tête correspondantes doivent être nommées comme suit :
custom1-custom15
.
Vous pouvez utiliser l’exemple ou télécharger un fichier d’exemple à partir du portail de Relution. Pour ce faire, cliquez sur ‘Utilisateurs > Utilisateurs > Menu à trois points > Importer des utilisateurs via CSV > Télécharger un modèle’.
userid,email,first name,last name,password,phone number,position,country,managed apple id,custom1,custom2
user1,user1@company.com,Heinz,Ketchup,p4ssw0rd,+49234346345,position de l'utilisateur1,utilisateur1 country,user1.id@company.com,43,Operations
user2,user2@company.com,Heinz,Ketchup,p4ssw0rd,+49234346345,position de l'utilisateur2,utilisateur2 country,user2.id@company.com,24,Marketing
user3,user3@company.com,Heinz,Ketchup,p4ssw0rd,+49234346345,position de l'utilisateur3,utilisateur3 country,user3.id@company.com,30,HR
user4,user4@company.com,Heinz,Ketchup,p4ssw0rd,+49234346345,user4 position,user4 country,user4.id@company.com,32,Sales
user5,user5@company.com,Heinz,Ketchup,p4ssw0rd,+49234346345,user5 position,user5 country,user5.id@company.com,45,Finance
user6,user6@company.com,Heinz,Ketchup,p4ssw0rd,+49234346345,user6 position,user6 country,user6.id@company.com,30,Purchase
Téléchargement d’utilisateurs via le portail Relution
Les utilisateurs peuvent être importés sur la base d’un fichier .csv
dans l’interface utilisateur de Relution à l’adresse suivante
Utilisateurs > Utilisateurs > Menu à trois points > Importer des utilisateurs via CSV
.
- Sélectionnez votre fichier CSV et le séparateur utilisé.
- Dans la deuxième étape de l’assistant, sélectionnez un ou plusieurs groupes auxquels les utilisateurs importés doivent être ajoutés en tant que membres.
- Les utilisateurs seront importés et seront visibles dans l’aperçu.
Création d’utilisateurs via l’API Relution
Pour créer des utilisateurs dans Relution via l’API sur la base d’un fichier .csv, vous devez créer deux fichiers.
Le premier est le fichier users.csv
, qui doit contenir une ligne pour chaque utilisateur dans le format décrit ci-dessus.
Le second fichier dont vous avez besoin est un fichier script bash (.sh). Copiez l’exemple suivant et remplacez les attributs suivants par vos valeurs :
- <valid_Relution_API_Key>
- <relution_URL>
Sauvegardez les deux fichiers.
En complément, le script doit être rendu exécutable :
chmod +x ./relutionCSVupload.sh
Exécutez le script dans le terminal comme suit :
./relutionCSVupload.sh -f users.csv
#!/bin/bash
#--------------------------------------------------------------------------------
# en-têtes
ACCESS_TOKEN="<valid_Relution_API_Key>"
while getopts "a:h:f:r :" opt ; do
case $opt in
a) # apikey
APIKEY="$OPTARG"
; ;
h) # host
HOST="$OPTARG"
; ;
f) # fichier
FILE="$OPTARG"
; ;
r) # rôle
ROLE="$OPTARG"
; ;
\ ?)
echo "Option inconnue -$OPTARG" >&2
; ;
esac
done
APIKEY=$ACCESS_TOKEN
HOST='https://<relution_URL>'
# N'oubliez pas d'éviter la dernière barre oblique inverse
echo $HOST
if [[ -z $APIKEY ]] ; then
echo "Veuillez spécifier une clé API (-a)".
exit 1
fi
if [[ -z $HOST ]] ; then
echo "Veuillez spécifier une URL d'hôte (-h)"
exit 1
fi
if [[ ! -f $FILE ]] ; then
echo "Veuillez spécifier un fichier csv existant (-f)"
exit 1
fi
if [[ -z $ROLE ]] ; then
ROLE=Organame%20Device%20User
fi
ERRORS=0
echo -n "Importation des utilisateurs de $FILE vers le serveur Relution ${HOST} en tant que '${ROLE//%20/ }'... "
echo
echo
# En cas d'erreurs manquantes, vous pouvez essayer d'exécuter l'expression curl suivante directement pour voir la sortie complète
# curl -X POST -H "Accept : application/json" -H "X-User-Access-Token : $APIKEY" -F "file=@$FILE" "$HOST/gofer/security/user/import?overwrite&role=$ROLE"
HTTP_ERROR=$(curl -X POST -H "Accept : application/json" -H "X-User-Access-Token : $APIKEY" -F "file=@$FILE" -sw "%{http_code}" "$HOST/gofer/security/user/import?overwrite&role=$ROLE")
echo $HTTP_ERROR
HTTP_ERROR=${HTTP_ERROR : -6}
HTTP_ERROR=${HTTP_ERROR : 3}
if [[ $HTTP_ERROR -ne 200 ]] ; then
ERRORS=$((ERRORS + 1))
echo "$HTTP_ERROR"
else
echo "Done. Pas d'erreur."
fi
if [[ $ERRORS -gt 0 ]] ; then
echo "Erreur(s) pendant le téléchargement : ($ERRORS)"
exit $ERRORS
fi
echo "All done."
echo
Créer une nouvelle organisation
#!/bin/bash
#--------------------------------------------------------------------------------
# URL du service Web, modifiez le nom du serveur si nécessaire
SVR_URL="https://<myserver>/api/v1/security/organizations/creationWizardRequests"
# Jeton d'accès de l'administrateur système, créez-le en ouvrant https://<server>/#/profile
# Ouvrez cette URL dans votre navigateur tout en étant connecté en tant qu'administrateur système.
# NOTE : Il ne s'agit pas d'une URL que vous pouvez atteindre en cliquant sur le portail !
ACCESS_TOKEN="<sysadmin_api_token>"
# En-têtes HTTP
ACCEPT="application/json"
ACCEPT_CHARSET="UTF-8"
# Exemple de requête
read -r -d '' JSON_BODY << 'EOF'
{
"limit" : 10,
"offset" : 0,
"getNonpagedCount" : true,
"sortOrder" : {
"sortFields" : [
{
"name" : "lastConnectionDate",
"ascendant" : faux
}
]
},
"filter" : {
"type" : "logOp",
"operation" : "AND",
"filters" : [
{
"type" : "stringEnum",
"fieldName" : "platform",
"values" : [
"ANDROID",
"ANDROID_ENTERPRISE",
"IOS"
]
},
{
"type" : "stringEnum",
"fieldName" : "status",
"values" : [
"COMPLIANT",
"INACTIF"
]
}
]
}
}
EOF
echo "Interroger les appareils à $SVR_URL..."
echo
# Aucun changement ne devrait être nécessaire au-delà de cette ligne...
RESPONSE=$(curl -X POST \N-${svr_url}${filter})
${SVR_URL}${FILTER} \
-H "X-User-Access-Token : $ACCESS_TOKEN" \N -H "Accept : $ACCEPT
-H "Accept : $ACCEPT" \N- "Accept-Charset : $ACCEPT" \N- "Accept-Charset : $ACCEPT
\N -H "Accept-Charset : $ACCEPT_CHARSET" \N -H "Content-Type : $ACCEPT" \N -H "Content-Type : $ACCEPT
-H "Content-Type : $ACCEPT" \N -H "CONTENT-TYPE : $ACCEPT
--write-out " HTTP_STATUS=%{http_code}" \
--silent \N- -silent
-d "$JSON_BODY")
if [[ $RESPONSE =~ HTTP_STATUS=([0-9]+) ]] ; then
HTTP_STATUS=${BASH_REMATCH[1]}
fi
if [[ $HTTP_STATUS -lt 200 || $HTTP_STATUS -gt 299 ]] ; then
echo "Statut HTTP : $HTTP_STATUS"
else
echo "Terminé. Analyse de la sortie..."
echo
echo "${RESPONSE%HTTP_STATUS*}" | jq '.results[].name'
fi
Interroger les appareils enregistrés dans une organisation particulière
#!/bin/bash
#--------------------------------------------------------------------------------
# URL du service Web, modifiez le nom du serveur si nécessaire
SVR_URL="https://<myserver>/api/v2/devices/baseInfo/query"
# Jeton d'accès d'un administrateur Orga, créez-le en cliquant sur le nom de l'utilisateur dans le coin supérieur droit du portail.
# Cliquez ensuite sur "Profil", "Jetons d'accès", "Ajouter".
ACCESS_TOKEN="<orga_admin_access_token>"
# En-têtes HTTP
ACCEPT="application/json"
ACCEPT_CHARSET="UTF-8"
# Exemple de requête
read -r -d '' JSON_BODY << 'EOF'
{
"limit" : 100,
"offset" : 0,
"getNonpagedCount" : true,
"sortOrder" : {
"sortFields" : [
{
"name" : "lastConnectionDate",
"ascendant" : faux
}
]
},
"filter" : {
"type" : "logOp",
"operation" : "AND",
"filters" : [
{
"type" : "stringEnum",
"fieldName" : "platform",
"values" : [
"ANDROID",
"ANDROID_ENTERPRISE",
"IOS"
]
},
{
"type" : "stringEnum",
"fieldName" : "status",
"values" : [
"COMPLIANT"
]
}
]
}
}
EOF
echo "Interroger les appareils à $SVR_URL..."
echo
# Aucun changement ne devrait être nécessaire au-delà de cette ligne...
RESPONSE=$(curl -X GET \N-${svr_url}${filter})
${SVR_URL}${FILTER} \
-H "X-User-Access-Token : $ACCESS_TOKEN" \N -H "Accept : $ACCEPT
-H "Accept : $ACCEPT" \N- "Accept-Charset : $ACCEPT" \N- "Accept-Charset : $ACCEPT
\N -H "Accept-Charset : $ACCEPT_CHARSET" \N -H "Content-Type : $ACCEPT" \N -H "Content-Type : $ACCEPT
-H "Content-Type : $ACCEPT" \N -H "CONTENT-TYPE : $ACCEPT
--write-out " HTTP_STATUS=%{http_code}" \
--silent \N- -silent
-d "$JSON_BODY")
if [[ $RESPONSE =~ HTTP_STATUS=([0-9]+) ]] ; then
HTTP_STATUS=${BASH_REMATCH[1]}
fi
if [[ $HTTP_STATUS -lt 200 || $HTTP_STATUS -gt 299 ]] ; then
echo " HTTP status : $HTTP_STATUS"
else
echo "Terminé. Analyse de la sortie..."
echo ${RESPONSE%HTTP_STATUS*} | jq '.results[].name'
fi
echo