Skip to content
ABUNA
DocumentationLivraisons de webhooks

Référence de l'API

Livraisons de webhooks

Voyez chaque webhook envoyé à votre serveur, renvoyez-en un, ou envoyez un test.

Une livraison de webhook est un événement envoyé à votre URL de webhook. Abuna essaie chaque livraison jusqu'à 10 fois sur environ un jour. Voir Recevoir des webhooks pour les recevoir et les vérifier.

L'objet webhook delivery

Attributs

  • idstring

    Identifiant unique de la livraison. Abuna l'envoie dans l'en-tête X-Abuna-Delivery.
  • event_idstringnullable

    L'événement que la livraison envoie.
  • event_typestring

    Le type de l'événement.
  • payloadobject

    Le corps exact qu'Abuna envoie.
    Afficher les attributsMasquer les attributs
    • idstring

      L'ID de l'événement.
    • typestring

      Le type de l'événement.
    • environmentstring

      live ou test.
    • created_attimestamp

      Quand l'événement a eu lieu.
    • dataobject

      Le payload de l'événement.
  • urlstring

    L'URL vers laquelle va la livraison.
  • statusstring

    pending pendant qu'elle attend d'être envoyée ou réessayée, delivering pendant qu'Abuna l'envoie, delivered une fois que votre serveur a répondu avec un statut 2xx, et failed après l'échec de la dernière tentative.
  • attemptsinteger

    Combien de fois Abuna a essayé de l'envoyer.
  • response_statusintegernullable

    Le statut HTTP avec lequel votre serveur a répondu en dernier.
  • last_errorstringnullable

    Pourquoi la dernière tentative a échoué.
  • created_attimestamp

    Quand la livraison a été créée, en secondes Unix.
  • delivered_attimestampnullable

    Quand votre serveur l'a acceptée.
  • next_attempt_attimestamp

    Quand Abuna essaiera de l'envoyer à nouveau, tant qu'elle est pending.
  • event_created_attimestampnullable

    Quand l'événement a eu lieu.
L'objet webhook delivery
{
  "id": "R3vH6sLd",
  "event_id": "01M447FXSP98350QH3TKE3YG6D",
  "event_type": "invoice.paid",
  "payload": {
    "created_at": 1791143442,
    "data": {
      "amount": 5000,
      "credit": 0,
      "currency": "XAF",
      "invoice_id": "hUPYtkyo",
      "invoice_number": "ACME-000001",
      "kind": "period",
      "metadata": {
        "user_id": "42"
      },
      "paid_at": 1791143442,
      "period_end": 1793821842,
      "period_id": "tKhKXYjr",
      "period_start": 1791143442,
      "subscription": {
        "activated_at": 1791143442,
        "app_id": "VyYjSLf1",
        "cancel_at": null,
        "canceled_at": null,
        "created_at": 1791143442,
        "current_period_end": 1793821842,
        "current_period_start": 1791143442,
        "customer_id": "OljRiqBE",
        "ended_reason": null,
        "id": "coRNVNUz",
        "manage_token": "d6f6ca3a8b285784aed37bd593bab9dea12e",
        "metadata": {
          "user_id": "42"
        },
        "price_id": "UKjuDVyN",
        "starts_at": 1791143442,
        "status": "active"
      },
      "subscription_id": "coRNVNUz"
    },
    "environment": "test",
    "id": "01M447FXSP98350QH3TKE3YG6D",
    "type": "invoice.paid"
  },
  "url": "https://example.com/webhooks",
  "status": "delivered",
  "attempts": 1,
  "response_status": 200,
  "last_error": null,
  "created_at": 1727600100,
  "delivered_at": 1727600101,
  "next_attempt_at": 1727600100,
  "event_created_at": 1727600100
}

Lister les livraisons de webhook

GET/v1/apps/{appID}/webhooks

Liste les livraisons de webhook de l'application, de la plus récente à la plus ancienne, une page à la fois.

