L'API Coffrify expose deux primitives complémentaires pour organiser vos transferts. Les dossiers (/v1/folders) regroupent visuellement des transferts à l'intérieur d'un workspace : chaque dossier porte un nom et une couleur hexadécimale, et les transferts qu'il contient deviennent non classés (unfiled) si le dossier est supprimé. Les collections (/v1/collections) sont des espaces partageables, dotés d'un slug public, d'une page de couverture personnalisable et d'une arborescence de sections et d'items positionnables. Les deux ressources sont isolées par environnement (live vs sandbox) et par workspace.
Endpoints disponibles
Les deux primitives se répartissent sur deux familles d'endpoints : /v1/folders pour les dossiers et /v1/collections (avec ses sous-ressources sections et items) pour les collections. En voici la liste complète.
/v1/foldersLister les dossiers du workspace courant.POST/v1/foldersCréer un nouveau dossier (nom + couleur optionnelle).PATCH/v1/folders/{id}Renommer ou recolorer un dossier existant.DELETE/v1/folders/{id}Supprimer un dossier. Les transferts associés deviennent non classés.GET/v1/collectionsLister les collections du workspace.POST/v1/collectionsCréer une collection avec slug, couverture et options de téléchargement.GET/v1/collections/{id}Récupérer une collection avec ses sections et items imbriqués.PATCH/v1/collections/{id}Mettre à jour les métadonnées d'une collection.DELETE/v1/collections/{id}Supprimer une collection et en cascade tous ses items.GET/v1/collections/{id}/sectionsLister les sections d'une collection, triées par position.POST/v1/collections/{id}/sectionsAjouter une section à une collection (position auto si absente).PATCH/v1/collections/{id}/sectionsModifier nom, description, position ou visibilité d'une section (id dans le corps).DELETE/v1/collections/{id}/sectionsSupprimer une section : les items orphelins conservent leur place sans section.GET/v1/collections/{id}/itemsLister les items d'une collection, triés par position./v1/collections/{id}/itemsAjouter un transfert à une collection (transfer_id requis)./v1/collections/{id}/items/{itemId}Retirer un item d'une collection.Authentification
Toutes les requêtes doivent inclure votre clé API dans l'en-tête Authorization: Bearer <clé>. Les clés de test commencent par cof_test_…, les clés de production par cof_live_… et les clés sandbox par cof_sandbox_…. Les opérations de lecture nécessitent le scope folders:read (pour les dossiers) ou collections:read (pour les collections). Les opérations d'écriture (création, modification, suppression) nécessitent folders:manage ou collections:manage. La gestion des sections utilise le scope transfers:write.
Corps de la requête, Créer un dossier (POST /v1/folders)
Un dossier se résume à un nom et une couleur optionnelle. Le tableau ci-dessous détaille les champs de POST /v1/folders.
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom du dossier (chaîne non vide après trim). |
| color | string | Non | Couleur hexadécimale du dossier. Valeur par défaut : #007AFF. |
Corps de la requête, Créer une collection (POST /v1/collections)
Une collection demande un nom et accepte un slug, une couverture et des options de téléchargement. Voici les champs disponibles.
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom de la collection. |
| slug | string | Non | Slug public URL-safe (max 64 car.). Dérivé de name si absent. |
| description | string | null | Non | Description courte en texte brut. |
| subtitle | string | null | Non | Sous-titre affiché sur la page de couverture. |
| description_markdown | string | null | Non | Description longue en Markdown. |
| logo_url | string | null | Non | URL du logo de la collection. |
| cover_color | string | null | Non | Couleur de fond de la couverture (hex). |
| cover_image_url | string | null | Non | URL de l'image de couverture. |
| is_active | boolean | Non | Publication de la collection. Défaut : true. |
| show_powered_by | boolean | Non | Afficher le badge Coffrify. Défaut : true. |
| allow_download | boolean | Non | Autoriser le téléchargement des fichiers. Défaut : true. |
| watermark_enabled | boolean | Non | Activer le filigrane sur les documents. Défaut : false. |
| expires_at | string | null | Non | Date d'expiration ISO 8601. |
Corps de la requête, Ajouter un item (POST /v1/collections/{id}/items)
Pour peupler une collection, vous y ajoutez des transferts un par un. Le seul champ requis est transfer_id.
| Champ | Type | Requis | Description |
|---|---|---|---|
| transfer_id | string | Oui | Identifiant du transfert à ajouter (doit appartenir au même workspace). |
| section_id | string | null | Non | Identifiant de la section parente. |
| label | string | null | Non | Libellé personnalisé affiché à la place du titre du transfert. |
| description | string | null | Non | Description courte de l'item dans la collection. |
| position | integer | Non | Ordre d'affichage. Défaut : 0. |
| is_visible | boolean | Non | Visibilité de l'item. Défaut : true. |
Exemples d'appels
Les exemples ci-dessous enchaînent la création d'un dossier, d'une collection et l'ajout d'un item. Choisissez votre langage.
Réponse, Dossier créé (201)
La réponse renvoie l'id du dossier (à réutiliser pour y ranger des transferts), son name et sa color.
Réponse, Collection récupérée (200 GET /v1/collections/{id})
La lecture d'une collection renvoie ses métadonnées ainsi que ses sections et ses items imbriqués, dans l'ordre d'affichage public.
Réponse, Suppression (200)
Erreurs
Ces erreurs valent pour les dossiers et les collections. Un 404 signale généralement un identifiant appartenant à un autre workspace (l'isolation est stricte).
| HTTP | Code d'erreur | Quand | Résolution |
|---|---|---|---|
| 400 | validation_error | Champ name absent ou vide après trim. | Fournir un name non vide. |
| 400 | validation_error | Aucun champ valide transmis à PATCH. | Inclure au moins name ou color (dossier) ou un champ patchable (collection). |
| 400 | validation_error | transfer_id absent lors de l'ajout d'un item. | Fournir un transfer_id valide. |
| 400 | validation_error | Le slug dérivé est inférieur à 2 caractères. | Fournir explicitement un slug plus long. |
| 401 | missing_api_key / invalid_api_key | Clé API absente, malformée ou révoquée. | Vérifier l'en-tête Authorization et le préfixe cof_live_… ou cof_test_…. |
| 403 | scope_missing | La clé API ne possède pas le scope requis. | Émettre une clé avec folders:manage ou collections:manage. |
| 404 | not_found | Dossier, collection, section ou item introuvable dans le workspace. | Vérifier l'identifiant et l'environnement (live vs sandbox). |
| 409 | validation_error | Slug déjà utilisé dans le workspace (création de collection). | Choisir un slug différent ou laisser l'API en dériver un. |
| 409 | validation_error | Le transfert est déjà présent dans la collection. | Ne pas ajouter deux fois le même transfer_id à une collection. |
| 500 | internal_error | Erreur base de données inattendue. | Réessayer. Si le problème persiste, contacter le support Coffrify. |
Voir aussi
- Créer et envoyer un transfert
- Gérer les destinataires et les accès
- Authentification et scopes API
- Référence complète, Dossiers
- Référence complète, Collections