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​

:::warning Sin autenticación en el controlador ApiKeyController no declara @Auth(), @UseGuards ni @RequirePermission, y el snapshot no registra ningún guard global (APP_GUARD). Según el código, estas rutas no exigen sesión. Conviene confirmar si la protección ocurre fuera de la aplicación. :::

MétodoRutaPermisoDescripción
POST/api/v1/api-keys/createNingunoCrea una API key
GET/api/v1/api-keys/get-allNingunoLista API keys
GET/api/v1/api-keys/get-one/:idNingunoObtiene una key
GET/api/v1/api-keys/by-tenant/:tenantIdNingunoLista las keys de un tenant
PATCH/api/v1/api-keys/update/:idNingunoActualiza (activar/desactivar, cambiar expiración)
DELETE/api/v1/api-keys/remove/:idNingunoElimina 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.