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.

API

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’.

image

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.

  1. Sélectionnez votre fichier CSV et le séparateur utilisé.
  2. 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.
  3. 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