Skip to content

Remove a hand-made org unit

DELETE/api/public/v1/org-units/{unit_id}

Manual, non-root units only. Children and every agent accountable to the unit reparent to its parent in one transaction, and the unit is tombstoned rather than removed so the path's history stays honest. A zone the unit carries retires with it, exactly as DELETE /zones/{id} does: its ratified policies are deleted with it, each with its history and audit event (or moved to the nearest zone above with move_policies=true; a same-layer Optimize conflict there answers 409 SAME_LAYER_CONFLICT, a layer the policy would loosen 409 LOOSENS_LAYER), and agents assigned to it by hand are re-pointed to the nearest zone above and stay assigned by hand. dry_run=true answers the impact and writes nothing.

Terminal window
curl --fail-with-body -X DELETE 'https://app.openlatch.ai/api/public/v1/org-units/<unit_id>' \
-H "Authorization: Bearer $OPENLATCH_API_KEY"
Role in the organizationThis endpoint
ownerAllowed
adminAllowed
editorNot allowed
viewerNot allowed

A key carries the role its owner holds in the organization. See Authentication.

API key scope: org:write

ParameterTypeDescription
unit_idstring (uuid)Required.
ParameterTypeDescription
move_policiesbooleanMove the zone's policies to the nearest zone above instead of deleting them.
dry_runbooleanAnswer the impact and change nothing.
ParameterTypeDescription
Idempotency-Keystring or nullOptional. Makes the request safe to retry: the same key and the same request, within 24 hours, returns the stored response with Idempotent-Replayed: true and runs once.
{
"detached_policies": 0,
"moved_agents": 3,
"moved_policies": 0,
"moved_units": 3,
"repointed_by_hand": 0,
"retired_policies": 3,
"stricter_on_target": 0,
"unattached_after": 0
}