Answer one entry of an open review
const url = 'https://api.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/access-reviews/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/decisions';const options = { method: 'POST', headers: { cookie: 'katara_session=<katara_session>', 'Idempotency-Key': '2489E9AD-2EE2-8E00-8EC9-32D5F69181C0', 'X-Katara-CSRF': '1', 'Content-Type': 'application/json' }, body: '{"ordinal":1,"decision":"keep"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/access-reviews/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/decisions \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: 2489E9AD-2EE2-8E00-8EC9-32D5F69181C0' \ --header 'X-Katara-CSRF: 1' \ --cookie katara_session=<katara_session> \ --data '{ "ordinal": 1, "decision": "keep" }'Requires current locus:audit:read permission and an owner or administrator signed in as a person; API keys, service identities and workloads are refused, because a review nobody is accountable for is a form. Reviews cover organization membership, service identities, team seats, keys and grants for this environment. Recording a decision to remove access does not remove it: a worker revoking a customer’s access on a schedule would be a worse problem than the one a review solves, so the review refuses to close while what it named still holds access.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”Browser cookie mutations require value 1 and an allowed Origin. Session bearer clients may omit this header.
Required for cookie-authenticated changes. Use the UUID of the account that loaded the application. A different current cookie account returns account_changed before the handler runs. Session bearer and API key clients do not require this header.
Request Bodyrequired
Section titled “Request Bodyrequired”One answer for one entry, taken once. A reviewer who changes their mind opens the next review rather than rewriting this one. Recording remove does not remove anything; it is what the review then waits for.
object
Responses
Section titled “Responses”Answer one entry of an open review.
A review freezes who holds what at the moment it opens and closes only once every entry has a decision and the entries somebody chose to remove no longer hold access. Nothing here removes anything.
object
Example
{ "closed_by": "", "decisions_digest": ""}Authority or cookie account changed, or a review is already open. Reinspect before a new intent. Preserve the original key to recover an uncertain committed operation.
default
Section titled “default”Request rejected or unavailable.
object
object
Stable; branch on it. Any operation can answer invalid_request, with param naming the refused field when there is one; human_session_required, when an API key, service account or workload calls an operation only a signed-in person may perform; reauthentication_required, when a person’s sign-in is too old for the operation; permission_denied; route_not_found and method_not_allowed, when no operation matches the path or method; and feature_unavailable, when the operation’s service is not enabled on this deployment.
The request field a refusal is about, such as the agent_id or run_id query parameter; null when the refusal is not about one field.
Example
{ "error": { "action": "sign_in" }}