Change the org's name, time zone, payload retention or approval settings
const url = 'http://127.0.0.1:8080/v1/org';const options = { method: 'PATCH', headers: { cookie: '__Host-deedglass_session=<__Host-deedglass_session>', 'Deedglass-Version': '2026-10-01', 'Deedglass-CSRF': 'example', 'Content-Type': 'application/json' }, body: '{"timezone":"Asia/Kolkata"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url http://127.0.0.1:8080/v1/org \ --header 'Content-Type: application/json' \ --header 'Deedglass-CSRF: example' \ --header 'Deedglass-Version: 2026-10-01' \ --cookie __Host-deedglass_session=<__Host-deedglass_session> \ --data '{ "timezone": "Asia/Kolkata" }'Admins and owners change name and timezone; only an owner may send retention_days or settings (an admin gets 403 insufficient_role). Only the fields and keys sent change; settings.approvals is merged into the stored settings. Seals one org.updated admin deed when something changed (data: fields, timezone, and the new retention_days and approvals when sent), none otherwise. Needs the Deedglass-CSRF header.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”The API version (YYYY-MM-DD). Leave it out to use your org’s pinned version (public routes use the latest). An unknown version is 400 api_version_invalid.
The CSRF token from GET /v1/me (it equals the __Host-deedglass_csrf cookie). Every session request that changes state needs it; without it the answer is 403 csrf_failed.
Request Bodyrequired
Section titled “Request Bodyrequired”object
An IANA time zone name such as Asia/Kolkata.
Owner only (S26). Days to keep action payloads; null goes back to the default of 90.
Owner only (S26). Unknown keys are 400 validation_failed with their path as param.
object
object
Example
{ "timezone": "Asia/Kolkata"}Responses
Section titled “Responses”The org, with the deed (null when nothing changed).
object
GET and PATCH /v1/org only (S26, additive): how many days action payloads are kept, the org’s setting or the default of 90. Omitted elsewhere.
GET and PATCH /v1/org only (S26, additive), with defaults applied. Omitted elsewhere.
object
object
Whether emailed approval links can decide (default) or only open the review page.
How much of the request approval emails show (default summary).
Whether the person an action runs on behalf of may countersign it (default deny).
Read only (S29, additive): present and true when the org was made by deedglass dev simulate; omitted otherwise. PATCH /v1/org refuses it.
GET /v1/org only (additive): the Stop all overlay, which the Console’s org-stopped banner reads. Omitted elsewhere.
object
Who turned it on.
Example
{ "object": "org", "status": "active", "settings": { "approvals": { "email_links": "decide", "email_detail": "summary", "self_countersign": "deny" }, "simulated": true }}default
Section titled “default”An error. Every error has this envelope; doc_url explains the code.
object
object
One or more calm sentences with the next step.
The request field, query parameter or header the error is about.
On policy_invalid only. Each problem with its line, code and hint.
One finding about a policy file, with its position and the next step. Codes are stable and listed in docs/POLICY_ERRORS.md. In the policy_invalid error envelope each diagnostic also carries object: policy_diagnostic. The full PolicyDiagnostic schema is in openapi.yaml.
object
One agent action. Its sections mirror the deed’s. status is the one field an agent needs; state is the exact lifecycle state (docs/GATE.md). The Gate’s own responses (POST /v1/actions and its result report) add execution.result and witness.reasons; lists leave both out. The full Action schema is in openapi.yaml.
object
On undo_unavailable only. Every check of the undo, each with its fix. Additive (S23).
One of the twelve safety checks (S23 §3.3). Available means no check failed. The full UndoCheck schema is in openapi.yaml.
object
Example
{ "error": { "type": "invalid_request_error", "code": "not_found", "message": "There's no endpoint at GET /v1/helth. Did you mean /v1/health?", "param": null, "request_id": "req_01j9zr3m5k8q2w7x4t6v0b1c9d", "doc_url": "https://docs.deedglass.com/errors/not_found" }}Headers
Section titled “Headers”This request’s id. Quote it to support; it matches error.request_id.
The API version this response follows.