B2BB2B LLM

Povratni klici

Prejmite podpisane, idempotentne dogodke med strežniki in dokončane asinhrone rezultate.

Povratni klici

Konfigurirajte URL povratnega klica v Profil → Povratni klici in asinhroni rezultati. Model Gate pošilja HTTPS POST zahteve za omogočena obvestila o računih in dokončane izvorne zahteve za asinhrono sklepanje. Dostava povratnega klica je neodvisna od obdelave sklepanja in poteka prek namenske vzdržljive čakalne vrste delavca Model Gate.

URL povratnega klica in izhodna varnost

Uporabite javno dostopno končno točko HTTPS. Preverjanje URL-ja za povratni klic je varnostna meja za izhod. Povratna zanka, zasebna, lokalna povezava, NAT operaterskega razreda, dokumentacija/test, multicast, nedoločeni in rezervirani obsegi IP so zavrnjeni. Ime gostitelja je potrjeno ob shranjevanju in ponovno med dostavo; preusmeritve so ponovno potrjene. Ne usmerjajte povratnih klicev na notranje storitve ali preusmeritev v zasebna omrežja.

Skupna ovojnica dogodka

Vsak povratni klic uporablja isto ovojnico:

{
  "event_id": "01J...",
  "event": "account.balance_low",
  "occurred_at": "2026-08-28T07:00:00Z",
  "data": {}
}

event_id je stabilen za vsak ponovni poskus enega logičnega dogodka. Odstrani podvojene dostave do event_id; ne sklepajte o identiteti s primerjavo preostalega tovora. occurred_at je UTC RFC3339. Koristne obremenitve lahko sčasoma pridobijo dodatna polja, zato morajo potrošniki prezreti neznana polja.

Vsaka dostava vključuje tudi isti ID dogodka X-Model-Gate-Event-ID.

Katalog dogodkov

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

Tovor uporablja group_id, group_name, točno decimalno usage, točno decimalno spend_limit, celo število threshold_percent, in 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 ničelna, če ne obstaja stanje HTTP navzgor. Neuspeli/preklicani/potekli asinhroni rezultati lahko vključujejo data.error.

Finančne vrednosti v koristnih obremenitvah povratnega klica so natančni decimalni nizi; niso zaokrožene vrednosti prikaza uporabniškega vmesnika.

Opozorila o pragu se ponovno aktivirajo, ko nadzorovana vrednost zapusti stanje praga. Pragovni delavec oceni pogoje približno enkrat na minuto, zunaj vroče poti sklepanja, tako da povratni klici praga niso milisekundni signal prečkanja v realnem času.

Oblika zahteve

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

Preverjanje podpisa

Izračunajte HMAC-SHA256 nad natančnim nizom <timestamp>.<raw_body> z uporabo skrivnosti povratnega klica, ustvarjene v profilu. Celotna skrivnost je prikazana samo, ko je ustvarjena ali zasukana in je shranjena šifrirana v mirovanju. Primerjajte šestnajstiški podpis v konstantnem času in zavrnite časovne žige zunaj vašega sprejetega okna za ponovno predvajanje. Časovni žig HMAC je specifičen za poskus dostave; the event_id ostane stabilen med ponovnimi poskusi.

Dostava, odgovor in ponovni poskusi

Kateri koli HTTP 2xx odgovor sprejme dogodek. HTTP 200 s praznim telesom je priporočljivo. Napake pri transportu, časovne omejitve in vsak odziv, ki ni 2xx, so napake.

Vsak dogodek ima največ Skupaj 6 poskusov: prvi poskus plus pet ponovnih poskusov. Sledijo neuspeli poskusi 1–5 5 sekund, 30 sekund, 2 minuti, 10 minut in 1 ura. Vsak poskus je težak 15 sekund skupna časovna omejitev. Po šestem neuspelem poskusu dogodek postane terminalen failed in ni nadaljnjega samodejnega ponovnega poskusa. Zastareli zahtevki delavcev se samodejno vrnejo v trajno čakalno vrsto.

Ne opravljajte dolgotrajnega dela, preden se odzovete. Preverite podpis, ohranite/odstranite podvojitve do event_id, vrnitev 2xxin obdelujejo asinhrono.

Sorodna dokumentacija