Cette page décrit comment intégrer Coffrify en Ruby. Un SDK Ruby officiel est en cours de préparation, mais il n'est pas encore publié. En attendant, l'API REST v1 reste pleinement utilisable depuis Ruby : tout passe par des requêtes HTTP classiques que vous pouvez écrire avec la bibliothèque standard net/http, sans aucune dépendance externe. Vous trouverez ci-dessous des exemples prêts à l'emploi pour créer un transfert chiffré, téléverser les fichiers, lister vos transferts et brancher un webhook, le tout dans l'idiome Ruby.
Pré-requis
Vous avez besoin d'une clé d'API et de la version de Ruby de votre choix (la bibliothèque net/http est incluse dans la bibliothèque standard, rien à installer). La base de l'API est https://api.coffrify.com/v1 et l'authentification se fait par un en-tête Authorization: Bearer <clé>. Utilisez une clé de test (cof_test_…) ou une clé sandbox (cof_sandbox_…) pendant le développement, puis une clé de production (cof_live_…) une fois en ligne. Ne placez jamais votre clé en clair dans le code : lisez-la depuis une variable d'environnement.
Créer un transfert
POST/v1/transfersCrée un transfert et renvoie les URL de téléversement (upload_urls) à utiliser pour envoyer chaque fichier, ainsi que le lien de partage (share_url).Le corps de la requête décrit les fichiers (files, avec name, size et mime_type) et les options de partage : durée de validité (expires_in_hours), nombre maximal de téléchargements (max_downloads), destinataire (recipient) et titre du transfert (transfer_title). La réponse contient un objet transfer, un tableau upload_urls et le share_url à communiquer. L'exemple suivant crée un transfert d'un fichier de 204 800 octets, valable 48 heures, adressé à un destinataire.
La réponse a la forme suivante. Le tableau upload_urls associe à chaque fichier (file_id) une URL de dépôt et les en-têtes à renvoyer lors du téléversement. Le share_url est le lien que reçoit votre destinataire.
Téléverser les fichiers
Une fois le transfert créé, envoyez le contenu de chaque fichier en PUT sur l'url correspondante, en reprenant exactement les headers fournis dans upload_urls. C'est le serveur Coffrify qui chiffre ensuite le contenu au repos (AES-256-GCM) : vous n'avez rien de particulier à faire côté Ruby. L'exemple poursuit la création précédente et téléverse le fichier local correspondant à chaque entrée.
Lister les transferts
GET/v1/transfersRenvoie vos transferts par pages. Pagination par curseur : passez next_cursor à l'appel suivant. La limite par page est de 100 maximum.La réponse est un objet de liste contenant data (le tableau des transferts) et next_cursor. Tant que next_cursor n'est pas null, repassez-le dans le paramètre de requête cursor pour obtenir la page suivante. Pour récupérer ou supprimer un transfert précis, utilisez GET /v1/transfers/{id} et DELETE /v1/transfers/{id} sur le même modèle.
Recevoir les webhooks
Coffrify peut notifier votre application des événements (par défaut transfer.downloaded) en envoyant une requête POST signée à votre URL. Côté Ruby, exposez un endpoint qui lit le corps brut de la requête, vérifie la signature à l'aide du secret de l'endpoint (whsec_…, affiché une seule fois à la création), puis traite l'événement. Vérifiez toujours la signature avant de faire confiance au contenu. La création de l'endpoint se fait via POST /v1/webhooks ; la vérification de la signature suit le standard Standard Webhooks, dont la procédure complète figure dans la référence REST.
| En-tête reçu | Rôle |
|---|---|
| webhook-id | Identifiant unique de la livraison |
| webhook-timestamp | Horodatage de l'envoi (tolérance de 5 minutes) |
| webhook-signature | Signature à vérifier avec le secret whsec_… |
Dès que la gem coffrify pour Ruby sera disponible, cette page sera mise à jour avec l'installation et les méthodes idiomatiques. En attendant, ces appels REST couvrent l'ensemble du cycle de vie d'un transfert. Pour la liste exhaustive des paramètres, des codes d'erreur ({"error":{"code","message","request_id"}}), des en-têtes de limites de débit et de la vérification des webhooks, reportez-vous à la référence de l'API REST v1.