> ## Documentation Index
> Fetch the complete documentation index at: https://developers.0flaw.fr/llms.txt
> Use this file to discover all available pages before exploring further.

# Authentification

> Clés API, permissions et cloisonnement par entreprise.

## Transmettre la clé

Toutes les requêtes exigent une clé API, dans l'en-tête `Authorization` :

```http theme={null}
Authorization: Bearer 0flaw_live_xxxxxxxx
```

L'en-tête `x-api-key: 0flaw_live_xxxxxxxx` est accepté en alternative, pour les clients qui
réservent `Authorization` à autre chose.

## Cloisonnement

<Info>
  Une clé est rattachée à **une seule entreprise**. Elle ne peut, par construction, ni lire ni
  modifier les données d'une autre. Vous ne passerez jamais d'identifiant d'entreprise en
  paramètre : il est déduit de la clé.
</Info>

## Permissions

Chaque clé porte des permissions explicites, choisies à sa création. Un appel sans la permission
requise renvoie `403` avec le code `INSUFFICIENT_SCOPE` et le scope manquant dans la réponse :

```json theme={null}
{ "message": "Scope requis : write:employees", "code": "INSUFFICIENT_SCOPE", "required_scope": "write:employees" }
```

| Permission        | Ce qu'elle autorise                                                              |
| ----------------- | -------------------------------------------------------------------------------- |
| `write:employees` | Créer, mettre à jour, désactiver des employés et leur envoyer leurs identifiants |

<Note>
  D'autres permissions (lecture des résultats, des campagnes et des analytics) seront publiées en
  même temps que les endpoints de lecture correspondants. Nous ne documentons que les permissions
  réellement appliquées : vous faire créer une clé qui n'autoriserait rien serait trompeur.
</Note>

## Bonnes pratiques

<AccordionGroup>
  <Accordion title="Une clé par intégration">
    Créez une clé distincte par système connecté (SIRH, SIEM, script interne). En cas de fuite ou
    de départ d'un prestataire, vous révoquez la clé concernée sans interrompre les autres.
  </Accordion>

  <Accordion title="Ne la stockez jamais dans le code">
    Passez par une variable d'environnement ou un gestionnaire de secrets. Une clé commitée dans un
    dépôt git reste dans l'historique même après suppression du fichier.
  </Accordion>

  <Accordion title="Révoquez au moindre doute">
    La révocation est immédiate et sans effet de bord : les appels suivants reçoivent
    `401 API_KEY_INVALID`. Créer une nouvelle clé prend dix secondes.
  </Accordion>
</AccordionGroup>

## Limites de débit

600 requêtes par tranche de 15 minutes et par clé. Chaque réponse porte `RateLimit-Limit`,
`RateLimit-Remaining` et `RateLimit-Reset` : appuyez-vous sur ces en-têtes plutôt que d'attendre
le `429`.
