Un transfert Coffrify est un conteneur d'un ou plusieurs fichiers. Vous ne créez jamais un fichier isolément : vous le déclarez au moment où vous créez le transfert, puis vous téléversez son contenu vers une URL signée que l'API vous renvoie. Cette page décrit le cycle de vie complet d'un fichier : déclaration, téléversement, lecture des métadonnées et statut. Le chiffrement AES-256-GCM est appliqué côté serveur par défaut, dans l'Union européenne, sans aucune action de votre part.
Le modèle en deux temps
La création d'un transfert ne transporte aucun octet de contenu. L'appel POST /v1/transfers envoie uniquement la liste des fichiers attendus (leur nom, leur taille et leur type), et l'API répond avec une URL de téléversement par fichier. Vous réalisez ensuite un PUT direct vers chacune de ces URL pour y déposer le contenu. Tant qu'un fichier n'a pas été téléversé, le transfert n'est ni lisible ni partageable.
- Déclarer les fichiers avec
POST /v1/transfers(un objet par fichier dansfiles[]). - Téléverser chaque contenu par un
PUTvers l'urlreçue, en envoyant lesheadersfournis. - Lire ensuite les métadonnées et le statut via
GET /v1/transfers/{id}ouGET /v1/transfers/{id}/files.
Déclarer les fichiers
POST/v1/transfersCrée un transfert et renvoie une URL de téléversement signée par fichier déclaré. Scope requis : transfers:write.Chaque entrée de files[] accepte trois champs. Le champ name est le nom de fichier affiché au destinataire. Le champ size est la taille en octets : il sert à préparer le téléversement et doit correspondre au contenu réellement envoyé. Le champ mime_type décrit le type de contenu (par exemple application/pdf) ; en son absence, application/octet-stream est utilisé.
| Champ | Type | Requis | Description |
|---|---|---|---|
| name | string | Oui | Nom du fichier présenté au destinataire. |
| size | number | Oui | Taille du contenu en octets. |
| mime_type | string | Non | Type MIME du contenu. Défaut : application/octet-stream. |
La réponse contient le transfert créé, la liste upload_urls (une entrée par fichier déclaré) et l'share_url de partage. Chaque entrée de upload_urls expose le file_id (qui reprend le nom du fichier), l'url signée à utiliser pour le PUT, et les headers exacts à transmettre lors du téléversement.
Téléverser le contenu
Pour chaque entrée de upload_urls, effectuez un PUT du contenu binaire vers l'url, en envoyant les headers fournis tels quels. N'ajoutez pas d'en-tête Authorization sur ces requêtes : l'autorisation est portée par la signature présente dans l'URL. Les URL de téléversement sont temporaires ; téléversez sans tarder après la création.
Lister les fichiers d'un transfert
GET/v1/transfers/{id}/filesRenvoie les fichiers d'un transfert avec leurs métadonnées, le décompte et le volume total. Scope requis : transfers:read.Une fois les fichiers téléversés, cet endpoint renvoie leurs métadonnées. La réponse expose object: "list", le tableau data des fichiers, le nombre file_count et le volume cumulé total_bytes (en octets). Chaque fichier porte un identifiant id, son file_name, sa taille file_size, son type file_type et sa date created_at.
Les métadonnées des fichiers sont également incluses dans le détail du transfert. Un GET /v1/transfers/{id} renvoie l'objet transfert complet accompagné d'un tableau files, où chaque entrée expose id, file_name, file_size, file_type et created_at. C'est pratique pour récupérer en un seul appel le statut du transfert et la composition de ses fichiers.
/v1/transfers/{id}Renvoie le transfert complet, statut compris, avec son tableau files. Scope requis : transfers:read.Statut et fin de vie
Le statut se lit sur le transfert (champ status), pas sur chaque fichier individuellement : les fichiers suivent le cycle de vie de leur transfert. Un transfert respecte la fenêtre expires_in_hours et le plafond max_downloads que vous avez fixés à la création ; au-delà, il n'est plus téléchargeable. Pour retirer définitivement un transfert et tous ses fichiers, appelez DELETE /v1/transfers/{id}.