Méthode GET/partner/webhooks

Lister les abonnements aux notifications enregistrés au nom de votre marque, page par page. Droit webhooks:read.

Sur cette page

En quittant cette page, vous saurez lister les abonnements aux notifications enregistrés au nom de votre marque et parcourir cette liste page par page.

Adresse complète :

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

Le même point d'entrée répond aussi sans le préfixe /v1, à https://api.sealtrust.io/partner/webhooks. 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.

Une clef appartient à une seule marque. Cette liste ne contient donc que les abonnements de la marque de la clef, et aucun autre.

Cette lecture reste ouverte quelle que soit votre offre. Si votre offre ne comprend plus les notifications, vous continuez à voir quels points de réception sont enregistrés en votre nom. Ce sont la création et la modification qui exigent l'offre.

#Plafond d'appels

Le débit est mesuré sur une fenêtre fixe de 60 secondes. La valeur appliquée est celle de votre offre, ou celle posée sur votre compte si nous en avons posé une. 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é.

Le plafond est vérifié avant le contrôle du droit de la clef et avant toute lecture en base. Un appel refusé en 403 pour droit manquant a donc déjà consommé une unité du budget de la fenêtre en cours.

Une réponse 200 porte quatre en-têtes, qui décrivent le compteur le plus contraignant des deux.

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

Ces quatre en-têtes accompagnent la réponse 200 et la réponse 429. Sur les autres codes de réponse, ne les attendez pas : une clef absente, inconnue, révoquée ou expirée est refusée avant tout comptage, et les autres refus ne reportent pas ces valeurs.

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.

#Paramètres de chemin et de requête

Ce point d'entrée n'a pas de paramètre de chemin.

NomTypeObligatoireDescription
skipintegernonLe nombre d'abonnements à sauter avant de commencer la page. Vaut 0 par défaut. Une valeur négative est refusée en 422.
limitintegernonLe nombre d'abonnements à rendre au maximum. Vaut 20 par défaut. Le minimum est 1, le maximum est 100. Une valeur en dehors de ces bornes est refusée en 422, sans troncature silencieuse.

#En-têtes

NomTypeObligatoireDescription
AuthorizationstringouiBearer suivi de votre clef d'API.

#Corps de la requête

Ce point d'entrée n'a pas de corps de requête. Toute l'information que vous envoyez tient dans les deux paramètres de requête ci-dessus.

#Requête d'exemple

La première page, vingt abonnements au maximum.

curl -i -X GET "https://api.sealtrust.io/v1/partner/webhooks?skip=0&limit=20" \
  -H "Authorization: Bearer st_test_0000000000000000000000000000000000000000000000"

Pour lire la page suivante, augmentez skip de la valeur de limit : skip=20 avec limit=20, puis skip=40, et ainsi de suite jusqu'à ce que items soit vide. Le champ total vous donne le nombre d'abonnements à parcourir.

#Réponse d'exemple

Code HTTP 200OK

Code HTTP 200.

JSON
{
  "items": [
    {
      "id": 41,
      "url": "https://exemple.test/sealtrust/evenements",
      "event_types": [
        "product.minted",
        "batch.completed",
        "batch.failed"
      ],
      "brand_id": 12,
      "is_active": true,
      "health": "healthy",
      "created_at": "2026-08-18T09:14:02.117043+00:00",
      "updated_at": "2026-08-18T09:14:02.117043+00:00"
    },
    {
      "id": 39,
      "url": "https://exemple.test/sealtrust/retours",
      "event_types": [
        "return.requested",
        "return.completed"
      ],
      "brand_id": 12,
      "is_active": false,
      "health": "degraded",
      "created_at": "2026-08-11T16:40:55.902881+00:00",
      "updated_at": "2026-08-19T07:02:31.448190+00:00"
    }
  ],
  "total": 2
}

La liste est paginée, et triée sur la date de création, du plus récent au plus ancien.

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

ChampTypeDescription
itemsarrayLes abonnements de la page, du plus récent au plus ancien.
totalintegerLe nombre total d'abonnements de votre marque, toutes pages confondues, actifs comme éteints.

Chaque entrée de items compte huit champs.

ChampTypeDescription
idintegerL'identifiant de l'abonnement. Passez-le dans le chemin de GET /v1/partner/webhooks/{webhook_id}, de PUT /v1/partner/webhooks/{webhook_id} et de DELETE /v1/partner/webhooks/{webhook_id}.
urlstringL'adresse qui reçoit les livraisons. Elle commence toujours par https://.
event_typesarrayLes types d'événements auxquels cet abonnement est inscrit. Une liste vide veut dire qu'aucun événement ne sera livré.
brand_idintegerLe numéro de votre marque. Il est identique sur toutes les entrées.
is_activebooleanfalse quand l'abonnement est éteint.
healthstringhealthy ou degraded. Voir ci-dessous.
created_atstringLa date de création de l'abonnement, au format ISO 8601 avec fuseau.
updated_atstringLa date de la dernière modification, au format ISO 8601 avec fuseau.

health vaut healthy à la création. Il passe à degraded quand nous abandonnons les tentatives de livraison sur cette adresse. Il revient à healthy à la première livraison réussie qui suit.

Le secret de signature d'un abonnement n'est jamais rendu par cette liste, ni par aucun autre point d'entrée de lecture.

#Erreurs

Le corps d'une réponse d'erreur porte un champ detail. Selon le cas, ce champ contient une phrase ou une liste.

CodeConditionQue faire
401L'en-tête Authorization est absent. 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. La réponse porte aussi WWW-Authenticate: Bearer.Corrigez la forme de l'en-tête.
401La clef envoyée est vide ou compte moins de 40 caractères. detail vaut Invalid API key format. Cette réponse ne porte pas WWW-Authenticate.Envoyez le secret complet, sans espace ni retour à la ligne.
401La clef envoyée est inconnue. detail vaut Invalid API key.Vérifiez que vous utilisez la bonne clef, et qu'elle n'a pas été remplacée.
403La clef n'est plus active, parce qu'elle a été révoquée. Le message donne son état.Créez une nouvelle clef dans la console.
403La clef a atteint sa date d'expiration.Créez une nouvelle clef. L'ancienne ne redeviendra jamais valide.
403La clef ne porte pas le droit webhooks:read. Le message nomme le droit manquant.Créez une clef portant ce droit. Les droits d'une clef existante ne se modifient pas.
422skip est négatif, limit est inférieur à 1 ou supérieur à 100, ou l'une des deux valeurs n'est pas un entier. detail est une liste qui nomme le paramètre fautif.Corrigez la valeur. La borne haute de limit est 100.
422Une valeur de pagination dépasse ce que la base accepte comme nombre entier. Le message est générique et ne nomme pas le paramètre. La réponse porte un en-tête X-Request-Id.Réduisez skip. Une pagination normale reste très en dessous de cette borne.
429Le plafond de débit de la clef est atteint. 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.Attendez le nombre de secondes indiqué par Retry-After. Créer une clef supplémentaire ne relève pas ce plafond.
500Une erreur inattendue s'est produite pendant le traitement de votre appel. Le corps vaut {"detail": "Internal Server Error"} et la réponse porte un en-tête X-Request-Id.Réessayez. Si l'erreur persiste, contactez le support en indiquant la valeur de X-Request-Id.
503Le service qui tient les compteurs de débit est momentanément indisponible. L'appel est refusé sans être compté.Réessayez dans quelques instants. Aucune donnée n'a été lue ni modifiée.

Ce point d'entrée ne renvoie jamais 404. Une marque sans aucun abonnement reçoit un 200 avec items vide et total à 0.

#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