> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Vue d’ensemble de l’API

> API à clé de service pour l’analyse des ACU, la gestion des groupes et les limites d’ACU dans les déploiements fédéraux.

<Info>
  Cette documentation concerne les déploiements fédéraux de Devin. [Retour à la documentation Devin](/fr/get-started/devin-intro)
</Info>

Les administrateurs Enterprise fédéraux peuvent interroger par programmation la consommation d’ACU et gérer les [groupes](/fr/federal/groups), la [disponibilité des modèles](/fr/federal/model-provisioning) et les [limites d’ACU](/fr/federal/acu-limits) à l’aide d’une API à clé de service. Un [SDK Python](/fr/federal/api/python-sdk) encapsule chaque endpoint décrit dans cette section.

Les endpoints de gestion des groupes et de plafond d’ACU sont disponibles uniquement dans les déploiements fédéraux multi-tenants auto-hébergés. Ils ne sont pas exposés dans les déploiements commerciaux. Les endpoints d’analyse (`/Analytics`, `/UserPageAnalytics` et `/CascadeAnalytics`) vérifient également le niveau d’accès aux analyses du déploiement ; une Team sans accès aux analyses reçoit `permission_denied`.

***

<div id="base-url">
  ## URL de base
</div>

Toutes les requêtes sont des requêtes `POST` JSON envoyées au serveur d’API de votre déploiement :

```
https://<your-server>/api/v1/<Method>
```

Remplacez `<your-server>` par le domaine de l’API de votre déploiement fédéral.

<div id="authentication">
  ## Authentification
</div>

Chaque requête est authentifiée à l’aide d’une **clé de service** incluse dans le corps de la requête :

```json theme={null}
{
  "service_key": "your_service_key_here"
}
```

Pour créer une clé de service, connectez-vous au portail fédéral en tant qu’administrateur de la Team, puis accédez à **Settings → Clés de service**. Créez ensuite une clé avec les autorisations requises par les endpoints que vous prévoyez d’appeler.

<Warning>Conservez les clés de service en lieu sûr. Ne les exposez jamais dans du code côté client et ne les committez jamais dans des dépôts.</Warning>

<div id="required-permissions">
  ### Autorisations requises
</div>

| Endpoint                                                                                                                       | Autorisation requise |
| ------------------------------------------------------------------------------------------------------------------------------ | -------------------- |
| [Ancien rapport d’utilisation](/fr/federal/api/python-sdk#per-user-usage-report) (`/UserPageAnalytics` et `/CascadeAnalytics`) | Teams Read-Only      |
| [Consommation d’ACU](/fr/federal/api/acu-consumption) (`/Analytics`)                                                           | Analytics Read       |
| [Lister les groupes](/fr/federal/api/group-management#list-groups) (`/ListGroups`)                                             | Teams Read-Only      |
| [Obtenir un groupe](/fr/federal/api/group-management#get-group) (`/GetGroup`)                                                  | Teams Read-Only      |
| [Créer un groupe](/fr/federal/api/group-management#create-group) (`/CreateGroup`)                                              | Teams Update         |
| [Mettre à jour un groupe](/fr/federal/api/group-management#update-group) (`/UpdateGroup`)                                      | Teams Update         |
| [Supprimer un groupe](/fr/federal/api/group-management#delete-group) (`/DeleteGroup`)                                          | Teams Update         |
| [Lister les membres d’un groupe](/fr/federal/api/group-management#list-group-members) (`/ListGroupMembers`)                    | Teams Read-Only      |
| [Ajouter des membres à un groupe](/fr/federal/api/group-management#add-group-members) (`/AddGroupMembers`)                     | Teams Update         |
| [Retirer des membres d’un groupe](/fr/federal/api/group-management#remove-group-members) (`/RemoveGroupMembers`)               | Teams Update         |
| [Obtenir le plafond d’ACU d’un utilisateur](/fr/federal/api/acu-caps#get-a-users-acu-cap) (`/GetUserAcuCap`)                   | Teams Read-Only      |
| [Mettre à jour le plafond d’ACU d’un utilisateur](/fr/federal/api/acu-caps#set-or-clear-a-users-acu-cap) (`/UpdateUserAcuCap`) | Teams Update         |

<div id="team-scoped-and-group-scoped-keys">
  ### Clés limitées à une Team ou à un groupe
</div>

Les clés de service sont associées à un périmètre lors de leur création :

* Les **clés limitées à une Team** peuvent interroger les données de l’ensemble de la Team et gérer tous les groupes de la Team.
* Les **clés limitées à un groupe** sont restreintes au groupe qui leur est attribué. Elles peuvent lire le total cumulé d’ACU du groupe et les lignes utilisateur, lister et lire uniquement ce groupe, et lire ou mettre à jour les plafonds d’ACU uniquement pour les membres actuels de ce groupe. Elles ne peuvent pas lire les totaux de l’ensemble de la Team ni les lignes utilisateur, consulter d’autres groupes ou créer des groupes.

<div id="pagination">
  ## Pagination
</div>

Les listes de groupes, de membres de groupes et les lignes d’ACU par utilisateur sont paginées :

* `page_size` — facultatif ; 100 par défaut, 1 000 au maximum. Si vous l’omettez ou transmettez `0`, la valeur par défaut est utilisée.
* `next_page_token` — renvoyé lorsque d’autres résultats sont disponibles. Transmettez-le comme `page_token` dans une requête par ailleurs identique (y compris avec le même `page_size`) pour récupérer la page suivante.

Les jetons de page sont opaques et chiffrés. Ils expirent après 24 heures. Les jetons de consommation d’ACU sont associés à l’endpoint, à la team, au périmètre, à la période, à la sélection de groupes et à la taille de page. Les jetons de liste de groupes et de membres sont associés à l’endpoint, à la team, au périmètre et à la taille de page. Toute modification d’une valeur associée entre deux pages renvoie une erreur `invalid_argument`.

<div id="errors">
  ## Erreurs
</div>

Les erreurs sont renvoyées au format JSON avec un code et un message :

```json theme={null}
{
  "code": "permission_denied",
  "message": "service key role is missing the required permission"
}
```

| Code                  | Signification                                                                                                                                                                                                                                |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `unauthenticated`     | La clé de service est manquante, non valide ou expirée.                                                                                                                                                                                      |
| `permission_denied`   | Le rôle de la clé de service ne dispose pas de l’autorisation requise.                                                                                                                                                                       |
| `invalid_argument`    | La requête est mal formée — par exemple, période non valide, requête d’analyse personnalisée combinant des critères typés et personnalisés, mise à jour vide ou jeton de page obsolète ou non concordant.                                    |
| `not_found`           | La ressource n’existe pas, appartient à une autre Team ou se trouve hors du périmètre de la clé de service. Les ressources d’autres Teams et celles hors périmètre ne peuvent pas être distinguées des ressources inexistantes.              |
| `failed_precondition` | La requête est valide, mais ne peut pas être traitée dans l’état actuel, par exemple lors de la définition d’un plafond d’ACU pour une Team non soumise à la facturation en ACU ou de la sélection d’une adresse e-mail utilisateur ambiguë. |
| `already_exists`      | Le nom de groupe demandé est déjà utilisé par la Team.                                                                                                                                                                                       |
| `internal`            | Le service n’a pas pu traiter la requête.                                                                                                                                                                                                    |
