Les collections Coffrify sont des vitrines partageables regroupant plusieurs transferts sous une URL unique. Les templates sont des presets de sécurité réutilisables (expiration, filigrane, chiffrement, etc.) qui standardisent chaque transfert produit. Ce guide vous montre comment enchaîner les deux : créer un template de référence, l'appliquer pour générer des transferts, puis les ajouter à une collection dédiée. Ce flux est idéal pour les data rooms M&A, les dossiers d'audit ou tout livrable récurrent.
Endpoints concernés
POST/v1/templatesCrée un template de transfert (preset de sécurité réutilisable).POST/v1/templates/{id}/applyInstancie un transfert à partir d'un template existant et retourne les URLs de mise en ligne.POST/v1/collectionsCrée une collection (vitrine partageable pouvant regrouper plusieurs transferts)./v1/collections/{id}/itemsAjoute un transfert à une collection existante./v1/collections/{id}Récupère une collection avec ses items et ses sections.Authentification
Toutes les requêtes exigent un en-tête Authorization: Bearer <clé> avec une clé API au format cof_live_… (production) ou cof_test_… (test). Les opérations de ce guide nécessitent les scopes templates:manage, templates:read, transfers:write, collections:manage et collections:read. Vérifiez que votre clé dispose bien de l'ensemble de ces scopes avant de commencer.
Étape 1 : créer le template de transfert
Un template centralise tous les paramètres de sécurité d'un type de transfert. Scope requis : templates:manage.
Corps de la requête – POST /v1/templates
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom du template (affiché dans l'interface). |
| description | string | Non | Description libre du template. |
| is_default | boolean | Non | Si true, ce template est sélectionné par défaut. Défaut : false. |
| expires_in_hours | integer | Non | Durée de vie du transfert en heures. Minimum 1. Défaut : 48. |
| max_downloads | integer|null | Non | Nombre maximal de téléchargements. null = illimité. |
| password | string|null | Non | Mot de passe d'accès au transfert. |
| custom_slug_pattern | string|null | Non | Patron pour le slug court du transfert. |
| require_totp | boolean | Non | Exige un code TOTP à l'accès. Défaut : false. |
| watermark_enabled | boolean | Non | Active le filigrane sur les fichiers. Défaut : false. |
| watermark_text | string|null | Non | Texte du filigrane (si watermark_enabled est true). |
| burn_after_read | boolean | Non | Supprime le transfert après la première lecture. Défaut : false. |
| geo_allowlist | string[]|null | Non | Codes pays ISO-3166-1 alpha-2 autorisés (ex. ["FR","DE"]). null = aucune restriction. |
| encryption_mode | string | Non | Mode de chiffrement : server_side (défaut) ou autre valeur supportée. |
| password_enabled | boolean | Non | Active la protection par mot de passe. Défaut : false. |
| totp_enabled | boolean | Non | Active la vérification TOTP. Défaut : false. |
| require_signature | boolean | Non | Exige une signature électronique à l'accès. Défaut : false. |
| require_email_verification | boolean | Non | Exige une vérification par email. Défaut : false. |
| require_passkey | boolean | Non | Exige une passkey. Défaut : false. |
| approval_required | boolean | Non | Soumet le transfert à un flux d'approbation. Défaut : false. |
| allow_reply | boolean | Non | Autorise le destinataire à répondre. Défaut : false. |
| custom_message | string|null | Non | Message personnalisé envoyé avec le transfert. |
| notification_email | string|null | Non | Email de notification pour les événements du transfert. |
Réponse – template créé (201)
Étape 2 : instancier un transfert depuis le template
L'appel POST /v1/templates/{id}/apply crée un transfert héritant de tous les paramètres du template. Vous pouvez surcharger certaines valeurs via overrides. Scope requis : transfers:write.
Corps de la requête – POST /v1/templates/{id}/apply
| Champ | Type | Requis | Description |
|---|---|---|---|
| files | object[] | Oui | Tableau de fichiers à uploader. Chaque objet doit contenir name (string), size (number) et optionnellement mime_type (string). |
| recipient | string|null | Non | Email ou identifiant du destinataire principal. |
| overrides | object | Non | Surcharges ponctuelles des paramètres du template : expires_in_hours, watermark_enabled, watermark_text, burn_after_read, geo_allowlist. |
Réponse – transfert instancié (201)
Étape 3 : créer la collection
La collection regroupe vos transferts sous une URL partageable avec branding personnalisable. Scope requis : collections:manage.
Corps de la requête – POST /v1/collections
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom affiché de la collection. |
| slug | string | Non | Slug URL (max 64 car., normalisé automatiquement). Si absent, dérivé du name. |
| description | string|null | Non | Description courte de la collection. |
| subtitle | string|null | Non | Sous-titre affiché sous le nom. |
| description_markdown | string|null | Non | Description longue en Markdown. |
| logo_url | string|null | Non | URL du logo affiché en en-tête de la collection. |
| cover_color | string|null | Non | Couleur de couverture (hex, ex. #1a2b3c). |
| cover_image_url | string|null | Non | URL de l'image de couverture. |
| is_active | boolean | Non | Rend la collection accessible publiquement. Défaut : true. |
| show_powered_by | boolean | Non | Affiche le badge Coffrify. Défaut : true. |
| allow_download | boolean | Non | Autorise le téléchargement des fichiers. Défaut : true. |
| watermark_enabled | boolean | Non | Active le filigrane au niveau de la collection. Défaut : false. |
| expires_at | string|null | Non | Date d'expiration ISO-8601 de la collection. null = pas d'expiration. |
Réponse – collection créée (201)
Étape 4 : ajouter les transferts à la collection
Chaque transfert instancié à l'étape 2 peut être ajouté à la collection via POST /v1/collections/{id}/items. Le transfert doit appartenir au même workspace. Scope requis : collections:manage.
Réponse – item ajouté (201)
Vérifier la collection complète
Appelez GET /v1/collections/{id} pour récupérer la collection avec l'ensemble de ses items et sections. Scope requis : collections:read.
Erreurs
| Code HTTP | Code erreur | Quand | Résolution |
|---|---|---|---|
| 400 | validation_error | name absent ou vide sur POST /v1/templates ou POST /v1/collections. | Fournissez un champ name non vide. |
| 400 | validation_error | Slug non dérivable (moins de 2 caractères après normalisation). | Utilisez un name ou slug contenant au moins 2 caractères alphanumériques. |
| 400 | validation_error | files[] absent ou vide sur POST /v1/templates/{id}/apply. | Fournissez au moins un objet dans le tableau files. |
| 400 | validation_error | transfer_id absent sur POST /v1/collections/{id}/items. | Fournissez le champ transfer_id. |
| 400 | validation_error | Aucun champ patchable fourni sur PATCH. | Fournissez au moins un champ modifiable dans le corps de la requête. |
| 404 | not_found | Template, collection ou transfert introuvable dans le workspace. | Vérifiez que l'ID appartient bien au workspace associé à la clé API. |
| 409 | validation_error | Slug de collection déjà utilisé dans le workspace. | Choisissez un slug différent ou laissez le champ vide pour un slug auto-généré. |
| 409 | validation_error | Le transfert est déjà présent dans cette collection. | Ce transfert a déjà été ajouté. Récupérez les items existants via GET /v1/collections/{id}/items. |
| 500 | internal_error | Erreur base de données ou Edge Function inaccessible. | Réessayez après quelques secondes. Si l'erreur persiste, contactez le support Coffrify. |
Voir aussi
- Référence : GET /v1/collections
- Référence : PATCH /v1/collections/{id}
- Référence : DELETE /v1/collections/{id}
- Référence : POST /v1/collections/{id}/items
- Référence : GET /v1/templates
- Quickstart : Créer votre premier transfert
- Quickstart : Sécuriser un transfert avec filigrane et expiration
- Quickstart : Gérer les sections d'une collection