API Reference
Base URL: http://HOST:PORT/api/v1
Auth header: x-api-key: <accessToken> (para rutas con @Auth())
Docs interactivos: http://HOST:PORT/api/docs (Swagger, solo en non-production)
Auth
| Método | Endpoint | Auth | Body |
|---|---|---|---|
POST | /auth/login | No | { email, password } |
POST | /auth/frame-login | No | { token, tenantId } |
GET | /auth/me | Sí | — |
Users
| Método | Endpoint | Auth |
|---|---|---|
GET | /users | Sí |
GET | /users/:id | Sí |
POST | /users | Sí |
PATCH | /users/:id | Sí |
DELETE | /users/:id | Sí |
Tenants
| Método | Endpoint | Auth |
|---|---|---|
GET | /tenants | Sí |
GET | /tenants/:id | Sí |
POST | /tenants | Sí |
PATCH | /tenants/:id | Sí |
DELETE | /tenants/:id | Sí |
POST | /tenants/:id/tokens | Sí |
API Keys
| Método | Endpoint | Auth |
|---|---|---|
GET | /api-keys | Sí |
GET | /api-keys/:id | Sí |
POST | /api-keys | Sí |
PATCH | /api-keys/:id | Sí |
DELETE | /api-keys/:id | Sí |
RBAC (Roles, Permisos, Módulos)
| Método | Endpoint | Auth |
|---|---|---|
GET/POST/PATCH/DELETE | /modules | Sí |
GET/POST/PATCH/DELETE | /roles | Sí |
GET/POST/PATCH/DELETE | /permissions | Sí |
GET/POST/PATCH/DELETE | /role-permissions | Sí |
Contacts
| Método | Endpoint | Auth |
|---|---|---|
GET | /contacts | Sí |
GET | /contacts/:id | Sí |
POST | /contacts | Sí |
PATCH | /contacts/:id | Sí |
DELETE | /contacts/:id | Sí |
POST | /contacts/:id/labels | Sí |
Labels
| Método | Endpoint | Auth |
|---|---|---|
GET | /labels | Sí |
GET | /labels/:id | Sí |
POST | /labels | Sí |
PATCH | /labels/:id | Sí |
DELETE | /labels/:id | Sí |
Tickets
| Método | Endpoint | Auth |
|---|---|---|
GET | /tickets | Sí |
GET | /tickets/:id | Sí |
PATCH | /tickets/:id | Sí |
DELETE | /tickets/:id | Sí |
Messages
| Método | Endpoint | Auth |
|---|---|---|
GET | /messages | Sí |
GET | /messages/:id | Sí |
POST | /messages | Sí |
PATCH | /messages/:id | Sí |
DELETE | /messages/:id | Sí |
Files
| Método | Endpoint | Auth | Notes |
|---|---|---|---|
POST | /files/upload | Sí | multipart/form-data |
GET | /files/:id | Sí | Metadatos |
DELETE | /files/:id | Sí | Elimina BD + storage |
Quick Responses
| Método | Endpoint | Auth |
|---|---|---|
GET | /quick-responses | Sí |
GET | /quick-responses/:id | Sí |
POST | /quick-responses | Sí |
PATCH | /quick-responses/:id | Sí |
DELETE | /quick-responses/:id | Sí |
Chat (WebSocket)
Conexión: ws://HOST:PORT/chat
Ver documentación completa del Chat.
Connections
Rutas reales (CRUD_ROUTES), todas con @Auth() + permiso CONNECTION_*. Ver Connection.
| Método | Endpoint | Permiso |
|---|---|---|
POST | /connections/create | CONNECTION_CREATE |
GET | /connections/get-all | CONNECTION_READ |
GET | /connections/get-one/:id | CONNECTION_READ |
PATCH | /connections/update/:id | CONNECTION_UPDATE |
PATCH | /connections/regenerate-token/:id | CONNECTION_UPDATE |
DELETE | /connections/remove/:id | CONNECTION_DELETE |
POST | /connections/whatsapp/:id/start | CONNECTION_UPDATE |
DELETE | /connections/whatsapp/:id/logout | CONNECTION_DELETE |
GET | /connections/whatsapp/:id/status | CONNECTION_READ |
Meta (Instagram / Messenger)
Ver Meta.
| Método | Endpoint | Auth | Notas |
|---|---|---|---|
GET | /webhooks/meta/:channelType | Token de verificación | hub.mode, hub.verify_token, hub.challenge; responde text/plain; :channelType = instagram | facebook |
POST | /webhooks/meta/:channelType | Firma x-hub-signature-256 | Responde 200 sin cuerpo; encola el evento |
POST | /meta/oauth/instagram/authorize | Sí + CONNECTION_CREATE | Body { connectionId?, departmentIds? } → { data: { url } } |
GET | /meta/oauth/instagram/callback | state JWT | Redirige (302) a <FRONTEND_URL>/connections?meta=… |
Los webhooks y el callback no usan el formato de respuesta estándar (@RawResponse()) y no aparecen en Swagger.
note
Las tablas de arriba (Auth, Users, Messages, etc.) son una vista simplificada; las rutas reales de cada módulo (/create, /get-all, /get-one/:id, /update/:id, /remove/:id) están en la página de cada módulo.