Povratni pozivi
Primajte potpisane, idempotentne događaje između poslužitelja i dovršene asinkrone rezultate.
Povratni pozivi
Konfigurirajte URL povratnog poziva u Profil → Povratni pozivi i asinkroni rezultati. Model Gate šalje HTTPS POST zahtjevi za omogućene obavijesti računa i dovršeni izvorni asinkroni zahtjevi za zaključivanje. Isporuka povratnog poziva neovisna je o obradi zaključivanja i odvija se kroz namjenski izdržljivi radni red čekanja Model Gate.
URL povratnog poziva i izlazna sigurnost
Koristite javno dostupnu HTTPS krajnju točku. Validacija URL-a za povratni poziv izlazna je sigurnosna granica. Povratna petlja, privatni, lokalni za vezu, NAT na razini operatera, dokumentacijski/testni, multicast, neodređeni i rezervirani rasponi IP-a su odbijeni. Ime glavnog računala se provjerava prilikom spremanja i ponovno tijekom isporuke; preusmjeravanja se ponovno provjeravaju. Nemojte usmjeravati povratne pozive na interne usluge ili preusmjeravanja na privatne mreže.
Zajednička omotnica događaja
Svaki povratni poziv koristi istu omotnicu:
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {}
}
event_id je stabilan za svaki ponovni pokušaj jednog logičkog događaja. Ukloni duplikat isporuka do event_id; do not infer identity by comparing the rest of the payload. occurred_at je UTC RFC3339. Korisna opterećenja mogu dobiti dodatna polja tijekom vremena, tako da potrošači moraju zanemariti nepoznata polja.
Svaka isporuka također uključuje isti ID događaja X-Model-Gate-Event-ID.
Katalog događaja
account.balance_low
{
"event_id": "01J...",
"event": "account.balance_low",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {
"balance": "10.1234567890",
"threshold": "20.0000000000",
"currency": "USD"
}
}
key.spend_limit_threshold_reached
{
"event_id": "01J...",
"event": "key.spend_limit_threshold_reached",
"occurred_at": "2026-08-28T07:00:00Z",
"data": {
"key_id": "KEY_PUBLIC_ID",
"key_name": "Bank integration",
"usage": "80.1234567890",
"spend_limit": "100.0000000000",
"threshold_percent": 80,
"currency": "USD"
}
}
group.spend_limit_threshold_reached
Korisni teret koristi group_id, group_name, egzaktno-decimalno usage, egzaktno-decimalno spend_limit, cijeli broj threshold_percent, i currency = "USD".
request.completed
{
"event_id": "01J...",
"event": "request.completed",
"occurred_at": "2026-08-28T07:00:00.123456Z",
"data": {
"request_id": "01J...",
"status": "completed",
"response_status": 200,
"response": {"id":"msg_...","type":"message"}
}
}
response_status je nullable kada ne postoji uzvodni HTTP status. Neuspjeli/otkazani/istekli asinkroni rezultati mogu uključivati data.error.
Financijske vrijednosti u korisnim sadržajima povratnog poziva su točni decimalni nizovi; nisu zaokružene vrijednosti prikaza korisničkog sučelja.
Upozorenja o pragu ponovno se aktiviraju nakon što nadzirana vrijednost napusti svoje stanje praga. Radnik praga procjenjuje uvjete otprilike jednom u minuti, izvan vruće staze zaključivanja, tako da povratni pozivi praga nisu signal prelaska milisekunde u stvarnom vremenu.
Format zahtjeva
POST /model-gate/callback HTTP/1.1
Content-Type: application/json
X-Model-Gate-Event-ID: 01J...
X-Model-Gate-Signature: t=1710000000,v1=hex_hmac_sha256
Ovjera potpisa
Izračunajte HMAC-SHA256 preko točnog niza <timestamp>.<raw_body> pomoću tajne povratnog poziva generirane u Profilu. Cijela tajna prikazuje se samo kada se generira ili rotira i pohranjuje se šifrirana dok miruje. Usporedite heksadecimalni potpis u konstantnom vremenu i odbacite vremenske oznake izvan vašeg prihvaćenog prozora za ponavljanje. Vremenska oznaka HMAC-a specifična je za pokušaj isporuke; the event_id ostaje stabilan tijekom ponovnih pokušaja.
Isporuka, odgovor i ponovni pokušaji
Bilo koji HTTP 2xx odgovor prihvaća događaj. HTTP 200 s praznim tijelom preporučuje se. Pogreške u prijenosu, isteci vremena i svaki odgovor koji nije 2xx su neuspjesi.
Svaki događaj ima najviše Ukupno 6 pokušaja: prvi pokušaj plus pet ponovnih pokušaja. Slijede neuspjeli pokušaji 1–5 5 sekundi, 30 sekundi, 2 minute, 10 minuta i 1 sat. Svaki pokušaj je težak 15 sekundi ukupno vremensko ograničenje. Nakon šestog neuspjelog pokušaja događaj postaje terminalan failed i više nema automatskog ponovnog pokušaja. Zastarjeli radnički zahtjevi automatski se vraćaju u trajni red čekanja.
Nemojte obavljati dugotrajan posao prije nego što odgovorite. Provjerite potpis, ustrajte/uklonite duplikat do event_id, povratak 2xx, i obrađivati asinkrono.