Paramètres de requête

  • typestring

    Renvoie uniquement les livraisons de ce type d'événement, comme invoice.paid.
  • statusstring

    Renvoie uniquement les livraisons avec ce statut : pending, delivering, delivered ou failed.
  • limitinteger

    Combien de livraisons renvoyer, de 1 à 100. Par défaut : 50.
  • cursorstring

    La valeur next_cursor de la page précédente. Envoyez les mêmes filtres avec.

Renvoie items et next_cursor, comme décrit dans Listes et filtres. Une valeur non autorisée, comme un limit supérieur à 100, renvoie 422 avec le code invalid et le nom du paramètre dans errors.

GET /v1/apps/{appID}/webhooks
curl "https://api.abuna.app/v1/apps/8ddhXCDW/webhooks?status=failed" \
  -H "Authorization: Bearer sk_test_..."
Réponse
{
  "items": [
    {
      "id": "R3vH6sLd",
      "event_id": "01M447FXSP98350QH3TKE3YG6D",
      "event_type": "invoice.paid",
      "payload": {
        "created_at": 1791143442,
        "data": {
          "amount": 5000,
          "credit": 0,
          "currency": "XAF",
          "invoice_id": "hUPYtkyo",
          "invoice_number": "ACME-000001",
          "kind": "period",
          "metadata": {
            "user_id": "42"
          },
          "paid_at": 1791143442,
          "period_end": 1793821842,
          "period_id": "tKhKXYjr",
          "period_start": 1791143442,
          "subscription": {
            "activated_at": 1791143442,
            "app_id": "VyYjSLf1",
            "cancel_at": null,
            "canceled_at": null,
            "created_at": 1791143442,
            "current_period_end": 1793821842,
            "current_period_start": 1791143442,
            "customer_id": "OljRiqBE",
            "ended_reason": null,
            "id": "coRNVNUz",
            "manage_token": "d6f6ca3a8b285784aed37bd593bab9dea12e",
            "metadata": {
              "user_id": "42"
            },
            "price_id": "UKjuDVyN",
            "starts_at": 1791143442,
            "status": "active"
          },
          "subscription_id": "coRNVNUz"
        },
        "environment": "test",
        "id": "01M447FXSP98350QH3TKE3YG6D",
        "type": "invoice.paid"
      },
      "url": "https://example.com/webhooks",
      "status": "delivered",
      "attempts": 1,
      "response_status": 200,
      "last_error": null,
      "created_at": 1727600100,
      "delivered_at": 1727600101,
      "next_attempt_at": 1727600100,
      "event_created_at": 1727600100
    }
  ],
  "next_cursor": null
}

Renvoyer un webhook

POST/v1/apps/{appID}/webhooks/{id}/redeliver

Accepte un en-tête Idempotency-Key.

Envoie à nouveau le corps d'une livraison passée, en tant que nouvelle livraison du même événement. Elle va vers votre URL de webhook actuelle. Utilisez-la après avoir corrigé votre endpoint.

Renvoie la nouvelle livraison avec le statut 201. Si l'application n'a pas d'URL de webhook, renvoie 422 avec le code webhook_url_missing. Si elle n'a aucune livraison avec cet ID, renvoie 404 avec le code not_found.

POST /v1/apps/{appID}/webhooks/{id}/redeliver
curl https://api.abuna.app/v1/apps/8ddhXCDW/webhooks/R3vH6sLd/redeliver \
  -X POST \
  -H "Authorization: Bearer sk_test_..."
