URL de l’API Workfront

Pour plus d’informations sur l’URL que vous utiliserez pour appeler l’API Workfront, voir Format de domaine pour les appels API Adobe Workfront.

Concepts de base de REST

Cette section fournit une introduction de haut niveau sur la façon d’interagir avec l’API REST de Workfront pour les principes REST suivants :

URI d’objet

Chaque objet du système se voit attribuer un URI unique composé du type d’objet et de l’ID. Les exemples suivants montrent des URI décrivant trois objets uniques :

/attask/api/v15.0/project/4c78821c0000d6fa8d5e52f07a1d54d0
/attask/api/v15.0/task/4c78821c0000d6fa8d5e52f07a1d54d1
/attask/api/v15.0/issue/4c78821c0000d6fa8d5e52f07a1d54d2

Le type d’objet n’est pas sensible à la casse et peut être soit le code ObjCode abrégé (tel que proj), soit le nom alternatif de l’objet (projet).

Pour obtenir la liste des objets, des ObjCodes et des champs d’objet valides, voir  Explorateur API.

REMARQUE
Dans le contexte de l’API Workfront, un formulaire personnalisé est un objet Category et un champ personnalisé est un objet Parameter.

Opérations

Les objets sont manipulés en envoyant une requête HTTP à leur URI unique. L’opération à effectuer est spécifiée par la méthode HTTP.

Les méthodes HTTP standard correspondent aux opérations suivantes :

  • GET - Permet de récupérer un objet par son ID, de rechercher tous les objets par une requête, d’exécuter des rapports ou des requêtes nommées.
  • POST - Insère un nouvel objet.
  • PUT - Modifie un objet existant.
  • DELETE - Supprime un objet.

Afin de contourner les déficiences du client ou les limites de longueur du protocole, le paramètre de méthode peut être utilisé pour modifier le comportement du protocole HTTP. Par exemple, une opération GET peut être mise en œuvre en publiant l’URI suivant :

GET /attask/api/v15.0/project?id=4c78...54d0&method=get
GET /attask/api/v15.0/project/4c78...54d0?method=get

Réponse

Chaque requête reçoit une réponse au format JSON. La réponse comporte soit un attribut data si la demande a abouti, soit un attribut error en cas de problème. Par exemple, la requête

GET /attask/api/v15.0/proj/4c7c08b20000002de5ca1ebc19edf2d5

renvoie une réponse JSON similaire à la suivante :

{
    "data": [
        {
            "percentComplete": 0,
            "status": "CUR",
            "priority": 2,
            "name": "Brand New Project",
            "ID": "4c7c08b20000002de5ca1ebc19edf2d5" 
        } 
    ] 
}
REMARQUE
Lors de l’exécution d’une requête GET via la barre d’adresse de votre navigateur, il n’est pas nécessaire d’inclure le sessionID dans la requête.

Une sécurité particulière a été ajoutée pour les requêtes PUT, POST et DELETE. Toute requête d’écriture ou de suppression dans la base de données ne peut être exécutée que si sessionID=abc123 est inclus dans l’URI. Les exemples suivants montrent ce que cela donnerait pour une requête DELETE :

GET /attask/api/v15.0/project?id=4c78...54d0&method=delete&sessionID=abc123
GET /attask/api/v15.0/project/4c78...54d0?method=delete&sessionID=abc123

Authentification

L’API authentifie chaque demande pour s’assurer que le client a le droit d’afficher ou de modifier l’objet concerné par la requête.

L’authentification s’effectue en transmettant un ID de session qui peut être fourni en utilisant l’une des méthodes suivantes :

Authentification de l’en-tête de la demande

La méthode d’authentification préférée consiste à transmettre un en-tête de requête nommé SessionID contenant le jeton de session. Cela présente l’avantage d’être à l’abri des attaques Cross-site Request Forgery (CSRF) et de ne pas interférer avec l’URI à des fins de mise en cache.

Voici un exemple d’en-tête de requête :

GET /attask/api/v15.0/project/search
SessionID: abc1234

Authentification basée sur les cookies

L’API utilise la même authentification basée sur les cookies que celle utilisée par l’interface web du système. Ainsi, si un client ou une cliente se connecte à Workfront à l’aide de l’interface web, tous les appels AJAX effectués à partir du même navigateur utilisent la même authentification.

REMARQUE
Afin de se protéger contre les attaques CSRF (Cross Site Request Forgery), cette méthode d’authentification n’est disponible que pour les opérations en lecture seule.

Connexion

IMPORTANT
Workfront ne recommande plus l’utilisation du point d’entrée /login ou des clés API. Utilisez plutôt l’une des méthodes d’authentification suivantes :
  • Authentification du serveur avec JWT
  • Authentification des utilisateurs et utilisatrices avec OAuth2
Pour obtenir des instructions sur la configuration de ces méthodes d’authentification, voir Créer des applications OAuth2 pour les intégrations Workfront.
Pour obtenir des instructions sur l’utilisation de l’authentification du serveur dans Workfront, voir Configurer et utiliser les applications OAuth 2 personnalisées de votre organisation à l’aide du flux JWT.
Pour obtenir des instructions sur l’utilisation de l’authentification des utilisateurs et utilisatrices dans Workfront, voir Configurer et utiliser les applications OAuth 2 personnalisées de votre organisation à l’aide du flux de code d’autorisation.
REMARQUE
La procédure décrite dans cette section ne s’applique qu’aux organisations qui n’ont pas encore été intégrées à Adobe Business Platform. La connexion à Workfront via l’API Workfront n’est pas disponible si votre entreprise a été intégrée à Adobe Business Platform.
Pour une liste des procédures qui diffèrent selon que votre entreprise a été intégrée ou non à Adobe Business Platform, voir Différences d’administration en fonction de la plateforme (Adobe Workfront/Adobe Business Platform).

