L'Inbox de Coffrify permet à vos interlocuteurs de déposer des fichiers sans compte. Chaque appel à POST /v1/inbox/submit crée une soumission (status: "received") et peut déclencher un webhook vers votre serveur. Cette page explique comment enregistrer un endpoint, souscrire aux événements request.submitted et request.completed, et valider la signature webhook-signature côté récepteur pour traiter ces notifications en toute confiance.
Endpoints concernés
Trois endpoints interviennent : créer un webhook (POST /v1/webhooks), consulter le catalogue d'événements et déclencher une soumission Inbox qui notifiera vos abonnés.
/v1/webhooksCrée un nouvel endpoint webhook et retourne le secret de signature (`whsec_…`).GET/v1/webhooks/event-catalogRetourne le catalogue complet des 74 types d'événements disponibles, groupés par famille./v1/inbox/submitCrée une soumission dans l'Inbox via token `cit_live_…`. Déclenche les webhooks abonnés aux événements de la famille `request`.Authentification
La création et la gestion de webhooks nécessitent un scope `webhooks:manage` sur votre clé API (cof_live_… ou cof_test_…). La lecture seule (liste, historique de livraisons) utilise le scope webhooks:read. Le dépôt dans l'Inbox (/v1/inbox/submit) s'authentifie quant à lui avec un token Inbox au format cit_live_…, émis depuis le tableau de bord Coffrify et distinct de votre clé API.
Créer le webhook : corps de la requête
La création d'un webhook déclare l'URL de destination et les événements auxquels s'abonner. Le tableau ci-dessous détaille les champs acceptés.
| Champ | Type | Requis | Description |
|---|---|---|---|
name | string | Oui | Libellé interne du webhook (ex. "Inbox notifications prod") |
url | string | Oui | URL HTTPS de votre endpoint récepteur. Doit passer la validation new URL(...). |
events | string[] | Non | Liste de types d'événements du catalogue. Par défaut ["transfer.downloaded"]. Pour l'Inbox, utilisez ["request.submitted", "request.completed"]. |
description | string | Non | Description libre, non fonctionnelle. |
is_active | boolean | Non | Activé ou non. true par défaut à la création. |
Exemples d'appel
L'exemple ci-dessous crée un webhook abonné aux événements de dépôt Inbox. Choisissez votre langage.
Réponse à la création
La réponse renvoie l'objet webhook et, surtout, son secret de signature (whsec_…). Ce secret n'apparaît qu'à la création : conservez-le pour vérifier les livraisons.
Structure d'un événement livré
Coffrify signe chaque livraison selon le standard Standard Webhooks. Les en-têtes webhook-id, webhook-timestamp et webhook-signature sont toujours présents. L'en-tête X-Coffrify-Signature (format t=<ts>,v1=<hex>) est également envoyé pour compatibilité avec les intégrations antérieures.
Erreurs
Les erreurs portent sur une URL invalide, un événement inconnu ou le scope webhooks:manage manquant. Le tableau ci-dessous indique la résolution.
| Code HTTP | Code d'erreur | Quand | Résolution |
|---|---|---|---|
| 401 | invalid_token | Clé API absente, malformée ou révoquée. | Vérifiez que votre clé cof_live_… ou cof_test_… est valide et non révoquée. |
| 403 | scope_missing | Scope webhooks:manage absent de la clé API utilisée. | Recréez la clé API en cochant le scope webhooks:manage. |
| 400 | validation_error | name ou url manquant, URL invalide, ou type d'événement absent du catalogue. | Consultez GET /v1/webhooks/event-catalog pour la liste des types valides. |
| 409 | validation_error | Limite de 25 webhooks par workspace atteinte. | Supprimez un webhook inactif via DELETE /v1/webhooks/{id}. |
| 401 | invalid_token | Token Inbox (cit_live_…) absent ou révoqué lors d'un dépôt via /v1/inbox/submit. | Vérifiez le token Inbox dans le tableau de bord, section Inbox > Tokens. |
| 403 | scope_missing | Token Inbox read_only utilisé pour un dépôt. | Recréez le token Inbox avec le scope read_write. |
| 410 | box_disabled | La drop-box cible est désactivée. | Réactivez la drop-box dans le tableau de bord Coffrify. |
| 402 | uploads_blocked | Le workspace est bloqué pour cause de dépassement de quota. | Passez à un plan supérieur ou libérez du stockage. |
| 500 | internal_error | Erreur interne de base de données. | Réessayez dans quelques secondes. Si le problème persiste, consultez le status de l'API. |
Voir aussi
- Référence : POST /v1/webhooks
- Référence : GET /v1/webhooks/event-catalog
- Référence : POST /v1/inbox/submit
- Référence : POST /v1/webhooks/{id}/test
- Guide : Créer votre premier transfert et envoyer un webhook
- Guide : Gérer les demandes de fichiers (Requests)
- Guide : Configurer les préférences de notifications