Quitar una unidad organizativa manual
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.
curl --fail-with-body -X DELETE 'https://app.openlatch.ai/api/public/v1/org-units/<unit_id>' \ -H "Authorization: Bearer $OPENLATCH_API_KEY"import jsonimport osimport urllib.request
request = urllib.request.Request( 'https://app.openlatch.ai/api/public/v1/org-units/<unit_id>', method='DELETE', headers={ 'Authorization': 'Bearer ' + os.environ['OPENLATCH_API_KEY'], },)with urllib.request.urlopen(request) as response: text = response.read().decode() print(json.dumps(json.loads(text), indent=2) if text else response.status)#!/usr/bin/env bashset -euo pipefail
curl -sS --fail-with-body -X DELETE 'https://app.openlatch.ai/api/public/v1/org-units/<unit_id>' \ -H "Authorization: Bearer $OPENLATCH_API_KEY" | jq .$headers = @{ Authorization = "Bearer $env:OPENLATCH_API_KEY"}Invoke-RestMethod -Method DELETE -Uri 'https://app.openlatch.ai/api/public/v1/org-units/<unit_id>' -Headers $headers | ConvertTo-Json -Depth 20Autorización
Sección titulada «Autorización»| Rol en la organización | Este punto de conexión |
|---|---|
owner | Permitido |
admin | Permitido |
editor | No permitido |
viewer | No permitido |
Una clave tiene el rol que su propietario ocupa en la organización. Consulte Autenticación.
Ámbito de la clave de API: org:write
Parámetros de ruta
Sección titulada «Parámetros de ruta»| Parámetro | Tipo | Descripción |
|---|---|---|
unit_id | string (uuid) | Obligatorio. |
Parámetros de consulta
Sección titulada «Parámetros de consulta»| Parámetro | Tipo | Descripción |
|---|---|---|
move_policies | boolean | Move the zone's policies to the nearest zone above instead of deleting them. |
dry_run | boolean | Answer the impact and change nothing. |
Parámetros de encabezado
Sección titulada «Parámetros de encabezado»| Parámetro | Tipo | Descripción |
|---|---|---|
Idempotency-Key | string or null | Optional. 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. |
Respuesta
Sección titulada «Respuesta»- 200 OK — la llamada se completó correctamente.
- 401 Unauthorized —
UNAUTHORIZED - 402 Payment Required —
license_expired - 403 Forbidden —
FEATURE_DISABLED,FORBIDDEN,INSUFFICIENT_SCOPE - 404 Not Found —
NOT_FOUND,ZONE_NOT_FOUND - 409 Conflict —
DIRECTORY_OWNED,IDEMPOTENCY_IN_PROGRESS,LOOSENS_LAYER,ROOT_UNIT,ROOT_ZONE,SAME_LAYER_CONFLICT,UNIT_CYCLE,UNIT_EXISTS - 422 Unprocessable Content —
DEPTH_EXCEEDED,IDEMPOTENCY_KEY_REUSED,INVALID_ID,INVALID_NAME,VALIDATION_ERROR - 429 Too Many Requests —
TOO_MANY_REQUESTS - 500 Internal Server Error —
INTERNAL_SERVER_ERROR,tenant_isolation_violation - 503 Service Unavailable —
ENGINE_UNAVAILABLE,FEATURE_STATE_UNAVAILABLE,PROOF_UNAVAILABLE,SERVICE_UNAVAILABLE
Ejemplo de respuesta
Sección titulada «Ejemplo de respuesta»{ "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}