Requête exemple
Réponse exemple
Cette route est un alias strict de la méthode PATCH (export const POST = PATCH). Elle existe pour les clients HTTP qui ne savent pas émettre de requête PATCH. Le comportement est identique en tout point : elle tranche une demande d'approbation en attente, applique le principe des quatre yeux et l'owner-exempt, écrit la double piste d'audit, notifie le demandeur et propage la décision aux transferts concernés. Une approbation produit également un token de réversibilité valable 5 minutes.
Authentification
Cette route exige une clé API valide disposant du scope workspace:manage, portant un contexte utilisateur (le décideur enregistré dans decided_by).
Corps de la requête
| Champ | Type | Requis | Description |
|---|---|---|---|
| decision | string | Oui | Décision à appliquer. Valeurs acceptées : approve ou reject. Toute autre valeur renvoie 400 validation_error. |
| decision_reason | string | null | Conditionnel | Motif de la décision. Obligatoire (non vide) lorsque decision = reject, sinon facultatif. Enregistré dans decision_note, l'audit et la notification du demandeur. |
| note | string | null | Non | Alias legacy de decision_reason. Utilisé en repli si decision_reason est absent. |
L'identifiant de la demande est porté par le chemin (/v1/approvals/{id}/decide). Un id manquant renvoie 400 validation_error.
Réponse
La réponse est l'objet ApprovalRecord mis à jour, renvoyé directement sans enveloppe. Les champs notables sont status (approved ou rejected), decided_by, decided_at, decision_note, ainsi que type, resource_id et sensitivity. Pour une demande de transfert, coffrify_transfers.approval_status est mis à jour côté serveur en cohérence.
Erreurs
| Code | Quand | Résolution |
|---|---|---|
| 400 validation_error | id absent du chemin, decision invalide, motif manquant sur un reject, ou clé API sans contexte utilisateur. | Corrigez l'URL/le corps et utilisez une clé liée à un utilisateur. |
| 403 forbidden | Auto-approbation (quatre yeux) ou demande issue du propriétaire du workspace (owner-exempt). | Faites trancher par un autre membre habilité. |
| 404 not_found | Aucune demande avec cet id dans le workspace de la clé. | Vérifiez l'identifiant et le périmètre du workspace. |
| 409 conflict | Demande déjà décidée (approved, rejected, expired ou revoked). | Aucune action : la décision est définitive. |
| 429 rate_limited | Quota d'écriture du workspace dépassé. | Respectez Retry-After et lissez les appels. |
| 500 internal_error | Échec inattendu de la mise à jour en base. | Réessayez ; persistant, contactez le support avec le request_id. |
Voir aussi
PATCH/v1/approvals/{id}/decideMéthode canonique de cette route ; POST en est l'alias strict.GET/v1/approvalsLister les demandes d'approbation et filtrer celles en attente.POST/v1/approvals/{id}/approveRoute legacy d'approbation, proxiant la logique unifiée.