À l’aide d’un nom d’utilisateur ou d’utilisatrice et d’un mot de passe valides, vous pouvez utiliser la requête suivante pour obtenir un ID de session :

POST /attask/api/v15.0/login?username=admin&password=user

Cela permet de créer un cookie pour authentifier les futures requêtes et de renvoyer une réponse JSON contenant l’ID de session nouvellement créé, l’ID de la personne connectée et d’autres attributs de session.

REMARQUE
Si vous avez un utilisateur ou une utilisatrice API désigné qui est également administrateur ou administratrice, Workfront vous suggère fortement d’utiliser une clé API pour vous connecter.

Génération d’une clé API

Vous pouvez générer une clé API lorsque vous vous connectez au système en tant qu’utilisateur ou utilisatrice, comme le montre l’exemple suivant :

PUT /attask/api/v15.0/user?action=generateApiKey&username= username&password=password&method=put

Récupération d’une clé API précédemment générée

Vous pouvez également récupérer une clé API qui a été précédemment générée pour un utilisateur ou une utilisatrice en particulier en exécutant getApiKey :

PUT /attask/api/v15.0/user?action=getApiKey&username=user@email.com&password=userspassword&method=put

Vous pouvez ensuite utiliser ce résultat pour authentifier tout appel API en ajoutant « apiKey » comme paramètre de requête avec cette valeur à la place d’un sessionID ou d’un nom d’utilisateur ou d’utilisatrice et d’un mot de passe. Cela est bénéfique du point de vue de la sécurité.

La requête suivante est un exemple de récupération de données d’un projet à l’aide de la clé API :

GET /attask/api/v15.0/project/abc123xxxxx?apiKey=123abcxxxxxxxxx

Invalider une clé API

Si la valeur apiKey a été compromise, vous pouvez exécuter « clearApiKey », ce qui invalide la clé API actuelle, comme le montre l’exemple suivant :

GET /attask/api/v15.0/user?action=clearApiKey&username=user@email.com&password=userspassword&method=put

Une fois la clé effacée, vous pouvez relancer getApiKey pour générer une nouvelle clé API.

Déconnexion

Lorsqu’une session est terminée, vous pouvez utiliser la requête suivante pour déconnecter l’utilisateur ou l’utilisatrice, en empêchant tout accès ultérieur avec l’ID de session.

GET /attask/api/v15.0/logout?sessionID=abc1234

L’ID de session à déconnecter peut être spécifié sous la forme d’un cookie, d’un en-tête de requête ou d’un paramètre de requête.

Pour déconnecter un utilisateur ou une utilisatrice :

  1. Accédez à votre écran de connexion, mais ne vous connectez pas.

  2. Modifiez l’URL en /attask/api/v15.0/project/search.
    Remarquez que la page est introuvable.

  3. Remplacez le mot search par login?username=admin&password=user, en remplaçant votre nom d’utilisateur ou d’utilisatrice et votre mot de passe pour admin et *user.
    *Cette session est stockée dans le navigateur sous la forme d’un cookie et n’a pas besoin d’être répétée dans chaque requête GET ultérieure.

  4. Remplacez l’URL par /attask/api/v15.0/project/search.

  5. Remarquez la réponse fournie.

Vous devez toujours inclure le sessionID fourni après la connexion lorsque vous effectuez des requêtes PUT, POST et DELETE.

Comportement GET

Utilisez la méthode HTTP GET pour récupérer un ou plusieurs objets et pour exécuter des rapports.

Récupération d’objets

Vous pouvez améliorer la recherche d’objets à l’aide de modificateurs et de filtres.

Récupération d’un objet à l’aide de l’ID de l’objet

Si vous connaissez l’identifiant d’un objet, vous pouvez le retrouver en accédant à son URI unique. Par exemple, la requête

GET /attask/api/v15.0/project/4c78821c0000d6fa8d5e52f07a1d54d0

renvoie une réponse similaire à la suivante :

{
    "percentComplete": 0,
    "status": "CUR",
    "priority": 2,
    "name": "Brand New Project",
    "ID": "4c7c08b20000002de5ca1ebc19edf2d5" 
}

Vous pouvez récupérer plusieurs objets dans la même requête en spécifiant le paramètre de requête ID et en donnant une liste des identifiants séparés par des virgules, comme le montre l’exemple suivant :

GET /attask/api/v15.0/project?id=4c78...54d0,4c78...54d1

Notez que la requête /attask/api/v15.0/project?id=… est identique à la requête /attask/api/v15.0/project/....

Récupérer un objet à l’aide de l’URI

Si vous souhaitez récupérer un objet en fonction de critères autres que l’identifiant, vous pouvez rechercher l’URI.

Par exemple, vous pouvez utiliser la requête suivante pour obtenir une liste de tous les projets dans le système :

GET /attask/api/v15.0/project/search

Vous pouvez spécifier des filtres en utilisant les paramètres de la requête sous forme de paires nom-valeur. Par exemple, l’exemple suivant montre une requête qui recherche tous les projets en cours :

GET /attask/api/v15.0/project/search?status=CUR

La requête suivante trouve toutes les tâches qui ne sont pas encore terminées et qui sont affectées à un utilisateur nommé John.

GET /attask/api/v15.0/task/search?percentComplete=100
&percentComplete_Mod=lt &assignedTo:firstName=John