Ce qu'il vous faut
- Le module Connections dans votre espace de travail : il est inclus dans les formules Team, Business, Partner et Enterprise, et disponible avec la formule Project via le module Integrations for one UAT.
- Des droits d'administrateur dans le projet UAT Studio.
- Un outil capable d'envoyer des requêtes HTTPS : un script, votre pipeline CI, Postman ou une plateforme d'intégration.
Vous utilisez Zapier ou Make ? Vous n'avez alors pas besoin d'appeler l'API vous-même : consultez Zapier et Make.
Connectez votre outil
Créez une clé d'API
- Connectez-vous sur app.uat.studio, ouvrez le projet et allez dans Setup.
- Dans la carte API keys, saisissez un nom, par exemple Release pipeline, et cliquez sur Create API key.
- Cliquez sur Copy. UAT Studio n'affiche la clé qu'une seule fois. Enregistrez-la comme secret dans votre outil, par exemple
UAT_STUDIO_KEY.
Faites un appel
Envoyez la clé avec chaque requête sous la forme Authorization: Bearer, un espace, puis la clé. Par exemple, les anomalies les plus récentes :
curl -H "Authorization: Bearer $UAT_STUDIO_KEY" "https://app.uat.studio/api/v1/issues?order=created&limit=10"
Une nouvelle anomalie, avec du JSON dans le corps :
curl -X POST "https://app.uat.studio/api/v1/issues" \
-H "Authorization: Bearer $UAT_STUDIO_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Save fails on a new quote", "severity": "High", "test_number": 12}'
La réponse est en JSON. Chaque anomalie est fournie avec sa clé (ISS-012), son titre, sa description, sa gravité, sa priorité, son statut, son responsable, le test et le testeur qui l'a trouvée, le ticket dans Jira ou Azure DevOps et un lien vers UAT Studio.
Les adresses de l'API
| Type | Requête | Ce qu'il fait |
|---|---|---|
| Lire | GET /me | Le projet auquel appartient la clé. |
| Lire | GET /issues?order=created | Les anomalies les plus récentes. order=updated : les dernières modifiées. Également since (une date et une heure), status et limit (jusqu'à 100). |
| Lire | GET /issues/ISS-012 | Une anomalie, avec l'étape concernée et son historique. |
| Créer | POST /issues | Une nouvelle anomalie : title, et éventuellement description, severity, priority, test_number, step_number, assignee, record_url. Sans test_number (et avec group pour le groupe qui la teste), l'anomalie reçoit son propre cas de test dès qu'elle passe à Prête pour un nouveau test. |
| Modifier | PATCH /issues/ISS-012 | status, severity, assignee ou record_url, avec un comment facultatif. Passer le status d'une anomalie sans cas de test à Ready for retest crée son cas de test ; la réponse contient alors "test_case": "created". |
| Modifier | POST /issues/ISS-012/comments | Un comment dans l'historique. |
| Lire | GET /cases | Les cas de test avec leurs étapes et le nombre de résultats Pass, Fail, etc. Également epic, since et limit (jusqu'à 1 000). |
| Créer | POST /cases | Un cas de test : title, steps (une liste de action, expected et éventuellement data), et éventuellement external_id, epic, group, links, priority (Must, Should ou Could) et risk (High, Medium ou Low). Renvoyez le même external_id pour le mettre à jour ; les étapes à la même position conservent leurs résultats. |
| Créer | POST /testers | Un testeur : name, et éventuellement email et group. L'invitation est envoyée depuis Setup. |
| Lire | GET /signoffs | Les validations, les plus récentes en premier. |
| Lire | GET /groups | Les groupes du projet. |
| Lire | GET /status | Go ou no-go pour une version : voir ci-dessous. |
Release gate : déployer quand le métier a validé
GET /status répond avec une decision : go quand le cycle en cours est validé et qu'aucune anomalie Critical n'est ouverte, no-go quand une validation est rejetée ou qu'une anomalie Critical est ouverte, et open quand rien n'est encore décidé. Avec ?gate=1, toute réponse autre que go renvoie HTTP 409, et l'étape de votre pipeline échoue.
- name: UAT signed off?
run: curl --fail-with-body -sS -H "Authorization: Bearer ${{ secrets.UAT_STUDIO_KEY }}" "https://app.uat.studio/api/v1/status?gate=1"
Utilisez une clé dédiée pour le pipeline, pour pouvoir la révoquer séparément.
Réponses et que faire
| Réponse | Que faire |
|---|---|
| 401 : the API key is not valid | La clé a été révoquée ou mal saisie. Créez une nouvelle clé sous Setup › API keys. |
| 403 : ne fait pas partie de la formule, ou lecture seule | L'espace de travail n'a pas le module Connections, ou sa formule a pris fin. La lecture fonctionne encore en lecture seule. |
| 404 : there is no issue ISS-… | La clé appartient à un autre projet, ou l'anomalie a été fusionnée. |
| 400 : un champ n'est pas correct | Le message indique quel champ, par exemple une gravité qui n'existe pas. |
409 avec ?gate=1 | La version ne peut pas encore partir : la réponse en donne les raisons. |
Comment la clé est protégée
- Une clé donne accès à un seul projet, rien d'autre dans votre espace de travail.
- UAT Studio ne stocke qu'une empreinte de la clé, jamais la clé elle-même. Setup affiche les quatre derniers caractères et la date de dernière utilisation.
- Revoke dans Setup désactive une clé immédiatement.
- Chaque anomalie ou testeur créé ou modifié via une clé apparaît dans l'historique de l'anomalie et dans le journal d'audit, avec le nom de la clé.
- Ne mettez jamais une clé dans un email, un chat ou du code ; enregistrez-la comme secret dans votre outil.
