Conceder acceso al soporte
POST /v1/support-access-grants · permiso support-access-grants:write
Concede al personal de soporte de KeenAuth acceso limitado en el tiempo a este entorno, por ejemplo mientras trabaja en un ticket de soporte. El acceso es de solo lectura (read) o puede además modificar la configuración (read_write_config); el personal de soporte nunca escribe datos de usuarios finales. Cada uso de la autorización y cada acción del personal se registra en el registro de auditoría de gestión, y se publica un evento support_access_grant.created. Las autorizaciones solo pueden crearlas desde el panel un owner o admin que haya vuelto a iniciar sesión en los últimos 5 minutos; las claves de API y los clientes de máquina reciben 403 insufficient_permissions.
Solicitud
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
Idempotency-Key |
header | no | Opcional. 16-64 caracteres [A-Za-z0-9_-]; repetir la misma clave con el mismo cuerpo devuelve la misma autorización. |
scope |
string | sí | read (solo lectura) o read_write_config (también puede modificar la configuración). |
duration_hours |
integer | sí | Duración en horas, 1-72. |
ticket_ref |
string | sí | Referencia del ticket de soporte: 1-200 caracteres ASCII imprimibles, sin espacios al principio ni al final. |
allowed_regions_of_staff |
array | null | no | Solo Enterprise. Solo el personal ubicado en estas regiones (eu, us) puede usar la autorización; si se omite o es null, no hay restricción. |
Cuerpo de la solicitud:
{
"scope": "read",
"duration_hours": 24,
"ticket_ref": "SUP-48213",
"allowed_regions_of_staff": ["eu"]
}
Respuesta
201 Created con la nueva autorización.
{
"id": "sag_01j9xk3m7q8r2s4t6v8w0y2z4a",
"scope": "read",
"status": "active",
"ticket_ref": "SUP-48213",
"allowed_regions_of_staff": ["eu"],
"granted_by": "du_01j9xk2p5n7q9s1t3v5w7y9z1b",
"created_at": "2026-10-12T09:30:00.123456Z",
"expires_at": "2026-10-13T09:30:00.123456Z",
"revoked_at": null
}
Errores
| HTTP | código | Cuándo |
|---|---|---|
| 400 | malformed_request |
El cuerpo no es JSON válido o el Idempotency-Key tiene formato incorrecto. |
| 403 | insufficient_permissions |
La solicitud no se hizo desde el panel por un owner o admin, o la credencial no tiene el permiso requerido. |
| 403 | plan_feature_unavailable |
allowed_regions_of_staff requiere el plan Enterprise. |
| 422 | validation_failed |
Un campo no es válido (scope, duration_hours fuera de 1-72, ticket_ref, allowed_regions_of_staff). |
| 422 | idempotency_key_reuse |
El Idempotency-Key ya se usó con un cuerpo distinto. |
| 401 | unauthenticated |
La credencial falta, no es válida o fue revocada. |
| 429 | rate_limited |
Se superó el límite de frecuencia; vuelva a intentarlo tras el tiempo indicado en Retry-After. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; vuelva a intentarlo tras el tiempo indicado en Retry-After. |
Ejemplo
Crear y revocar son acciones del panel. La solicitud que envía el panel:
POST /v1/support-access-grants
Content-Type: application/json
Idempotency-Key: 2f1c9a7e-5b3d-4e8f-9a6c-1d2e3f4a5b6c
{
"scope": "read",
"duration_hours": 24,
"ticket_ref": "SUP-48213",
"allowed_regions_of_staff": ["eu"]
}