ai
POST /v1/ai/proposals/{proposalId}/decision
Approve or reject one proposal.
Аутентификација
Пошаљите API кључ као bearer токен. Ова крајња тачка не наводи конкретну дозволу у спецификацији, па свом кључу доделите најмања неопходна овлашћења и проверите одговор уместо да претпостављате.
Ова крајња тачка не прихвата id организације. Ваш кључ већ идентификује организацију којој припада, а одговор је ограничен на њу.
Испробајте
Замените све што је у угластим заградама сопственим вредностима, а чувар места кључа кључем са своје контролне табле.
curl -X POST https://api.zinndigital.com/v1/ai/proposals/{proposalId}/decision \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "decision": <string<approve, reject>> }'Пријављени сте? API конзола на вашој контролној табли попуњава ваш прави id организације и ваш сопствени кључ, и покреће захтев према живом API-ју како бисте могли да видите стварни одговор. Отворите ову крајњу тачку у API конзоли
Детаљи
Approving APPLIES the action, under the approver's own permissions. The caller must hold the permission the action itself requires, in the proposal's own organization — so approving can never reach further than the approver could reach by hand. A caller without it gets a 404, never a 403: answering "forbidden" would confirm the proposal exists. ⛔ Not idempotent and not retryable. A second approval of an already-decided proposal is a 422, which is the correct answer — a retry that applied the change twice would be a second cache purge or a second policy write nobody asked for.
Параметри
| Назив | Тип | Обавезно | Шта је ово |
|---|---|---|---|
proposalId (path) | Uuid | Да | — |
Тело захтева
| Назив | Тип | Обавезно | Шта је ово |
|---|---|---|---|
decision | string<approve, reject> | Да | — |
reason | string | Не | — |
Одговор
| Назив | Тип | Обавезно | Шта је ово |
|---|---|---|---|
id | Uuid | Да | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
action | string | Да | — |
conversation_id | Uuid | Не | The AI conversation this came out of, or null for one raised by a scheduled review. ⭐ Lets a chat surface show its own suggestions without a second endpoint, and lets /ai say… |
action_title | string | Да | — |
target_label | string | Не | — |
rationale | string | Не | Why, citing the measurement. This is what a person reads before approving. |
state | AgentProposalState | Да | — |
mode | AgentProposalMode | Да | How an approved proposal executes — decided by the authority ladder at the moment of approval, never frozen when the proposal was written. attended is a person clicking;… |
reversibility | string<automatic, self_healing, manual> | Не | Whether this change can be put back, carried on the proposal itself so a client rendering an undo control does not have to join this list against the capability catalogue — a… |
approval_means | string | Не | — |
outcome | string | Не | — |
proposed_by | string | Не | — |
created_at | string | Да | — |
decided_at | object | Не | — |
applied_at | object | Не | — |
reverted | boolean | Не | — |
Грешке које ова крајња тачка може вратити
401 · 404 · 422 · 429