Une collection regroupe plusieurs transferts sous une même page partageable, par exemple une data room, un espace client ou une remise de livrables. Au lieu d'envoyer un lien par fichier, vous publiez une seule adresse stable qui rassemble tout. Cette page couvre les quatre opérations sur la ressource collection elle-même : la créer, la lister, la mettre à jour et la supprimer. Toutes les requêtes utilisent la base https://api.coffrify.com/v1 et l'en-tête Authorization: Bearer <clé>.
Le modèle collection
Une collection porte un nom, un slug qui sert d'identifiant lisible dans l'URL publique, et plusieurs réglages d'affichage et de contrôle. Les champs que vous pouvez fournir et qui sont renvoyés sont les suivants.
| Champ | Type | Description |
|---|---|---|
| name | string | Nom de la collection. Obligatoire à la création. |
| slug | string | Identifiant lisible dans l'URL. Dérivé automatiquement du nom s'il est omis. Doit être unique dans l'espace. |
| description | string | Description courte affichée sur la page. |
| subtitle | string | Sous-titre optionnel. |
| description_markdown | string | Description longue au format Markdown. |
| logo_url | string | URL du logo affiché en tête de page. |
| cover_color | string | Couleur de couverture. |
| cover_image_url | string | URL de l'image de couverture. |
| is_active | boolean | Collection accessible publiquement. Vaut true par défaut. |
| show_powered_by | boolean | Affiche la mention Coffrify. Vaut true par défaut. |
| allow_download | boolean | Autorise le téléchargement des fichiers. Vaut true par défaut. |
| watermark_enabled | boolean | Active le filigrane. Vaut false par défaut. |
| expires_at | string | Date d'expiration au format ISO 8601, ou null pour aucune. |
Créer une collection
POST/v1/collectionsCrée une collection. Portée requise : collections:manage.Seul name est obligatoire. Comme il s'agit d'une écriture, joignez un en-tête Idempotency-Key (8 à 255 caractères) pour pouvoir rejouer la requête sans créer de doublon. La réponse renvoie l'objet collection complet avec un statut 201.
Lister les collections
GET/v1/collectionsListe les collections de l'espace, les plus recentes d'abord. Portée requise : collections:read.La réponse est un objet liste : un champ object valant "list" et un tableau data contenant les collections, triées par date de création décroissante. Les collections créées avec une clé cof_sandbox_ sont isolées et n'apparaissent que dans l'environnement bac à sable.
Récupérer une collection
GET/v1/collections/{id}Recupere une collection avec ses items et ses sections. Portée requise : collections:read.Récupérer une collection par son identifiant renvoie l'objet complet, enrichi de deux tableaux : items, la liste des transferts rattachés (avec transfer_id, position, label, is_visible), et sections, les regroupements de la page (avec name, position, is_visible). Pour gérer ces sous-ressources, utilisez les chemins /v1/collections/{id}/items et /v1/collections/{id}/sections.
Mettre à jour une collection
PATCH/v1/collections/{id}Met a jour les champs fournis. Portée requise : collections:manage.La mise à jour est partielle : ne transmettez que les champs à modifier, par exemple basculer is_active à false pour dépublier une collection ou ajuster expires_at. Vous pouvez remettre un champ texte à null pour l'effacer. Une requête PATCH sans aucun champ valide renvoie validation_error. Le slug n'est pas modifiable via PATCH.
Supprimer une collection
DELETE/v1/collections/{id}Supprime la collection et ses items. Portée requise : collections:manage.La suppression retire la collection ainsi que ses items et ses sections rattachés. Les transferts sous-jacents ne sont pas supprimés : seuls leurs rattachements à la collection le sont. La réponse confirme l'opération.
Codes d'erreur
Les erreurs suivent le format commun {"error":{"code","message","request_id"}}. Le request_id figure aussi dans l'en-tête X-Request-Id de chaque réponse, à citer en cas de demande de support.
| Statut | code | Cas |
|---|---|---|
| 400 | validation_error | name manquant à la création, slug dérivé trop court, ou PATCH sans champ valide. |
| 401 | invalid_api_key | Clé absente, invalide, expirée ou révoquée. |
| 403 | scope_missing | La clé n'a pas la portée requise (collections:read ou collections:manage). |
| 404 | not_found | Aucune collection avec cet identifiant dans l'espace. |
| 409 | validation_error | Slug déjà utilisé dans l'espace. |
| 409 | idempotency_conflict | Idempotency-Key déjà vue avec un corps de requête différent. |
| 429 | rate_limited | Limite de débit atteinte. Réessayez après le délai indiqué par Retry-After. |