B2BB2B LLM

Reapeluri

Primiți evenimente semnate, idempotente de la server la server și rezultate asincrone finalizate.

Reapeluri

Configurați o adresă URL de apel invers în Profil → Apeluri inverse și rezultate asincrone. Model Gate trimite HTTPS POST solicitări pentru notificări de cont activate și solicitări de inferență asincrone native finalizate. Livrarea apelurilor inverse este independentă de procesarea inferenței și rulează printr-o coadă durabilă dedicată de lucrători Model Gate.

Adresa URL de apel invers și securitate de ieșire

Utilizați un punct final HTTPS accesibil public. Validarea URL-ului de apel invers este o limită de securitate de ieșire. Intervalele IP Loopback, private, link-local, NAT de calitate operator, documentație/test, multicast, nespecificate și rezervate sunt respinse. Numele de gazdă este validat când este salvat și din nou în timpul livrării; redirecționările sunt revalidate. Nu îndreptați apelurile înapoi către serviciile interne sau redirecționările către rețele private.

Plic comun pentru eveniment

Fiecare apel invers folosește același plic:

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

event_id este stabil pentru fiecare reîncercare a unui eveniment logic. Deduplicați livrările de către event_id; nu deduceți identitatea comparând restul sarcinii utile. occurred_at este UTC RFC3339. Încărcările utile pot obține câmpuri suplimentare în timp, așa că consumatorii trebuie să ignore câmpurile necunoscute.

Fiecare livrare include, de asemenea, același ID de eveniment în X-Model-Gate-Event-ID.

Catalog de evenimente

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

Sarcina utilă folosește group_id, group_name, zecimală exactă usage, zecimală exactă spend_limit, întreg 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 este null atunci când nu există nicio stare HTTP în amonte. Rezultatele asincrone eșuate/anulate/expirate pot include data.error.

Valorile financiare din încărcăturile utile de apel invers sunt șiruri zecimale exacte; nu sunt valori de afișare rotunjite în UI.

Alertele de prag sunt rearmate după ce valoarea monitorizată părăsește starea de prag. Lucrătorul de prag evaluează condițiile aproximativ o dată pe minut, în afara căii fierbinți de inferență, astfel încât apelurile inverse ale pragului nu sunt un semnal de trecere în milisecunde în timp real.

Format de solicitare

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

Verificarea semnăturii

Calculați HMAC-SHA256 peste șirul exact <timestamp>.<raw_body> folosind secretul de apel invers generat în Profil. Secretul complet este afișat numai atunci când este generat sau rotit și este stocat criptat în repaus. Comparați semnătura hexazecimală în timp constant și respingeți marcajele de timp în afara ferestrei de redare acceptate. Timpul HMAC este specific unei încercări de livrare; cel event_id rămâne stabil pe parcursul reîncercării.

Livrare, răspuns și reîncercări

Orice HTTP 2xx răspunsul acceptă evenimentul. HTTP 200 cu corpul gol este recomandat. Erorile de transport, timeout-urile și fiecare răspuns non-2xx sunt eșecuri.

Fiecare eveniment are cel mult 6 încercări în total: încercarea inițială plus cinci reîncercări. Încercările eșuate 1–5 sunt urmate de 5 secunde, 30 de secunde, 2 minute, 10 minute și 1 oră. Fiecare încercare are un greu 15 secunde timeout general. După a șasea încercare eșuată, evenimentul devine terminal failed și nu mai există o nouă încercare automată. Cererile lucrătorilor învechite sunt returnate automat la coada durabilă.

Nu efectuați lucrări de lungă durată înainte de a răspunde. Verificați semnătura, persistați/deduplicați prin event_id, întoarce-te 2xxși procesează asincron.

Documentatia aferenta