Leer la lista completa de privilegios concedidos al propietario de un agente
GET/api/public/v1/agents/{agent_id}/ownership/privileges
Every group, admin role and application entitlement the agent's owner holds, with the scope it applies to, whether it was assigned directly or inherited through a group, and whether it is standing or merely PIM-eligible. Ordered admin roles first, then groups, then application entitlements, most-privileged first inside each. Served from stored state — no directory call is made on this path. An agent with no human owner returns an empty list and a null tier rather than a 404: there is no owner to describe, which is an answer.
curl --fail-with-body -X GET 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/ownership/privileges' \ -H "Authorization: Bearer $OPENLATCH_API_KEY"import jsonimport osimport urllib.request
request = urllib.request.Request( 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/ownership/privileges', method='GET', 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 GET 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/ownership/privileges' \ -H "Authorization: Bearer $OPENLATCH_API_KEY" | jq .$headers = @{ Authorization = "Bearer $env:OPENLATCH_API_KEY"}Invoke-RestMethod -Method GET -Uri 'https://app.openlatch.ai/api/public/v1/agents/<agent_id>/ownership/privileges' -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 | Permitido |
viewer | Permitido |
Una clave tiene el rol que su propietario ocupa en la organización. Consulte Autenticación.
Ámbito de la clave de API: agents:read
Parámetros de ruta
Sección titulada «Parámetros de ruta»| Parámetro | Tipo | Descripción |
|---|---|---|
agent_id | string | Obligatorio. |
Parámetros de consulta
Sección titulada «Parámetros de consulta»| Parámetro | Tipo | Descripción |
|---|---|---|
projection | string — one of full, reach | reach returns only the distinct-permission projection, with an empty grant list. |
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 - 422 Unprocessable Content —
INVALID_ID,VALIDATION_ERROR - 429 Too Many Requests —
TOO_MANY_REQUESTS - 500 Internal Server Error —
INTERNAL_SERVER_ERROR,tenant_isolation_violation - 503 Service Unavailable —
FEATURE_STATE_UNAVAILABLE,SERVICE_UNAVAILABLE
Campos de la respuesta
Sección titulada «Campos de la respuesta»| Campo | Tipo | Descripción |
|---|---|---|
capabilities | object | |
evaluated_at | string (date-time) or null | |
grants | array of object | |
grants[].display_name | string or null | |
grants[].external_id | string | Obligatorio. |
grants[].kind | string | Obligatorio. |
grants[].permissions | array of string | |
grants[].scope | string or null | |
grants[].source | string | Obligatorio. |
grants[].tier | string | Obligatorio. |
reach | array of object | |
reach[].permission | string | Obligatorio. |
reach[].tier | string or null | |
tier | string or null |
Ejemplo de respuesta
Sección titulada «Ejemplo de respuesta»{ "capabilities": {}, "evaluated_at": "2026-01-15T14:32:05Z", "grants": [ { "display_name": "release-bot", "external_id": "3f6c1a2e-8b4d-4c1f-9a7e-0d5b2c8e4f10", "kind": "string", "permissions": [ "string" ], "scope": "string", "source": "string", "tier": "string" } ], "reach": [ { "permission": "string", "tier": "string" } ], "tier": "string"}