Méthode GET/partner/webhooks/{webhook_id}

Lire un abonnement aux notifications de votre marque, avec son adresse, ses types d'événements et son état de livraison. Droit webhooks:read.

Sur cette page

Vous lisez un seul abonnement aux notifications, désigné par son numéro. En quittant cette page, vous saurez récupérer son adresse de destination, la liste des événements auxquels il est inscrit, son état allumé ou éteint, et si nos livraisons vers lui aboutissent.

Adresse complète :

HTTP
GET https://api.sealtrust.io/v1/partner/webhooks/{webhook_id}

Le même point d'entrée répond aussi sans le préfixe /v1, à https://api.sealtrust.io/partner/webhooks/{webhook_id}. Les deux adresses appellent le même code. Utilisez la forme /v1 pour une nouvelle intégration.

#Autorisation

Clef d'API dans l'en-tête Authorization, au format Bearer, portant le droit webhooks:read. Une clef qui ne porte pas ce droit reçoit un 403 dont le message nomme le droit manquant.

Un abonnement n'est visible que par une clef de la marque à laquelle il appartient. Un numéro d'abonnement qui appartient à une autre marque répond 404, comme un numéro qui n'existe pas. La réponse ne dit jamais si l'abonnement existe ailleurs.

Cette lecture reste ouverte quelle que soit votre offre. Seules la création et la modification d'un abonnement exigent que votre offre comprenne les notifications.

#Plafond d'appels

Nous mesurons le débit sur une fenêtre fixe de 60 secondes. Nous appliquons la valeur posée sur votre compte si nous en avons posé une, sinon celle de votre offre. En l'absence des deux, la valeur de repli est de 120 appels par fenêtre.

Deux compteurs se superposent, avec le même plafond : un par clef, un pour la somme de toutes les clefs de votre marque. Créer des clefs supplémentaires n'augmente donc pas le débit total autorisé.

Nous authentifions d'abord votre clef. Nous vérifions ensuite le plafond, avant le contrôle du droit webhooks:read et avant toute lecture de l'abonnement.

Un refus renvoie 429 avec Retry-After, exprimé en secondes restantes dans la fenêtre en cours. Cette valeur n'est jamais inférieure à 1. Réglez vos réessais sur Retry-After.

#En-têtes de débit

La réponse porte une série d'en-têtes X-RateLimit-* qui décrit le compteur le plus contraignant des deux, celui de votre clef ou celui de votre marque.

En-têteContenu
X-RateLimit-Limitle plafond appliqué sur la fenêtre
X-RateLimit-Remainingce qu'il vous reste dans la fenêtre en cours
X-RateLimit-Resetl'horodatage de fin de la fenêtre, en secondes
X-RateLimit-Scopekey ou brand, le compteur qui a servi de référence

Nous contrôlons votre clef avant de faire tourner son compteur. Une réponse 401 ne porte donc que la série du second compteur, et aucun X-RateLimit-Scope.

#Paramètres de chemin et de requête

NomTypeObligatoireDescription
webhook_idintegerouiLe numéro de l'abonnement, tel que la création et la liste le rendent dans le champ id.

Ce point d'entrée n'a aucun paramètre de requête.

#En-têtes

NomTypeObligatoireDescription
AuthorizationstringouiBearer suivi de votre clef d'API.

#Corps de la requête

Aucun. Cette requête n'a pas de corps.

#Requête d'exemple

Lecture de l'abonnement numéro 7.

curl -i https://api.sealtrust.io/v1/partner/webhooks/7 \
  -H "Authorization: Bearer st_test_0000000000000000000000000000000000000000000000"

#Réponse d'exemple

Code HTTP 200OK

Code HTTP 200.

JSON
{
  "id": 7,
  "brand_id": 12,
  "url": "https://exemple-sas.test/sealtrust/evenements",
  "events": [
    "product.minted",
    "batch.completed"
  ],
  "is_active": true,
  "health": "healthy",
  "created_at": "2026-08-14T09:12:44.318000Z",
  "updated_at": "2026-08-20T07:03:11.902000Z"
}

