Record the resolution of a run's reconciliation
const url = 'https://api.katara.com/katara/v1/orgs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/environments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/runs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/reconciliation';const options = { method: 'POST', headers: { cookie: 'katara_session=<katara_session>', 'Idempotency-Key': 'example', 'X-Katara-CSRF': '1', 'Content-Type': 'application/json' }, body: '{"outcome":"effect_completed","reference":"example","note":"example"}'};
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/runs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/reconciliation \ --header 'Content-Type: application/json' \ --header 'Idempotency-Key: example' \ --header 'X-Katara-CSRF: 1' \ --cookie katara_session=<katara_session> \ --data '{ "outcome": "effect_completed", "reference": "example", "note": "example" }'Owner or admin in a signed-in session only; requires synapse:runs:reconcile. Records what was found about the effect. The resolution is written once and never changed: a repeat with the same key returns it, and a second resolution of the same run is a conflict. Resolving releases the run’s recovery checkpoint unless a hold keeps it. It records a conclusion and moves no money. The run keeps its status, and getRun shows the outcome and when it was recorded.
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”object
Effect_completed: the effect happened. effect_not_completed: it did not. corrective_action: it was put right by hand. cancellation_finalized: the run stays cancelled and nothing more follows.
Where the evidence is: a ticket, a provider receipt, a case number.
What was found.
Responses
Section titled “Responses”The resolution is recorded.
A run that ended awaiting reconciliation: what is needed to decide, and its resolution once there is one.
object
The step whose outcome is unknown: the run’s last.
object
What the person who resolved the reconciliation recorded. Written once and never changed.
object
The reservation behind the effect, in atomic units, for a role that reads billing.
object
One hold tied to the run, in atomic units, for a role that reads billing: the step it belongs to when it belongs to one.
object
Example
{ "mode": "test", "effect": { "kind": "inference" }, "resolution": { "outcome": "effect_completed" }, "accounting": { "purpose": "inference", "state": "held" }, "exposure": [ { "kind": "inference", "purpose": "inference", "state": "held" } ]}The key was used for another request, the state changed, or the cookie account changed. Reinspect before a new intent; keep the key to recover an uncertain reply.
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" }}