Développeurs

Webhooks

Abonnements aux événements de l'organisation.

Lister les abonnements webhook

get/api/v1/webhooks

Scope requis : webhooks:manage

Paramètres

  • limit (query)integer

    Taille de page.

  • cursor (query)string

    Curseur opaque rendu par la page précédente (next_cursor).

Réponses

  • 200Une page d'abonnements.Page & object

Erreurs communes :400401403429500503(détail dans la section Erreurs)

curl -sS "$SEVEUP_API/api/v1/webhooks" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "data": [
    {
      "id": "6e7f8a9b-0c1d-4e2f-8a3b-4c5d6e7f8a9b",
      "name": "ERP chantier",
      "url": "https://erp.example.com/hooks/seveup",
      "events": [
        "revision.processing.completed",
        "ids_check.completed"
      ],
      "active": true,
      "last_delivered_at": "2026-10-20T18:00:00Z",
      "last_status": 200,
      "created_at": "2026-09-01T10:00:00Z"
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Créer un abonnement webhook

post/api/v1/webhooks

Scope requis : webhooks:manage

Le secret de signature n'est rendu qu'ici, une seule fois.

Paramètres

  • Idempotency-Key (header)string

    Clé d'idempotence, gardée 24 h par organisation.

Corps de la requêteWebhookCreate

  • namestringrequis

  • urlstring (uri)requis

    HTTPS uniquement, 2000 caractères au plus.

  • eventsWebhookEventType[]requis

Réponses

  • 201Abonnement créé.Webhook & object
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem

Erreurs communes :400401403429500503(détail dans la section Erreurs)

curl -sS -X POST "$SEVEUP_API/api/v1/webhooks" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "ERP chantier",
  "url": "https://erp.example.com/hooks/seveup",
  "events": [
    "revision.processing.completed",
    "ids_check.completed"
  ]
}'
Exemple (201)
{
  "id": "6e7f8a9b-0c1d-4e2f-8a3b-4c5d6e7f8a9b",
  "name": "ERP chantier",
  "url": "https://erp.example.com/hooks/seveup",
  "events": [
    "revision.processing.completed",
    "ids_check.completed"
  ],
  "active": true,
  "last_delivered_at": null,
  "last_status": null,
  "created_at": "2026-10-21T08:00:00Z",
  "secret": "whsec_<montré une seule fois>"
}

Supprimer un abonnement webhook

delete/api/v1/webhooks/{webhook_id}

Scope requis : webhooks:manage

Paramètres

  • webhook_id (path)string (uuid)requis

    Identifiant de l'abonnement webhook.

Réponses

  • 204Abonnement supprimé, avec son journal ; les livraisons en attente ne partent plus.

Erreurs communes :401403404429500503(détail dans la section Erreurs)

curl -sS -X DELETE "$SEVEUP_API/api/v1/webhooks/$WEBHOOK_ID" \
  -H "Authorization: Bearer $SEVEUP_KEY"

Journal de livraison d'un abonnement

get/api/v1/webhooks/{webhook_id}/deliveries

Scope requis : webhooks:manage

Les livraisons des 30 derniers jours, les plus récentes d'abord.

Paramètres

  • webhook_id (path)string (uuid)requis

    Identifiant de l'abonnement webhook.

  • limit (query)integer

    Taille de page.

  • cursor (query)string

    Curseur opaque rendu par la page précédente (next_cursor).

Réponses

  • 200Une page de livraisons.Page & object

Erreurs communes :400401403404429500503(détail dans la section Erreurs)

curl -sS "$SEVEUP_API/api/v1/webhooks/$WEBHOOK_ID/deliveries" \
  -H "Authorization: Bearer $SEVEUP_KEY"
Exemple (200)
{
  "data": [
    {
      "id": "0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
      "event": "ids_check.completed",
      "status": "delivered",
      "attempts": 1,
      "response_code": 200,
      "error": null,
      "created_at": "2026-10-21T09:02:11Z",
      "delivered_at": "2026-10-21T09:02:12Z",
      "next_attempt_at": null
    }
  ],
  "next_cursor": null,
  "has_more": false
}

Rejouer une livraison

post/api/v1/webhooks/{webhook_id}/deliveries/{delivery_id}/retry

Scope requis : webhooks:manage

Remet la livraison en file, avec le même webhook-id : un destinataire qui l'avait déjà traitée la reconnaît. Une livraison encore en attente est rendue telle quelle. 409 si l'abonnement est désactivé ou si le corps de l'événement n'est plus conservé.

Paramètres

  • webhook_id (path)string (uuid)requis

    Identifiant de l'abonnement webhook.

  • delivery_id (path)string (uuid)requis

    Identifiant de la livraison, lu dans le journal de livraison de l'abonnement.

  • Idempotency-Key (header)string

    Clé d'idempotence, gardée 24 h par organisation.

Réponses

  • 202Livraison remise en file.WebhookDelivery
  • 409Idempotency-Key déjà utilisée avec un autre corps, ou état incompatible.Problem

Erreurs communes :401403404429500503(détail dans la section Erreurs)

curl -sS -X POST "$SEVEUP_API/api/v1/webhooks/$WEBHOOK_ID/deliveries/$DELIVERY_ID/retry" \
  -H "Authorization: Bearer $SEVEUP_KEY" \
  -H "Idempotency-Key: $(uuidgen)"
Exemple (202)
{
  "id": "0b1c2d3e-4f50-4a6b-8c7d-9e0f1a2b3c4d",
  "event": "ids_check.completed",
  "status": "pending",
  "attempts": 0,
  "response_code": 401,
  "error": "HTTP 401",
  "created_at": "2026-10-21T09:02:11Z",
  "delivered_at": null,
  "next_attempt_at": "2026-10-22T07:20:00Z"
}