Requête exemple
Réponse exemple
POST/v1/transfers/{id}/approveApprouve ou rejette un transfert dont l'approbation est requise.Cette route permet de statuer sur un transfert qui a été soumis à un circuit d'approbation, c'est-à-dire dont le champ approval_required vaut true. Selon la valeur de decision, le transfert passe au statut approved ou rejected. À l'approbation, le champ approved_at est horodaté à l'instant courant ; au rejet, il est remis à null. Dans les deux cas, approved_by enregistre l'identifiant de l'utilisateur appelant et approval_note reçoit la note éventuelle. La ligne d'approbateur correspondante (le cas échéant) est également mise à jour avec la décision, son horodatage et la note. Enfin, le propriétaire du transfert est notifié par e-mail (envoi best-effort, non bloquant, dont l'échec n'interrompt pas la requête).
Authentification
Requête authentifiée par clé API. Le scope transfers:manage est requis : sans lui, la requête est rejetée par le code d'erreur scope_missing (HTTP 403). Le transfert est strictement borné au workspace de l'appelant (workspace_id), de sorte qu'un transfert appartenant à un autre espace de travail renvoie une erreur not_found.
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| decision | string | Oui | Décision à appliquer. Valeurs acceptées : approved ou rejected. Toute autre valeur déclenche une erreur validation_error (400). |
| note | string | Non | Note libre justifiant la décision. Enregistrée dans approval_note sur le transfert et dans note sur la ligne d'approbateur. Transmise dans l'e-mail de notification (comme note d'approbation ou motif de rejet). |
Réponse
En cas de succès, l'API renvoie la ligne complète du transfert mise à jour (HTTP 200). Les champs clés sont : approval_status (approved ou rejected), approved_at (horodatage ISO 8601 à l'approbation, null au rejet), approved_by (identifiant de l'utilisateur ayant statué) et approval_note (la note transmise ou null). L'objet contient aussi les champs d'identité du transfert tels que id, workspace_id, user_id, transfer_title et short_code.
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| 400 validation_error | decision est absent ou différent de approved / rejected. | Envoyer un corps JSON avec decision valant exactement approved ou rejected. |
| 401 missing_api_key | En-tête Authorization absent. | Fournir Authorization: Bearer cof_live_... (ou clé de test/MCP). |
| 401 invalid_api_key | Clé API absente du format attendu ou non reconnue. | Vérifier le préfixe et la validité de la clé API utilisée. |
| 403 scope_missing | La clé ne porte pas le scope transfers:manage. | Émettre une clé incluant le scope transfers:manage. |
| 404 not_found | Aucun transfert avec cet identifiant dans le workspace de l'appelant. | Vérifier l'id du transfert et que la clé appartient au bon workspace. |
| 422 validation_error | Le transfert ne requiert pas d'approbation (approval_required = false). | N'appeler cette route que sur des transferts marqués comme nécessitant une approbation. |
| 429 rate_limited | Quota de requêtes du workspace dépassé. | Respecter l'en-tête Retry-After et lisser les appels. |
| 500 internal_error | Erreur lors de la lecture ou de la mise à jour en base. | Réessayer ; si le problème persiste, contacter le support avec le request_id. |
Voir aussi
- GET /v1/transfers/{id} : consulter l'état d'un transfert et son statut d'approbation.
- GET /v1/transfers : lister les transferts du workspace, y compris ceux en attente d'approbation.
- POST /v1/transfers : créer un transfert (et activer un circuit d'approbation).