Référence de l'API des projets
Créez, récupérez, mettez à jour, supprimez et gérez l'adhésion de vos projets Axe Developer Hub de manière programmatique en utilisant l'API REST
L'API Projects vous permet de gérer de manière programmatique les projets Axe Developer Hub et leur adhésion, en utilisant la même clé API Axe Account que vous utilisez déjà pour le reste des API REST de l'Axe Developer Hub. Il n'y a pas de justificatifs séparés pour la gestion de projet. Pour une introduction pas à pas, voir Commencer avec l'automatisation de la gestion de projet.
Si vous avez seulement besoin de découvrir l'ID d'un projet à partir de son nom pour pouvoir appeler le API de sessions et de résultats, voir Lister les projets ci-dessous. Si vous connaissez déjà l'ID de votre projet, vous pouvez le trouver dans Axe Developer Hub et appeler directement l'API Sessions et Résultats.
Authentification
Toutes les requêtes nécessitent une clé API. Fournissez-la en utilisant l'en-tête X-API-Key:
X-API-Key: <DEQUE_API_KEY>Trouvez votre clé API dans le Portail de compte Axe. Choisissez une clé API Axe Developer Hub pour les projets web ou CI/CD. Choisissez une clé API Axe DevTools Mobile pour les projets mobiles.
Considérez votre clé API comme un secret : stockez-la dans une variable d'environnement ou dans le gestionnaire de secrets de votre plateforme CI/CD plutôt que de l'intégrer directement dans vos requêtes.
Contrôle d'accès et permissions
- Créer un projet nécessite un abonnement actif (licence) pour le type de projet concerné. Celui qui crée un projet devient automatiquement son administrateur.
- Rôles de projet sont administrateur et membre. Un administrateur de projet peut mettre à jour ou supprimer le projet et gérer ses membres. Un membre de projet peut accéder au projet mais ne peut pas le gérer ni ses membres.
- Administrateurs de l'organisation peuvent voir et gérer tous les projets des types licenciés de leur organisation, indépendamment de leur adhésion personnelle au projet. Ils n'ont pas besoin d'une licence personnelle pour visualiser, mettre à jour, supprimer ou gérer les membres d'un projet existant. Créer un projet est l'unique exception : une licence active est toujours requise, que l'appelant soit un administrateur de l'organisation ou non.
- Ajouter un membre à un projet ne requiert pas que ce membre détienne une licence. L'API les enregistre immédiatement comme membre du projet, mais ils ne peuvent accéder au projet qu'une fois qu'ils détiennent une licence. L'utilisateur ciblé doit déjà appartenir à l'organisation. Vous ne pouvez pas ajouter quelqu'un qui n'est pas déjà membre de l'organisation.
- La suppression d'un projet est définitive. Il n'y a pas de restauration en libre-service pour un projet supprimé.
- Dans tous les cas, la réponse est limitée au produit auquel la clé API donne accès. Une clé API Axe Developer Hub renvoie et gère uniquement les projets Axe Developer Hub (web). Une clé API Axe DevTools Mobile renvoie et gère uniquement les projets Axe DevTools Mobile.
Un abonnement inactif renvoie 401 Unauthorized.
Valeurs de configuration du type de projet
Chaque projet a une selected_project_type, et chaque type accepte uniquement un ensemble spécifique et fixe de valeurs test_language / test_platform :
selected_project_type |
Famille de produits | test_language valides |
test_platform valides |
|---|---|---|---|
axe-devtools-watcher |
Web | javascript, typescript |
Cypress, Cypress Component, WebDriverJS, Playwright, Playwright Test, Puppeteer, WebdriverIO, WebdriverIO Testrunner |
axe-devtools-watcher |
Web | java |
Selenium WebDriver, Playwright |
axe-devtools-html |
Web | null (requis) |
null (requis) |
axe-devtools-mobile |
Mobile | null (requis) |
Appium, Espresso, UI Automator, XCUITest |
Le selected_project_type d'un projet est fixé lors de sa création. Pour utiliser un type différent, créez un nouveau projet.
Lister les projets
Renvoie la liste des projets auxquels la clé API authentifiée peut accéder.
Requête
- Point de terminaison :
GET https://axe.deque.com/api-pub/v1/results/projects - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>Accept: application/json
Paramètres de requête
Tous les paramètres de requête sont optionnels.
| Paramètre | Description |
|---|---|
project_types |
Liste de types de projets à retourner, par exemple axe-devtools-watcher,axe-devtools-html. Accepte également les alias web et mobile, qui s'étendent sur les types concrets pour ce produit : web renvoie les projets axe-devtools-watcher et axe-devtools-html, et mobile renvoie les projets axe-devtools-mobile (Axe DevTools Mobile SDK et projets Appium). Si vous omettez ce paramètre, la réponse renvoie tous les types de projets auxquels votre clé API peut accéder. |
page_size |
Nombre de projets à retourner par page. Par défaut : 30. Maximum : 100. Les valeurs au-dessus du maximum sont limitées à 100. Voir Pagination par curseur. |
after |
Valeur du curseur de la réponse précédente, utilisée pour récupérer la page suivante. Voir Pagination par curseur. |
Corps de la réponse
Une réponse réussie renvoie un tableau JSON d'objets projet. Chaque objet projet inclut les champs suivants :
| Champ | Type | Description |
|---|---|---|
project_id |
Chaîne de caractères | Identifiant unique du projet. Lorsque vous appelez cette API ou le Point de terminaison Sessions, utilisez cette valeur comme {project_id}. |
name |
Chaîne de caractères | Le nom d'affichage du projet. |
selected_project_type |
Chaîne de caractères | Le type de projet, par exemple axe-devtools-watcher ou axe-devtools-html. Voir Valeurs de configuration du type de projet. |
test_language |
Chaîne de caractères | Langue de test du projet. Pour les types de projets qui n'utilisent pas de langue de test, c'est null. Voir Valeurs de configuration du type de projet. |
test_platform |
Chaîne de caractères | Plateforme de test du projet. Pour les types de projets qui n'utilisent pas de plateforme de test, c'est null. Voir Valeurs de configuration du type de projet. Lire test_language et test_platform avant mettre à jour un projet : la mise à jour valide le couple après avoir fusionné vos modifications avec ces valeurs stockées. |
role |
Chaîne de caractères | Votre rôle sur le projet : admin, ou contributor pour un membre du projet. Si vous êtes un administrateur d'organisation qui n'est pas membre du projet, c'est null. |
user_id |
Chaîne de caractères | Votre ID d'utilisateur, lorsque role est défini. Si role est null, c'est null. |
enterprise_id |
Chaîne de caractères | ID de l'organisation propriétaire du projet. Si le projet n'appartient pas à une organisation, c'est null. |
is_enterprise_project |
Booléen | Si le projet appartient à une organisation, c'est-à-dire si enterprise_id est défini. |
created_at |
Chaîne de caractères | Horodatage UTC ISO 8601 pour la date de création du projet. |
updated_at |
Chaîne de caractères | Horodatage UTC ISO 8601 pour la dernière mise à jour du projet. Si le projet n'a jamais été mis à jour, c'est null. |
run_by |
Chaîne de caractères | Nom de l'utilisateur dont la clé API a exécuté la session la plus récente du projet. Si le projet n'a pas de sessions, ou si l'utilisateur ne peut pas être résolu (par exemple, la clé API a été supprimée), c'est null. |
last_session_created_at |
Chaîne de caractères | Horodatage UTC ISO 8601 de la session la plus récente du projet. Si le projet n'a pas de sessions, c'est null. |
has_git_information |
Booléen | Si le projet a des métadonnées Git attachées. |
git_url |
Chaîne de caractères | URL du dépôt Git associé au projet. Si le projet n'a pas d'informations Git, c'est null. |
latest_session |
Objet | Détails de la session la plus récente du projet, incluant son ID (id), la date de création (created_at) et la branche Git (git_branch). Si le projet n'a pas de sessions, c'est null. Ce champ ne contient qu'une seule session. Pour lister chaque session, utilisez plutôt le Point de terminaison Sessions. |
Les réponses peuvent inclure des champs supplémentaires qui ne sont pas listés ici, et de nouveaux champs peuvent être ajoutés au fil du temps. Ignorez tout champ que vous ne reconnaissez pas et ne vous fiez pas aux champs non documentés.
Exemple de Corps de Réponse
[
{
"project_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "webapp-ci",
"selected_project_type": "axe-devtools-watcher",
"test_language": "typescript",
"test_platform": "Playwright",
"role": "admin",
"user_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"enterprise_id": "3f2b8e1a-6c4d-4f7e-9a0b-1d2c3e4f5a6b",
"is_enterprise_project": true,
"created_at": "2026-06-01T14:23:00.000Z",
"updated_at": "2026-06-10T16:45:00.000Z",
"run_by": "Jane Developer",
"last_session_created_at": "2026-06-14T09:12:00.000Z",
"has_git_information": true,
"git_url": "https://github.com/example/webapp",
"latest_session": {
"id": "0d4a85a2-9e6f-44ef-b814-fee8412abeb0",
"created_at": "2026-06-14T09:12:00.000Z",
"git_branch": "main"
}
},
{
"project_id": "f0e1d2c3-b4a5-6789-0123-456789abcdef",
"name": "design-system",
"selected_project_type": "axe-devtools-html",
"test_language": null,
"test_platform": null,
"role": "admin",
"user_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"enterprise_id": "3f2b8e1a-6c4d-4f7e-9a0b-1d2c3e4f5a6b",
"is_enterprise_project": true,
"created_at": "2026-05-20T08:00:00.000Z",
"updated_at": null,
"run_by": null,
"last_session_created_at": null,
"has_git_information": false,
"git_url": null,
"latest_session": null
},
{
"project_id": "c4d5e6f7-a8b9-4c0d-9e1f-2a3b4c5d6e7f",
"name": "ios-app-ci",
"selected_project_type": "axe-devtools-mobile",
"test_language": null,
"test_platform": "XCUITest",
"role": "admin",
"user_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"enterprise_id": "3f2b8e1a-6c4d-4f7e-9a0b-1d2c3e4f5a6b",
"is_enterprise_project": true,
"created_at": "2026-06-03T10:15:00.000Z",
"updated_at": null,
"run_by": "Jane Developer",
"last_session_created_at": "2026-06-15T11:05:00.000Z",
"has_git_information": false,
"git_url": null,
"latest_session": {
"id": "5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e",
"created_at": "2026-06-15T11:05:00.000Z",
"git_branch": null
}
}
]Pour garder l'exemple court, chaque objet latest_session montre seulement trois de ses champs. L'API en retourne plus.
Pagination par curseur
La pagination est facultative. N'envoyez ni page_size ni after, et la réponse renvoie votre liste complète de projets en une seule réponse, sans en-tête de curseur.
Pour paginer les résultats, l'API Projects utilise la même pagination par curseur que le Point de terminaison Sessions. Lorsque d'autres résultats existent au-delà de la page actuelle, la réponse renvoie une valeur de curseur opaque dans l'en-tête x-pagination-cursor. Passez cette valeur en tant que paramètre de requête after dans votre prochaine requête pour obtenir la page suivante.
Lorsque la réponse n'a pas d'en-tête x-pagination-cursor, vous êtes à la dernière page.
Rechercher un ID de Projet par Nom
Cet exemple utilise curl et jq pour trouver l'ID d'un projet à partir de son nom :
curl -s \
-H "Accept: application/json" \
-H "X-API-Key: $API_KEY" \
"https://axe.deque.com/api-pub/v1/results/projects" \
| jq -r '.[] | select(.name == "webapp-ci") | .project_id'Passez l'ID retourné à Point de terminaison Sessions pour lister les sessions de ce projet.
Réponses d'erreur pour la liste des projets
| Statut | Cause |
|---|---|
400 Bad Request |
La valeur project_types contient un type de projet invalide, le curseur after est mal formé, ou page_size/after a été répété dans la chaîne de requête. |
401 Unauthorized |
La clé API est invalide, manquante, ou l'abonnement associé est inactif. |
Récupérer un projet
Renvoie un seul projet par son ID, dans le même format que Lister les projets.
Requête
- Point de terminaison :
GET https://axe.deque.com/api-pub/v1/results/projects/{project_id} - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>Accept: application/json
Réponses d'erreur pour la récupération d'un projet
| Statut | Cause |
|---|---|
400 Bad Request |
project_id n'est pas un UUID valide. |
401 Unauthorized |
La clé API est invalide, manquante, ou l'abonnement associé est inactif. |
403 Forbidden |
Le projet existe mais est en dehors de l'organisation ou du type de produit de votre clé API, ou vous n'en êtes pas membre. |
404 Not Found |
Aucun projet n'existe avec cet ID ou le projet a été supprimé. |
Créer un projet
La création d'un projet nécessite l'ensemble configurable complet. name, selected_project_type, test_language, et test_platform sont tous requis. Un champ omis est rejeté avec une erreur 400.
Requête
- Point de terminaison :
POST https://axe.deque.com/api-pub/v1/results/projects - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>Content-Type: application/jsonAccept: application/json
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
name |
Chaîne de caractères | Oui | Le nom d'affichage du projet. 1 à 512 caractères. |
selected_project_type |
Chaîne de caractères | Oui | Le type de projet. Voir Valeurs de configuration du type de projet. |
test_language |
Chaîne ou null |
Oui | Doit être une valeur valide pour selected_project_type. Voir Valeurs de configuration du type de projet. |
test_platform |
Chaîne ou null |
Oui | Doit être une valeur valide pour selected_project_type et test_language. Voir Valeurs de configuration du type de projet. |
Exemple de corps de requête
{
"name": "webapp-ci",
"selected_project_type": "axe-devtools-watcher",
"test_language": "typescript",
"test_platform": "Playwright"
}Corps de la réponse
Renvoie le projet créé, dans le même format que Lister les projets. Quiconque crée un projet en devient automatiquement l'administrateur, il n'est donc pas nécessaire d'effectuer un appel de membre séparé. Une création réussie renvoie 201 Created.
Réponses d'erreur pour la création d'un projet
| Statut | Cause |
|---|---|
400 Bad Request |
Le corps de la requête manque d'un champ requis, ou selected_project_type n'est pas un type de projet valide. Cela peut également signifier que test_language/test_platform ne sont pas une combinaison valide pour selected_project_type, ou que name est vide ou dépasse 512 caractères. |
401 Unauthorized |
La clé API est invalide, manquante, ou l'abonnement associé est inactif. |
403 Forbidden |
Le produit de votre clé API ne correspond pas à selected_project_type, ou votre abonnement ne couvre pas ce type de projet. |
Mettre à jour un projet
Un PATCH ne modifie que les champs que vous envoyez. Bien que name, selected_project_type, test_language, et test_platform soient chacun facultatifs, la requête nécessite au moins un. Un champ omis conserve sa valeur stockée. Après la mise à jour, test_language et test_platform doivent toujours être une paire valide pour le selected_project_type du projet, donc si vous n'envoyez qu'un seul d'entre eux, vérifiez d'abord la valeur actuelle de l'autre.
Requête
- Point de terminaison :
PATCH https://axe.deque.com/api-pub/v1/results/projects/{project_id} - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>Content-Type: application/jsonAccept: application/json
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
name |
Chaîne de caractères | Non | Le nom d'affichage du projet. 1 à 512 caractères. |
selected_project_type |
Chaîne de caractères | Non | Le type de projet ne peut pas changer après la création. Envoyer la valeur actuelle est accepté, et toute autre valeur renvoie une erreur 400. |
test_language |
Chaîne ou null |
Non | Doit être une valeur valide pour le selected_project_type du projet. Voir Valeurs de configuration du type de projet. |
test_platform |
Chaîne ou null |
Non | Doit être une valeur valide pour le selected_project_type et test_language du projet. Voir Valeurs de configuration du type de projet. |
Exemple de corps de requête
{
"name": "webapp-ci-renamed"
}Corps de la réponse
Renvoie le projet mis à jour, dans le même format que Lister les projets. Une mise à jour réussie renvoie 200 OK.
Réponses d'erreur pour la mise à jour d'un projet
| Statut | Cause |
|---|---|
400 Bad Request |
Le corps de la requête n'a aucun des champs modifiables, ou selected_project_type diffère du type actuel du projet. Cela peut également signifier que test_language/test_platform ne sont pas valides pour le type de projet ou que name est vide ou dépasse 512 caractères. |
401 Unauthorized |
La clé API est invalide, manquante, ou l'abonnement associé est inactif. |
403 Forbidden |
Le produit de votre clé API ne correspond pas au selected_project_type du projet, ou votre abonnement ne couvre pas ce type de projet. Cela couvre également le cas où vous n'êtes pas administrateur du projet. |
404 Not Found |
Aucun projet n'existe avec cet ID ou le projet a été supprimé. |
Supprimer un projet
La suppression d'un projet est définitive. Il n'y a pas de restauration en libre-service.
Requête
- Point de terminaison :
DELETE https://axe.deque.com/api-pub/v1/results/projects/{project_id} - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>Accept: application/json
Corps de la réponse
{ "deleted": true }Réponses d'erreur pour la suppression d'un projet
| Statut | Cause |
|---|---|
400 Bad Request |
project_id n'est pas un UUID valide. |
401 Unauthorized |
La clé API est invalide, manquante, ou l'abonnement associé est inactif. |
403 Forbidden |
Vous n'êtes pas administrateur du projet ou administrateur de l'organisation qui possède le projet, ou le type de projet est en dehors de votre accès. |
404 Not Found |
Aucun projet n'existe avec cet ID ou le projet a déjà été supprimé. |
Adhésion au projet
L'adhésion à un projet est une sous-ressource du projet. Un administrateur de projet peut gérer le projet et son adhésion. Un membre du projet (le rôle member dans les opérations d'adhésion ci-dessous) peut accéder au projet mais ne peut pas le gérer. Les opérations d'adhésion identifient les utilisateurs par leur adresse e-mail. Ajouter un membre ne nécessite pas que ce membre détienne une licence. L'API les enregistre immédiatement, mais ils ne peuvent pas accéder au projet tant qu'ils ne détiennent pas une licence. L'utilisateur cible doit déjà appartenir à votre organisation. Vous ne pouvez pas ajouter quelqu'un qui n'est pas déjà membre de l'organisation.
Utilisez autant que possible les opérations en lot ci-dessous. Les trois opérations d'écriture acceptent plusieurs utilisateurs en un seul appel. Cela réduit le nombre de requêtes à effectuer. Si vous gérez l'adhésion pour une grande organisation, appliquez le backoff et réessayez lorsque vous recevez une réponse 429. Voir 429 Too Many Requests pour le modèle général.
Lister les membres du projet
- Point de terminaison :
GET https://axe.deque.com/api-pub/v1/results/projects/{project_id}/memberships - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>,Accept: application/json
Corps de la réponse
{
"members": [
{
"user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"role": "admin",
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Doe",
"active_license": true,
"created_at": "2026-06-01T14:23:00.000Z"
}
]
}| Champ | Type | Description |
|---|---|---|
user_id |
Chaîne de caractères | L'ID utilisateur unique du membre. |
role |
Chaîne de caractères | admin ou member. |
email, first_name, last_name |
Chaîne ou null |
L'adresse e-mail du membre est la valeur utilisée par les opérations d'ajout, de changement de rôle et de suppression pour les identifier. Si l'enregistrement du compte Axe du membre n'existe plus, ceux-ci sont null. La réponse liste toujours le membre au lieu de supprimer la ligne, de sorte qu'une ligne de membres administrateurs existante montre toujours un administrateur sur le projet. |
active_license |
Booléen | Si le membre détient actuellement une licence active pour ce type de produit du projet. |
created_at |
Chaîne de caractères | Horodatage ISO 8601 UTC pour l'heure de création de l'adhésion. |
Ajouter des membres au projet
- Point de terminaison :
POST https://axe.deque.com/api-pub/v1/results/projects/{project_id}/memberships - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>,Content-Type: application/json,Accept: application/json
Corps de la requête
{
"user_email_role_pairs": [
{ "user_email": "sam@example.com", "role": "member" },
{ "user_email": "alex@example.com", "role": "admin" }
]
}user_email est l'adresse e-mail du compte Axe de l'utilisateur. La correspondance ignore la casse et les espaces environnants. role accepte admin ou member (contributor est également acceptée comme synonyme de member). Chaque utilisateur ne peut apparaître qu'une seule fois dans une demande. Ajouter un utilisateur déjà dans le projet n'entraîne aucune action pour cet enregistrement : cela ne change pas son rôle existant. C'est une opération par lots. Une entrée invalide rejette la demande entière, et l'API n'écrit rien. Le message d'erreur liste chaque entrée qui a échoué, de sorte que vous pouvez corriger un lot en une seule passe.
Une demande réussie renvoie 201 Created avec { "created": true }, que la demande ait effectivement ajouté de nouvelles adhésions ou non.
Modifier les rôles des membres
- Point de terminaison :
PATCH https://axe.deque.com/api-pub/v1/results/projects/{project_id}/memberships - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>,Content-Type: application/json,Accept: application/json - Corps de la demande : même forme
user_email_role_pairsque Ajouter des membres au projet
Chaque user_email doit appartenir à un membre actuel du projet. Un projet doit toujours conserver au moins un admin. L'API rejette une demande qui laisse le projet sans administrateur. Un dernier membre restant qui est le seul administrateur du projet ne peut pas modifier son propre rôle. C'est une opération par lots. Une entrée invalide rejette la demande entière, et l'API n'écrit rien.
Une demande réussie renvoie 200 OK avec { "ok": true }.
Supprimer des membres du projet
- Point de terminaison :
DELETE https://axe.deque.com/api-pub/v1/results/projects/{project_id}/memberships?user_emails={comma-separated,url-encoded,emails} - En-têtes (obligatoires) :
X-API-Key: <DEQUE_API_KEY>,Accept: application/json
Passez les adresses e-mail des utilisateurs à supprimer sous forme de liste séparée par des virgules dans un seul paramètre de requête user_emails, et encodez l'URL de la valeur. Par exemple, un + littéral dans une adresse qui n'est pas encodée arrive comme un espace et est rejeté comme malformé. Il n'y a pas de corps de demande. Supprimer un utilisateur qui n'est pas membre réussit et ne supprime rien, de sorte qu'une demande réessayée ne constitue pas une erreur. Un projet doit toujours conserver au moins un admin. L'API rejette une demande qui supprime le dernier administrateur du projet. Un dernier membre restant qui est le seul administrateur du projet ne peut pas se supprimer.
Une demande réussie renvoie 200 OK avec les adresses qu'elle a supprimées et celles qui ne correspondaient à aucun membre, afin que vous puissiez faire la différence entre une faute de frappe et une suppression terminée :
{
"deleted": true,
"removed": ["sam@example.com"],
"unmatched": ["alx@example.com"]
}Réponses d'erreur d'adhésion au projet
| Statut | Cause |
|---|---|
400 Bad Request |
project_id n'est pas un UUID valide, user_email_role_pairs est manquant ou malformé, un user_email n'est pas une adresse e-mail valide, ou le même utilisateur apparaît plus d'une fois. Cela couvre également un role qui n'est pas admin ou member, ou une valeur user_emails qui est manquante, répétée en tant que paramètres séparés, ou malformée lors de la demande de suppression. Pour la demande d'ajout, cela couvre une adresse e-mail qui n'appartient pas à votre organisation. Pour la demande de changement de rôle, cela couvre une adresse e-mail qui n'appartient pas à un membre du projet. Pour toute demande d'écriture, cela couvre une adresse e-mail qui correspond à plus d'un utilisateur ; l'API la rejette au lieu de risquer un changement pour la mauvaise personne. |
401 Unauthorized |
La clé API est invalide, manquante, ou l'abonnement associé est inactif. |
403 Forbidden |
Vous n'êtes pas un administrateur de projet ou d'organisation. Cela couvre également un changement qui laisse le projet sans administrateur, ou un seul membre restant essayant de changer ou supprimer sa propre adhésion. |
404 Not Found |
Aucun projet n'existe avec cet ID ou le projet a été supprimé. |
