Módulo API Key
src/app/modules/api-key/
Gestiona las API Keys para clientes externos (integraciones de terceros).
Modelo — ApiKey
| Campo | Tipo | Descripción |
|---|---|---|
_id | ObjectId | ID de MongoDB |
code | string | Hash bcrypt de la key real |
isActive | boolean | Estado activo/inactivo |
dateExpiration | Date | Fecha de expiración |
tenantId | ObjectId → Tenant | Tenant propietario |
createdAt | Date | — |
updatedAt | Date | — |
caution
La key real nunca se almacena. Solo se guarda el hash. Al crear una API Key, la key en texto plano solo se retorna una vez en la respuesta de creación.
Endpoints
| Método | Ruta | Auth | Descripción |
|---|---|---|---|
GET | /api/v1/api-keys | @Auth() | Lista API keys |
GET | /api/v1/api-keys/:id | @Auth() | Obtiene una key |
POST | /api/v1/api-keys | @Auth() | Crea una API key |
PATCH | /api/v1/api-keys/:id | @Auth() | Actualiza (activar/desactivar, cambiar expiración) |
DELETE | /api/v1/api-keys/:id | @Auth() | Elimina una key |
DTOs
CreateApiKeyDto
{
tenantId: string // UUID del tenant
dateExpiration: Date
}
UpdateApiKeyDto
{
isActive?: boolean
dateExpiration?: Date
}
Cómo usa el cliente la API Key
El cliente envía la key en el body de cada request protegido por @ApiKeyAuth():
{ "apiKey": "key-en-texto-plano" }
El ApiKeyGuard la hashea y busca en BD.