La réponse compte huit champs et rien d'autre.

ChampTypeDescription
idintegerLe numéro de l'abonnement.
brand_idintegerLe numéro de votre marque.
urlstringL'adresse qui reçoit les notifications. Elle commence toujours par https://.
eventsstring[]Les types d'événements auxquels cet abonnement est inscrit. Une liste vide veut dire qu'aucun événement ne sera livré.
is_activebooleantrue quand l'abonnement est allumé.
healthstringhealthy ou degraded. Voir ci-dessous.
created_atstringDate et heure de création, en temps universel, au format ISO 8601.
updated_atstringDate et heure de la dernière modification, en temps universel, au format ISO 8601.

health vaut healthy tant que nos livraisons vers cette adresse aboutissent. Il passe à degraded quand la dernière tentative de renvoi échoue à son tour, et il revient à healthy dès qu'une livraison réussit. Nous n'écrivons que ces deux valeurs.

#Erreurs

Le corps d'une réponse d'erreur porte un champ detail.

CodeConditionQue faire
401L'en-tête Authorization est absent. detail vaut Missing Authorization header. La réponse porte aussi WWW-Authenticate: Bearer.Ajoutez l'en-tête.
401L'en-tête Authorization ne commence pas par Bearer suivi d'un espace. detail vaut Invalid Authorization header format (expected 'Bearer <token>'). La réponse porte aussi WWW-Authenticate: Bearer.Corrigez la forme de l'en-tête.
401Ce qui suit Bearer est vide, ou fait moins de 40 caractères. detail vaut Invalid API key format. Cette réponse ne porte pas WWW-Authenticate.Envoyez le secret complet, tel que la console vous l'a affiché à la création.
401La clef envoyée est inconnue. detail vaut Invalid API key.Vérifiez que vous envoyez le secret complet, sans espace ni retour à la ligne.
403La clef n'est plus dans l'état actif. detail vaut API key is revoked ou API key is expired, selon son état.Créez une nouvelle clef dans la console.
403La clef a dépassé sa date d'expiration. detail vaut API key has expired. Nous basculons alors son état en expired.Créez une nouvelle clef. L'ancienne ne redeviendra jamais valide.
403La clef ne porte pas le droit webhooks:read. detail vaut Missing required scope: webhooks:read.Créez une clef portant ce droit. Les droits d'une clef existante ne se modifient pas.
404Aucun abonnement ne porte ce numéro dans votre marque. detail vaut Webhook subscription not found.Vérifiez le numéro avec GET /v1/partner/webhooks. Un abonnement d'une autre marque donne la même réponse, et un numéro plus grand que tout numéro attribué aussi.
422Le numéro envoyé dans le chemin n'est pas un entier. La réponse détaille le champ refusé.Envoyez le champ id tel que la liste le rend, sans guillemets ni décimale.
429Le plafond de débit de la clef est atteint. detail nomme le plafond et la fenêtre. Les en-têtes Retry-After et la famille X-RateLimit-* accompagnent la réponse, avec X-RateLimit-Scope: key.Attendez le nombre de secondes indiqué par Retry-After, puis réessayez.
429Le plafond de débit de la marque est atteint, toutes clefs confondues. X-RateLimit-Scope vaut brand, et X-RateLimit-Remaining vaut 0.Attendez le nombre de secondes indiqué par Retry-After. Créer une clef supplémentaire ne relève pas ce plafond.
500Une panne de notre côté. Le corps porte une phrase courte, sans détail technique. Ne la comparez pas caractère par caractère. La réponse porte un en-tête X-Request-Id.Réessayez. Si la panne persiste, envoyez-nous la valeur de X-Request-Id.
503Le service de plafonnement des appels est momentanément indisponible. Nous refusons l'appel. detail vaut Rate limiting temporarily unavailable, please retry shortly.Réessayez dans quelques instants. Aucune donnée n'a été lue ni modifiée.

#Voir aussi

Votre réponse ouvre un courriel pré-rempli dans votre messagerie, à destination de contact@sealtrust.io. Vous le relisez avant de l'envoyer.

Proposer une correctionSignaler un problème