pending_approval, brama wstrzymuje wywołanie
narzędzia i powiadamia twój własny system zatwierdzeń poza pasmem. To
powiadomienie to podpisany HTTP POST — firewall webhook payload — a ta strona
dokumentuje jego dokładny kształt, abyś mógł zweryfikować sygnaturę, skierować
zdarzenie i wysłać swoją decyzję z powrotem.
To asynchroniczny brat przepływu zatwierdzeń w konsoli opisanego na stronie
Firewall. Ścieżka
konsoli (recenzent klika zatwierdź/odrzuć) nie potrzebuje żadnego webhooka.
Webhook jest dla sytuacji, gdy chcesz, by maszyna — twój własny bot
ticketowy, akcja Slack lub środowisko wykonawcze agenta — rozstrzygnęła
wstrzymanie. Obie ścieżki są first-writer-wins, więc możesz uruchamiać je obok
siebie.
Webhook to sygnał routingu o najlepszym wysiłku, nie autorytatywny kanał
HITL. Własne długie odpytywanie agenta na
GET /api/v1/firewall/approvals/:id
jest zabezpieczeniem — jeśli powiadomienie zostanie zgubione lub twój endpoint
jest na chwilę wyłączony, wstrzymane wywołanie i tak pojawia się w konsoli i
rozwiązuje się normalnie. Webhook po prostu pozwala maszynie zareagować szybciej,
niż zrobiłby człowiek.1. Ładunek firewall webhook w skrócie
OrcaRouter wysyła POST z kopertą JSON na URL, który skonfigurujesz, podpisaną współdzielonym sekretem. Oto kompletna dostawa — nagłówki i ciało:X-Orca-Event bez parsowania ciała.
2. Pola koperty
event — nazwa zdarzenia
event — nazwa zdarzenia
Zawsze
firewall.approval.pending dla wstrzymania zatwierdzenia. Odbite w
nagłówku X-Orca-Event, abyś mógł kierować przed parsowaniem ciała.workspace_id — przestrzeń robocza pochodzenia
workspace_id — przestrzeń robocza pochodzenia
Całkowite id przestrzeni roboczej, której polityka wstrzymała wywołanie.
Przydatne, gdy jeden endpoint odbiera webhooki z kilku przestrzeni roboczych.
occurred_at — kiedy utworzono wstrzymanie
occurred_at — kiedy utworzono wstrzymanie
Znacznik czasu RFC 3339 / UTC (precyzja nanosekundowa) dla momentu, w którym
brama zakolejkowała zatwierdzenie. Parsowalny przez dowolne standardowe
narzędzia zdarzeń.
data — ładunek zatwierdzenia
data — ładunek zatwierdzenia
Blok, którego twój callback potrzebuje, by rozstrzygnąć bramkę. Pola w
§3.
3. Ładunek data
Blok data niesie wszystko potrzebne, by skierować i rozstrzygnąć wstrzymanie —
celowo bez argumentów narzędzia. Webhook to sygnał routingu; pełny kontekst
wywołania (narzędzie, argumenty, reguła, która odpaliła) żyje w zakładce Approvals
konsoli i logu audytu, gdzie jest kontrolowany dostępem.
| Pole | Typ | Znaczenie |
|---|---|---|
approval_id | string | Id, względem którego wysyłasz swoją decyzję. |
tool_name | string | Wstrzymane narzędzie, np. db.export. |
request_id | string | Żądanie relay, które wywołało wstrzymanie. |
conversation_id | string | Id konwersacji / sesji agenta. |
policy_id | int | Polityka firewalla, która dopasowała. |
rule_id | int | Reguła, która zwróciła pending_approval. |
4. Weryfikacja sygnatury
Każda dostawa jest podpisana, abyś mógł odrzucać podróbki. Nagłówek sygnatury to:secret to sekret webhooka zatwierdzeń, który ustawisz na przestrzeni
roboczej, a raw_body to dokładne bajty ciała żądania. Oblicz HMAC nad
surowymi bajtami — ponowna serializacja sparsowanego JSON zmieni białe znaki i
zepsuje porównanie. Weryfikuj w stałym czasie:
5. Konfiguracja webhooka
Docelowy URL i współdzielony sekret to ustawienia przestrzeni roboczej — ustaw je raz w konsoli (lub przez API ustawień; Developer+). Nie ma zaangażowania operatora ani niczego do wdrożenia.Ustaw URL i sekret
W ustawieniach Firewall ustaw swój endpoint HTTPS jako URL webhooka
zatwierdzeń oraz mocny współdzielony sekret. URL musi być
https:// —
cele w postaci jawnej są odrzucane — a sekret jest tylko-do-zapisu (nigdy nie
jest zwracany przy odczycie; odpowiedź ustawień raportuje tylko, czy jest
ustawiony).Zautoruj regułę pending_approval
Dodaj regułę Firewall, której werdyktem jest
pending_approval (lub użyj
presetu HITL). Zobacz Reguły Firewall.Odbierz i zweryfikuj
Twój endpoint odbiera podpisany POST przy następnym wstrzymanym wywołaniu.
Zweryfikuj sygnaturę (§4), a potem albo
rozstrzygnij przez callback, albo wystaw to dla człowieka.
Wstrzymane wywołanie działa też z żadnym skonfigurowanym webhookiem — po
prostu pojawia się w konsoli dla człowieka do rozstrzygnięcia. A jeśli ustawisz
URL, ale nie sekret, brama pomija dyspozycję całkowicie, ponieważ endpoint
callbacku akceptuje tylko podpisane żądania: powiadomienie, którego nie mógłbyś
uwierzytelnić z powrotem, byłoby bezużyteczne.
6. Callback: rozstrzyganie wstrzymania
Aby zatwierdzić lub odrzucić maszynowo, wyślij POST z powrotem na::id, które odebrałeś jako approval_id, podpisanym tym samym
współdzielonym sekretem. Ciało to decyzja:
| Pole ciała | Wymagane | Wartości |
|---|---|---|
decision | tak | approved lub rejected |
reason | nie | Notatka tekstowa, zapisana w logu audytu. |
approved przepuszcza następną próbę agenta jeden raz — agent ponownie
wysyła oryginalne wywołanie z jednorazowym nagłówkiem
X-OrcaRouter-Firewall-Approval. Decyzja rejected utrzymuje wywołanie
zablokowane.
Rozstrzygnięcie jest idempotentne i first-writer-wins. Jeśli człowiek już
rozstrzygnął wstrzymanie z konsoli — lub przybywa zduplikowany callback —
endpoint zwraca
200 z already_resolved: true, a oryginalna decyzja
obowiązuje. Bezpieczne do ponawiania.7. Stany zatwierdzenia
Wstrzymane wywołanie przechodzi przez te stany; twój callback napędza przejście zpending:
| Stan | Znaczenie |
|---|---|
pending | Oczekuje na decyzję (stan w czasie webhooka). |
approved | Rozstrzygnięte — bramkowane wywołanie może przejść raz. |
rejected | Rozstrzygnięte — bramkowane wywołanie zostaje zablokowane. |
expired | Wstrzymanie przeterminowało się bez decyzji. |
8. Powiązane referencje
Firewall — przepływ HITL
Jak
pending_approval wstrzymuje wywołanie, a agent ponownie wysyła z
jednorazowym nagłówkiem zatwierdzenia.Kody błędów
firewall_approval_pending i pozostałe odpowiedzi HTTP firewalla.Słownik werdyktów
Każdy werdykt firewalla, w tym
pending_approval.API Firewall
Pełna referencja tras konsoli + bramy.