Réponse
{
  "id": "K5qB9mDl",
  "app_id": "8ddhXCDW",
  "event_id": "01M447FXSP98350QH3TKE3YG6D",
  "event_type": "invoice.paid",
  "payload": "eyJjcmVhdGVkX2F0IjoxNzkxMTQzNDQyLCJkYXRhIjp7ImFtb3VudCI6NTAwMCwiY3JlZGl0IjowLCJjdXJyZW5jeSI6IlhBRiIsImludm9pY2VfaWQiOiJoVVBZdGt5byIsImludm9pY2VfbnVtYmVyIjoiQUNNRS0wMDAwMDEiLCJraW5kIjoicGVyaW9kIiwibWV0YWRhdGEiOnsidXNlcl9pZCI6IjQyIn0sInBhaWRfYXQiOjE3OTExNDM0NDIsInBlcmlvZF9lbmQiOjE3OTM4MjE4NDIsInBlcmlvZF9pZCI6InRLaEtYWWpyIiwicGVyaW9kX3N0YXJ0IjoxNzkxMTQzNDQyLCJzdWJzY3JpcHRpb24iOnsiYWN0aXZhdGVkX2F0IjoxNzkxMTQzNDQyLCJhcHBfaWQiOiJWeVlqU0xmMSIsImNhbmNlbF9hdCI6bnVsbCwiY2FuY2VsZWRfYXQiOm51bGwsImNyZWF0ZWRfYXQiOjE3OTExNDM0NDIsImN1cnJlbnRfcGVyaW9kX2VuZCI6MTc5MzgyMTg0MiwiY3VycmVudF9wZXJpb2Rfc3RhcnQiOjE3OTExNDM0NDIsImN1c3RvbWVyX2lkIjoiT2xqUmlxQkUiLCJlbmRlZF9yZWFzb24iOm51bGwsImlkIjoiY29STlZOVXoiLCJtYW5hZ2VfdG9rZW4iOiJkNmY2Y2EzYThiMjg1Nzg0YWVkMzdiZDU5M2JhYjlkZWExMmUiLCJtZXRhZGF0YSI6eyJ1c2VyX2lkIjoiNDIifSwicHJpY2VfaWQiOiJVS2p1RFZ5TiIsInN0YXJ0c19hdCI6MTc5MTE0MzQ0Miwic3RhdHVzIjoiYWN0aXZlIn0sInN1YnNjcmlwdGlvbl9pZCI6ImNvUk5WTlV6In0sImVudmlyb25tZW50IjoidGVzdCIsImlkIjoiMDFNNDQ3RlhTUDk4MzUwUUgzVEtFM1lHNkQiLCJ0eXBlIjoiaW52b2ljZS5wYWlkIn0=",
  "url": "https://example.com/webhooks",
  "status": "pending",
  "attempts": 0,
  "response_status": null,
  "last_error": null,
  "next_attempt_at": 1727700000,
  "leased_until": null,
  "created_at": 1727700000,
  "delivered_at": null
}

Envoyer un webhook de test

POST/v1/apps/{appID}/webhooks/test

Accepte un en-tête Idempotency-Key.

Envoie maintenant un événement ping signé vers votre URL de webhook, et vous dit comment votre serveur a répondu. Il n'est pas réessayé, et il n'apparaît ni dans vos événements ni dans vos livraisons. Son data est {"message": "A test event sent from the Abuna dashboard."}.

Attributs de la réponse

  • deliveredboolean

    Si votre serveur a répondu avec un statut 2xx.
  • response_statusintegernullable

    Le statut HTTP avec lequel votre serveur a répondu. Null s'il n'a pas répondu.
  • errorstringnullable

    Pourquoi la requête a échoué, quand votre serveur n'a pas répondu.

Renvoie 200, même quand votre serveur échoue au test. Si l'application n'a pas d'URL de webhook, renvoie 422 avec le code webhook_url_missing. Vous pouvez envoyer 10 tests par minute. Au-delà, elle renvoie 429 avec le code rate_limited.

POST /v1/apps/{appID}/webhooks/test
curl https://api.abuna.app/v1/apps/8ddhXCDW/webhooks/test \
  -X POST \
  -H "Authorization: Bearer sk_test_..."
Réponse
{
  "delivered": true,
  "response_status": 200,
  "error": null
}

Étapes suivantes