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
idstringIdentifiant unique de la livraison. Abuna l'envoie dans l'en-têteX-Abuna-Delivery.event_idstringnullableL'événement que la livraison envoie.event_typestringLe type de l'événement.payloadobjectLe corps exact qu'Abuna envoie.Afficher les attributsMasquer les attributs
idstringL'ID de l'événement.typestringLe type de l'événement.environmentstringliveoutest.created_attimestampQuand l'événement a eu lieu.dataobjectLepayloadde l'événement.
urlstringL'URL vers laquelle va la livraison.statusstringpendingpendant qu'elle attend d'être envoyée ou réessayée,deliveringpendant qu'Abuna l'envoie,deliveredune fois que votre serveur a répondu avec un statut 2xx, etfailedaprès l'échec de la dernière tentative.attemptsintegerCombien de fois Abuna a essayé de l'envoyer.response_statusintegernullableLe statut HTTP avec lequel votre serveur a répondu en dernier.last_errorstringnullablePourquoi la dernière tentative a échoué.created_attimestampQuand la livraison a été créée, en secondes Unix.delivered_attimestampnullableQuand votre serveur l'a acceptée.next_attempt_attimestampQuand Abuna essaiera de l'envoyer à nouveau, tant qu'elle estpending.event_created_attimestampnullableQuand l'événement a eu lieu.
{
"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
typestringRenvoie uniquement les livraisons de ce type d'événement, commeinvoice.paid.statusstringRenvoie uniquement les livraisons avec ce statut :pending,delivering,deliveredoufailed.limitintegerCombien de livraisons renvoyer, de 1 à 100. Par défaut : 50.cursorstringLa valeurnext_cursorde 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.
curl "https://api.abuna.app/v1/apps/8ddhXCDW/webhooks?status=failed" \
-H "Authorization: Bearer sk_test_..."{
"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.
curl https://api.abuna.app/v1/apps/8ddhXCDW/webhooks/R3vH6sLd/redeliver \
-X POST \
-H "Authorization: Bearer sk_test_..."{
"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
deliveredbooleanSi votre serveur a répondu avec un statut 2xx.response_statusintegernullableLe statut HTTP avec lequel votre serveur a répondu. Null s'il n'a pas répondu.errorstringnullablePourquoi 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.
curl https://api.abuna.app/v1/apps/8ddhXCDW/webhooks/test \
-X POST \
-H "Authorization: Bearer sk_test_..."{
"delivered": true,
"response_status": 200,
"error": null
}