Réagissez en temps réel à ce qui se passe dans votre photothèque
Abonnez-vous à quatorze événements qui couvrent les médias, les collections, les imports, le partage et les workflows. Chaque payload est signé et chaque livraison est journalisée. Les livraisons en échec sont relancées, et un endpoint qui échoue de façon répétée est désactivé automatiquement.
Chaque endpoint ne reçoit que les événements auxquels vous l'abonnez.
Événements sur les médias
asset.createdUn nouveau média a été ajouté à la photothèque.
asset.updatedLa fiche d'un média a changé. Inclut la liste des champs modifiés.
asset.deletedUn média a été supprimé. Distingue la suppression réversible de la suppression définitive.
asset.downloadedUn fichier original ou généré a été téléchargé. Inclut la définition.
Événements sur les collections
collection.createdUne nouvelle collection a été créée.
collection.updatedLe nom, le parent ou les réglages d'une collection ont changé.
collection.deletedUne collection a été supprimée.
collection.assets_addedUn ou plusieurs médias ont été ajoutés. Gère les ajouts groupés.
collection.assets_removedUn ou plusieurs médias ont été retirés. Gère les retraits groupés.
Événements de partage
share.createdUn lien de partage a été créé.
share.accessedUn destinataire a consulté ou téléchargé des fichiers via le partage.
Événements d'import et de workflow
upload.batch_completedUn lot est terminé. Inclut le nombre de réussites et d'échecs.
upload.batch_failedUn lot s'est terminé en échec. Inclut la raison.
workflow.transitionedUn média est passé d'un état de workflow à un autre.
Structure du payload
Un payload court et cohérent
Chaque payload contient le nom de l'événement, un horodatage et un petit objet data avec les identifiants nécessaires pour récupérer la fiche complète via l'API. Les mises à jour incluent aussi la liste des champs modifiés : vous pouvez décider quoi rafraîchir sans tout récupérer de nouveau.
Calculez la signature avec le secret de votre endpoint et comparez-la en temps constant avant de traiter le corps de la requête. Quand vous renouvelez le secret, l'ancien reste valide pendant vingt-quatre heures : vous pouvez déployer le changement quand cela vous convient.
// Verify a webhook signature (Node.js)
import crypto from 'crypto';
function verifyWebhook(payload, signatureHeader, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(expected),
Buffer.from(signatureHeader),
);
}
Une livraison fiable
Freedam gère les relances, les endpoints en échec et le renouvellement des secrets : votre handler peut rester simple.
Payloads signés
Chaque livraison porte une signature HMAC-SHA256 calculée avec le secret de votre endpoint. Vérifiez-la à l'arrivée de la requête, avant de traiter le corps.
Relances automatiques
Les livraisons en échec sont relancées avec un délai croissant. Les endpoints qui échouent de façon répétée sont mis en pause pour que les échecs ne s'accumulent pas dans votre boîte de réception ou votre file d'attente.
Désactivation automatique en cas d'échecs persistants
Après dix livraisons consécutives en échec, l'endpoint est désactivé automatiquement. Vous pouvez le réactiver une fois le problème corrigé.
Renouvellement du secret avec période de grâce
Renouvelez le secret d'un endpoint sans interruption de service. L'ancien secret reste valide pendant vingt-quatre heures, ce qui vous laisse le temps de mettre à jour votre handler.
Historique des livraisons
Chaque tentative de livraison est enregistrée avec l'horodatage, le code de statut, un extrait du corps de la réponse et le nombre de relances. Vous pouvez examiner ou rejouer n'importe quelle livraison via l'API.
Livraisons de test à la demande
Envoyez un événement de test depuis l'API ou les paramètres pour vérifier que votre handler fonctionne avant la mise en production.
Développeurs · Webhooks
Connectez votre photothèque à vos autres outils
Enregistrez votre premier endpoint dans la démo, ou utilisez l'API de gestion pour configurer des endpoints dans votre code.