2.5 KiB
API de terceros gestionable (claves de API)
La API pública /skeen/api/v1/* (consumida por Hermes) se autentica con el
método auth='api_key', implementado en
skeen_plataforma/models/ir_http.py. Acepta dos tipos de credencial:
- Clave legacy de Hermes —
ir.config_parameter 'skeen.api.legacy_key', sembrada con el valor históricoskeen_api_key_2026. Tiene todos los alcances (compatibilidad total). - Claves del modelo
skeen.api.key— con alcances (scopes), vencimiento y revocación.
Formato de autenticación
Authorization: Bearer <clave>
X-API-Key: <clave>
?api_key=<clave> (query/form)
Modelo skeen.api.key
| Campo | Descripción |
|---|---|
name |
Nombre de la clave |
prefijo |
Prefijo visible (los primeros 14 caracteres) |
hash |
SHA-256 de la clave (nunca se guarda en claro) |
activo |
Habilitada |
scopes |
Lista JSON de alcances; vacío = todos |
vence |
Fecha de vencimiento (opcional) |
ultimo_uso, usos |
Uso registrado en cada autenticación |
notas, creado_por_login |
Metadatos |
revocada_at, revocada_por |
Revocación |
La clave se muestra una sola vez al crearla (solo se guarda el hash; la comparación es en tiempo constante).
Alcances por endpoint
| Endpoint | Alcance |
|---|---|
POST /skeen/api/v1/available_slots |
citas.read |
POST /skeen/api/v1/create_appointment |
citas.write |
POST /skeen/api/v1/cancel_appointment |
citas.write |
POST /skeen/api/v1/patient_balance |
pacientes.read |
POST /skeen/api/v1/wallet_redeem |
monedero.write |
GET/POST /skeen/api/v1/services |
servicios.read |
Una clave sin el alcance recibe HTTP 403 con mensaje claro. La clave legacy no tiene restricción de alcance.
Las respuestas son JSON plano (no JSON-RPC): códigos 200 correctos,
401/403 para clave ausente/inválida o sin alcance.
Endpoints de gestión
| Método | Ruta | Acceso |
|---|---|---|
| GET | /skeen/frontend/v1/api_keys |
permiso api.claves (admin) |
| POST | /skeen/frontend/v1/api_keys |
permiso api.claves (admin) |
| PUT | /skeen/frontend/v1/api_keys/<id> |
permiso api.claves (admin) |
| POST | /skeen/frontend/v1/api_keys/<id>/revocar |
permiso api.claves (admin) |
UI
Configuración → pestaña API (admin): lista de claves (nombre, prefijo, alcances, último uso, usos, estado), botón "nueva clave" con modal que muestra la clave una vez y botón de copiar, editar y revocar; y documentación breve de los endpoints y del formato de autenticación.