Suspender una aplicación
POST /v1/applications/{application_id}:suspend · permiso applications:write
Establece el status de la aplicación en suspended. A partir de ese momento, la aplicación no puede obtener nuevos tokens: la autorización, PAR, la autorización de dispositivo, el endpoint de tokens (incluidos el refresh y client_credentials), la introspección y la revocación la rechazan como cliente. La suspensión también pone fin a lo que la aplicación ya posee: KeenAuth revoca sus familias de refresh tokens activas abiertas antes de la suspensión (motivo client_revoked) y marca su client_id, de modo que la introspección y userinfo rechazan los access tokens emitidos a la aplicación antes de ese punto. Un resource server que solo verifica la firma del JWT sigue aceptando ese access token hasta que expira. Las credenciales de cliente de la aplicación se conservan, así que reanudarla no requiere un secreto nuevo. La solicitud no tiene cuerpo (vacío o {}). Suspender una aplicación que ya está suspendida no cambia nada y devuelve la aplicación actual con la misma versión. El cambio se escribe en el registro de auditoría de gestión como application.updated y se publica como los eventos application_changed y application_status_changed.
Solicitud
Cabeceras: If-Match: "<version>" (opcional). Con If-Match, el cambio solo se aplica a esa versión (412 en caso contrario); sin ella, se usa la última versión y la solicitud se reintenta si otro escritor modifica la aplicación al mismo tiempo. Envía una cabecera Idempotency-Key para que los reintentos sean seguros.
| Parámetro | En | Obligatorio | Descripción |
|---|---|---|---|
application_id |
path | sí | Identificador de la aplicación, con prefijo app_. |
Respuesta
200 OK con la aplicación ("status": "suspended") y su ETag.
Errores
Todo error es un cuerpo application/problem+json con un code estable.
| HTTP | code |
Cuándo |
|---|---|---|
| 400 | malformed_request, unknown_field |
Se envió un cuerpo que no es JSON válido o tiene un campo. |
| 401 | unauthenticated |
La clave de API falta, no es válida o ha sido revocada. |
| 403 | insufficient_permissions |
La clave no tiene el permiso applications:write. |
| 404 | not_found |
La aplicación no existe en este entorno (o el identificador está mal formado). |
| 412 | precondition_failed |
La versión en If-Match está desactualizada. |
| 429 | rate_limited |
Se superó el límite de frecuencia; respeta Retry-After. |
| 503 | service_unavailable |
Una dependencia no está disponible temporalmente; reintenta más tarde. |
Ejemplo
curl -X POST https://api.eu.keenauth.com/v1/applications/app_6f8d0cjgbmf0gtn2rg6pscp3cg:suspend \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY" \
-H "Idempotency-Key: $(uuidgen)"
CLI: keenauth applications suspend app_6f8d0cjgbmf0gtn2rg6pscp3cg --yes