Skip to content

Webhooks API

Webhooks reāllaikā paziņo jūsu lietojumprogrammai, kad ar jūsu akreditācijas datiem kaut kas notiek — kad tie tiek izsniegti, piegādāti, atsaukti vai apskatīti. Tā vietā, lai pastāvīgi aptaujātu API, jūs reģistrējat HTTPS galapunktu, un badges.ninja tam nosūta parakstītu POST pieprasījumu par katru notikumu, uz kuru esat abonējis.

Visiem pārvaldības galapunktiem nepieciešama autentifikācija ar galveni X-Api-Key. Skatiet Autentifikācija. Galapunktu izveidei vai dzēšanai nepieciešama atslēga ar rakstīšanas tvērumu; sarakstu skatīšanai — lasīšanas. Skatiet API atslēgas.

Galapunkta reģistrēšana

POST /webhooks

Parametri

ParametrsTipsObligātsApraksts
urlstringJūsu HTTPS galapunkts. Jāsākas ar https://.
eventsstring[]Notikumu tipi, uz kuriem abonēt. Izlaidiet vai norādiet ["*"], lai saņemtu visus notikumus.

Piemērs

bash
curl -X POST https://api.badges.ninja/webhooks \
  -H "X-Api-Key: bws_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/badges",
    "events": ["credential.issued", "credential.delivered"]
  }'

Atbilde

201 Created. Parakstīšanas noslēpums tiek atgriezts tikai vienu reizi — saglabājiet to tagad; jūs to vairs nevarēsiet iegūt.

json
{
  "id": "e4b19ff5-063d-4799-bd75-d03641be624f",
  "url": "https://example.com/hooks/badges",
  "events": ["credential.issued", "credential.delivered"],
  "secret": "2be6d335682c1658242fde3a523fd8a2493bab8c"
}

Galapunktu saraksts

GET /webhooks

Atgriež jūsu reģistrētos galapunktus. Parakstīšanas noslēpumi nekad netiek iekļauti.

json
{
  "webhooks": [
    {
      "id": "e4b19ff5-063d-4799-bd75-d03641be624f",
      "url": "https://example.com/hooks/badges",
      "events": ["credential.issued", "credential.delivered"],
      "active": true,
      "failureCount": 0,
      "createdAt": 1787685415083,
      "lastStatus": 200,
      "lastDeliveryAt": 1787685480777
    }
  ]
}

Galapunkta dzēšana

DELETE /webhooks/{id}
bash
curl -X DELETE https://api.badges.ninja/webhooks/e4b19ff5-063d-4799-bd75-d03641be624f \
  -H "X-Api-Key: bws_your_api_key_here"

Piegādes uz galapunktu tiek nekavējoties apturētas.

Notikumu tipi

NotikumsNostrādā, kad…
credential.issuedAkreditācijas dati tiek izsniegti saņēmējam.
credential.deliveredAkreditācijas datu paziņojuma e-pasts tiek nosūtīts saņēmējam (atsevišķi vai masveidā).
credential.revokedAkreditācijas dati tiek atsaukti.
credential.viewedSaņēmēja publiskā akreditācijas datu lapa tiek apskatīta pirmo reizi.

Piegādes slodze

Katra piegāde ir POST pieprasījums ar šādas formas JSON pamattekstu:

json
{
  "id": "b1c2d3e4-...",
  "type": "credential.issued",
  "createdAt": 1787685415083,
  "data": { }
}
LauksApraksts
idUnikāls piegādes id (izmantojiet to dublikātu novēršanai).
typeNotikuma tips.
createdAtNotikuma laikspiedols (epohas milisekundes).
dataNotikumam specifiskā slodze (skatiet zemāk).

data pēc notikuma tipa

credential.issued

json
{
  "awardId": "https://api.badges.ninja/certify-badge/award/<guid>",
  "badgeId": "https://api.badges.ninja/certify-badge/badge/<guid>",
  "badgeName": "Advanced Certification",
  "recipient": { "email": "jane@example.com", "name": "Jane Doe" },
  "issuedOn": "2026-08-25",
  "expires": null
}

credential.delivered

json
{
  "awardId": "https://api.badges.ninja/certify-badge/award/<guid>",
  "recipient": { "email": "jane@example.com", "name": "Jane Doe" },
  "badgeName": "Advanced Certification"
}

credential.revoked

json
{ "awardId": "https://api.badges.ninja/certify-badge/award/<guid>", "reason": "Issued in error" }

credential.viewed

json
{
  "awardId": "https://api.badges.ninja/certify-badge/award/<guid>",
  "recipient": { "email": "jane@example.com", "name": "Jane Doe" }
}

Pieprasījuma galvenes

Katra piegāde satur šādas galvenes:

GalveneApraksts
X-Bws-EventNotikuma tips (tāds pats kā type pamattekstā).
X-Bws-DeliveryPiegādes id (tāds pats kā id pamattekstā).
X-Bws-Signaturesha256=, kam seko neapstrādātā pieprasījuma pamatteksta HMAC-SHA256, atslēgots ar jūsu galapunkta noslēpumu.
User-Agentbadges.ninja-webhooks/1

Parakstu pārbaude

Vienmēr pārbaudiet parakstu, pirms uzticaties piegādei. Aprēķiniet neapstrādātā pieprasījuma pamatteksta HMAC-SHA256, izmantojot jūsu galapunkta parakstīšanas noslēpumu, un salīdziniet to (nemainīgā laikā) ar galveni X-Bws-Signature.

js
import crypto from "node:crypto";

function verify(rawBody, signatureHeader, secret) {
  const expected = "sha256=" +
    crypto.createHmac("sha256", secret).update(rawBody, "utf8").digest("hex");
  const a = Buffer.from(signatureHeader);
  const b = Buffer.from(expected);
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Izmantojiet tieši tos baitus, kurus saņēmāt — JSON parsēšana un atkārtota serializēšana mainīs baitus un sabojās parakstu.

Atkārtoti mēģinājumi un uzticamība

  • Piegāde tiek uzskatīta par veiksmīgu, kad jūsu galapunkts atbild ar 2xx statusu.
  • Neizdevušās piegādes tiek atkārtotas nelielu skaitu reižu. Galapunkti, kas turpina neizdoties, uzkrāj failureCount; pēc 20 secīgām neizdošanās reizēm galapunkts tiek automātiski atspējots (active: false) un pārstāj saņemt piegādes, līdz jūs to izlabosiet un reģistrēsiet jaunu galapunktu.
  • Piegādes var pienākt vairāk nekā vienu reizi. Izmantojiet X-Bws-Delivery id (vai pamatteksta id), lai padarītu savu apstrādātāju idempotentu.
  • Atbildiet ātri (aptuveni 10 sekunžu laikā). Smago darbu veiciet asinhroni pēc apstiprināšanas.

Webhooks pārvaldība vadības panelī

Galapunktus varat pārvaldīt arī bez API — atveriet Webhooks vadības paneļa sānjoslā, lai pievienotu, uzskaitītu un dzēstu galapunktus un izvēlētos, kurus notikumus katrs no tiem saņem.

badges.ninja Documentation