L'API Coffrify utilise des clés porteur (Bearer tokens) pour authentifier chaque requête. Deux formats coexistent : les clés full (préfixe cof_live_ ou cof_test_) qui héritent de tous les scopes disponibles, et les clés restricted (préfixe cof_rk_live_ ou cof_rk_test_) dont les permissions sont limitées aux scopes que vous déclarez explicitement. La clé brute n'est retournée qu'une seule fois à la création : conservez-la immédiatement dans votre gestionnaire de secrets.
/v1/api-keysLister toutes les clés API du workspace (valeurs brutes non incluses). Scope requis : `api_keys:manage`.POST/v1/api-keysCréer une nouvelle clé API. La valeur brute est retournée une unique fois dans le champ `key`. Scope requis : `api_keys:manage`.GET/v1/api-keys/scopesConsulter le catalogue complet des 43 scopes disponibles. Endpoint public, aucune authentification requise.Authentification
Les endpoints GET /v1/api-keys et POST /v1/api-keys requièrent le scope api_keys:manage sur la clé appelante. Ce scope est classé risque élevé dans le catalogue Coffrify : il ne peut pas figurer dans les scopes d'une clé restricted. Si vous appelez ces routes avec une clé cof_rk_live_* dépourvue de ce scope, vous recevrez une erreur 403 forbidden_scope. Utilisez donc une clé cof_live_* (full) ou une cof_rk_live_* dont le scope api_keys:manage a été accordé explicitement au moment de sa création.
Corps de la requête (POST)
La création demande un nom, le type de clé (full ou restricted) et, pour une clé restreinte, la liste des scopes. Le tableau ci-dessous détaille les champs acceptés.
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom lisible de la clé (ex. : "CI Pipeline prod"). |
| key_type | string | Non | full (défaut) ou restricted. Les clés restricted ne peuvent pas obtenir api_keys:manage, workspace:manage, workspace:billing, members:manage. |
| environment | string | Non | live (défaut) ou test. Détermine le préfixe de la clé générée. |
| scopes | string[] | Non | Scopes accordés. Défaut : ["transfers:read", "transfers:write"]. Ignoré pour les clés full. |
| description | string | Non | Description libre (usage interne). |
| expires_in_days | number | Non | Durée de vie en jours. Omis = clé sans expiration. |
| allowed_ips | string[] | Non | Liste CIDR/IP autorisés. Omis = pas de restriction IP. |
| max_uses | number | Non | Nombre maximum d'utilisations. Omis = illimité. |
| mfa_code | string | Conditionnel | Code TOTP à 6 chiffres (ou code de récupération) si la MFA est activée et que la clé cible un scope à risque élevé ou est de type full. |
| confirm_sensitive | boolean | Conditionnel | true requis à la place de mfa_code si la MFA n'est pas configurée et que la clé cible un scope à risque élevé. |
Exemples d'appels
L'exemple ci-dessous crée une clé restreinte avec un jeu de scopes minimal. Choisissez votre langage.
Scopes disponibles (principaux)
Le tableau ci-dessous liste les principaux scopes et leur niveau de risque. Accordez uniquement ceux dont votre intégration a besoin (principe du moindre privilège).
| Scope | Risque | Description |
|---|---|---|
| transfers:read | Faible | Lire la liste des transferts et leurs métadonnées. |
| transfers:write | Moyen | Créer et modifier des transferts. |
| transfers:download | Moyen | Télécharger les fichiers d'un transfert. |
| folders:read | Faible | Lister les dossiers. |
| folders:write | Moyen | Créer et renommer des dossiers. |
| folders:manage | Moyen | Supprimer et déplacer des dossiers. |
| members:read | Faible | Lister les membres du workspace. |
| members:invite | Moyen | Inviter de nouveaux membres. |
| members:manage | Elevé (MFA) | Gérer les rôles et retirer des membres. Interdit aux clés restricted. |
| webhooks:read | Faible | Consulter les webhooks configurés. |
| webhooks:manage | Moyen | Créer, modifier et supprimer des webhooks. |
| audit:read | Faible | Lire le journal d'audit. |
| audit:export | Elevé (MFA) | Exporter le journal d'audit complet. |
| analytics:read | Faible | Statistiques d'usage et quotas. |
| api_keys:manage | Elevé (MFA) | Gérer les clés API. Interdit aux clés restricted. |
| workspace:manage | Elevé (MFA) | Modifier les paramètres du workspace. Interdit aux clés restricted. |
| workspace:billing | Elevé (MFA) | Accéder à la facturation. Interdit aux clés restricted. |
| HTTP | Code erreur | Quand | Résolution |
|---|---|---|---|
| 400 | validation_error | name absent du corps. | Ajoutez le champ name (obligatoire). |
| 400 | validation_error | Clé restricted avec api_keys:manage, workspace:manage, workspace:billing ou members:manage. | Retirez le scope interdit ou utilisez une clé full. |
| 401 | missing_api_key | Aucune clé porteur, ou appel sans contexte utilisateur. | Ajoutez Authorization: Bearer cof_live_*. |
| 401 | mfa_required | Scope à risque élevé, MFA activée, mfa_code absent ou invalide. | Incluez mfa_code avec le code TOTP à 6 chiffres ou un code de récupération. |
| 401 | confirm_required | Scope à risque élevé, MFA non activée, confirm_sensitive absent. | Passez "confirm_sensitive": true. |
| 403 | forbidden_scope | La clé appelante ne possède pas api_keys:manage. | Utilisez une clé full (cof_live_*) pour cette opération. |
| 500 | internal_error | Erreur base de données inattendue. | Réessayez. Si le problème persiste, contactez le support Coffrify. |
- Faire votre premier appel API
- Révoquer ou faire pivoter une clé API
- Configurer un Webhook
- Référence : POST /v1/api-keys
- Référence : GET /v1/api-keys/scopes