Skip to main content

Módulo API Key

src/app/modules/api-key/

Gestiona las API Keys para clientes externos (integraciones de terceros).

Modelo — ApiKey

CampoTipoDescripción
_idObjectIdID de MongoDB
codestringHash bcrypt de la key real
isActivebooleanEstado activo/inactivo
dateExpirationDateFecha de expiración
tenantIdObjectId → TenantTenant propietario
createdAtDate
updatedAtDate
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étodoRutaAuthDescripció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.