Referencia de la API
Cada ruta que sirve la API de NestJS, quién puede llamarla y cómo funcionan el inicio de sesión, los permisos, los errores, las listas y los límites.
Para el paquete Front + Back
URL base y formato de respuesta
Todas las rutas se sirven bajo el prefijo /api. En local la URL base es http://localhost:8000/api; en un servidor es la dirección de tu API seguida de /api, el mismo valor que el panel lee de NEXT_PUBLIC_API_BASE_URL. Los cuerpos de las peticiones son JSON, salvo la subida. Cada respuesta llega en el mismo sobre:
{
"success": true,
"data": { },
"message": ""
}data contiene el resultado. message es una frase corta que rellenan algunas escrituras, en el idioma de la petición, y está vacío en los demás casos. La comprobación de estado no necesita token:
curl http://localhost:8000/api/health{"success":true,"data":{"status":"ok","database":"up"},"message":""}Hasta que la base de datos responde y contiene sus tablas, responde 503 con "status":"unavailable" y "database":"down". La comprobación de salud de la imagen de Docker lo lee.
Errores
Un fallo mantiene el envoltorio, con success: false y el estado HTTP:
{
"success": false,
"data": null,
"message": "That email and password combination didn't work. Please try again.",
"errors": { "email": ["Enter a valid email address (example@domain.com)."] }
}messagees una frase en el idioma de la petición.errorsse rellena cuando falla la validación, con los problemas por campo. Un campo del cuerpo que la ruta no conoce se rechaza.- Una ruta protegida sin token, o con uno caducado, responde
401; un token sin el permiso responde403.
Listas y paginación
Las rutas de lista aceptan page y page_count (o limit). page_count tiene un máximo de 100; un valor ausente o no válido vuelve al valor por defecto de la ruta, 15 para usuarios y 10 para las demás.
{ "data": [ ], "page": 1, "limit": 15, "total": 15, "totalPages": 1 }Los usuarios salen primero los más recientes por defecto (order=asc lo invierte); los proyectos, primero los actualizados más recientemente; los administradores, primero los más recientes; los ajustes, por categoría; los roles, por nombre.
Idioma
Envía Accept-Language: ar para mensajes en árabe; cualquier otro valor responde en inglés. Los países, permisos, ajustes y nombres de proyecto llevan los dos idiomas como { "en": "…", "ar": "…" } sea cual sea la cabecera, y el cliente elige uno.
Inicio de sesión
Obtén un token
Envía el correo y la contraseña de un administrador. Una API con seed acepta al Super Admin de la guía de instalación.
Terminalcurl -X POST http://localhost:8000/api/auth/login -H "Content-Type: application/json" -d '{"email":"admin@example.com","password":"Admin@123"}'Respuesta{ "success": true, "data": { "access_token": "eyJ…", "token_type": "Bearer", "expires_in": "7d", "admin": { "id": 1, "email": "admin@example.com", "username": "…", "roles": [ ], "permissions": [ ] } }, "message": "Signed in successfully." }Envíalo en cada llamada
Terminalcurl http://localhost:8000/api/auth/me -H "Authorization: Bearer eyJ…"Resultado esperado:
/api/auth/medevuelve al administrador con sesión iniciada con sus roles y permisos.
- Un token dura
JWT_EXPIRATION,7dpor defecto. No hay ruta de renovación: inicia sesión de nuevo. - Un correo incorrecto y una contraseña incorrecta reciben el mismo mensaje
401. - Después de
RATE_LIMIT_LOGINinicios de sesión fallidos (10 por defecto) desde una dirección en 15 minutos,POST /api/auth/loginresponde429hasta que el fallo más antiguo tenga 15 minutos. El recuento se guarda en memoria, así que un reinicio lo borra.
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
POST | /api/auth/login | Cualquiera | Inicia sesión con email y password |
GET | /api/auth/me | Cualquier administrador con sesión iniciada | El administrador con sesión iniciada, con roles y permisos |
GET | /api/health | Cualquiera | Disponibilidad: 200 o 503 |
Permisos
Todas las rutas de abajo necesitan Authorization: Bearer con un token, salvo las marcadas como Cualquiera. La mayoría también necesita un permiso, con nombre module.action; un administrador tiene los permisos de todos sus roles. Los 25 permisos se listan en Pantallas, roles y permisos.
Usuarios
Las personas a las que sirve tu producto, identificadas por username. Eliminar es un borrado lógico.
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
GET | /api/users | Administradores con users.view | Lista, con search, email, phone, country_id, username, first_name, last_name, from_date, to_date y order |
GET | /api/users/statistic | Administradores con users.view | Totales: total, deleted, verified y unverified |
GET | /api/users/deleted | Administradores con users.view | Usuarios eliminados, con los mismos filtros |
GET | /api/users/deleted/:username | Administradores con users.view | Un usuario eliminado |
GET | /api/users/:username | Administradores con users.view | Un usuario |
POST | /api/users | Administradores con users.create | Crear: first_name, last_name, email, password y, opcionalmente, username, phone, profile_picture, country_id |
PATCH | /api/users/:username | Administradores con users.update | Editar cualquiera de esos campos |
PATCH | /api/users/:username/change-password | Administradores con users.update | Definir una contraseña nueva |
POST | /api/users/:username/make-verified | Administradores con users.verify | Marca el correo como verificado |
POST | /api/users/:username/make-unverified | Administradores con users.verify | Marcarlo como no verificado |
POST | /api/users/:username/resend-verification-email | Administradores con users.update | Responde con éxito; no envía ningún correo, listo para tu propio servicio de correo |
DELETE | /api/users/:username | Administradores con users.delete | Borrado lógico |
POST | /api/users/deleted/:username/restore | Administradores con users.restore | Restaurar |
Proyectos
Los proyectos llevan name, description, environment, status (in-progress, ready o blocked), version, image e icon_name opcionales, y translations con un nombre y una descripción en en y en ar.
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
GET | /api/projects | Administradores con projects.view | Lista, con name, status y environment |
GET | /api/projects/statistic | Administradores con projects.view | Totales por estado |
GET | /api/projects/recent | Administradores con projects.view | Los últimos proyectos, limit 5 por defecto |
GET | /api/projects/deleted | Administradores con projects.view | Proyectos eliminados, con name |
GET | /api/projects/:id | Administradores con projects.view | Un proyecto |
POST | /api/projects | Administradores con projects.create | Crear |
PATCH | /api/projects/:id | Administradores con projects.edit | Edita |
DELETE | /api/projects/:id | Administradores con projects.delete | Borrado lógico |
POST | /api/projects/deleted/:id/restore | Administradores con projects.restore | Restaurar |
Tareas rápidas
La lista de tareas del resumen. Cada administrador tiene la suya y no necesita ningún permiso: cada ruta lee y escribe solo las tareas de quien llama. Una tarea es text y completed.
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
GET | /api/tasks | Cualquier administrador con sesión iniciada | Tus tareas, las más recientes primero, con status. Los campos de paginación están junto a data en el sobre, no dentro. |
GET | /api/tasks/history | Cualquier administrador con sesión iniciada | Todas tus tareas, separadas en active y completed |
GET | /api/tasks/stats | Cualquier administrador con sesión iniciada | Tus totales |
GET | /api/tasks/:id | Cualquier administrador con sesión iniciada | Una tarea |
POST | /api/tasks | Cualquier administrador con sesión iniciada | Crear |
PATCH | /api/tasks/:id | Cualquier administrador con sesión iniciada | Edita |
PATCH | /api/tasks/:id/toggle | Cualquier administrador con sesión iniciada | Marcar como hecha o no hecha |
DELETE | /api/tasks/:id | Cualquier administrador con sesión iniciada | Eliminar |
Administradores y tu perfil
Las cuentas que inician sesión en el panel. :id acepta un id o un nombre de usuario.
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
GET | /api/admins | Administradores con admins.view | Lista, con email, name y phone |
GET | /api/admins/statistics | Administradores con admins.view | Totales |
GET | /api/admins/:id | Administradores con admins.view | Un administrador, con roles |
POST | /api/admins | Administradores con admins.create | Crear: first_name, last_name, email, password, password_confirmation y, opcionalmente, phone, profile_picture, country_id |
PATCH | /api/admins/:id | Administradores con admins.edit | Edita |
PATCH | /api/admins/:id/roles | Administradores con admins.assign_roles | Reemplazar los roles: role_ids |
DELETE | /api/admins/:id | Administradores con admins.delete | Eliminar |
PATCH | /api/admins/profile | Administradores con admins.edit | Editar tu propio perfil |
PATCH | /api/admins/profile/password | Cualquier administrador con sesión iniciada | Cambiar tu propia contraseña: current_password, password, password_confirmation |
Roles
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
GET | /api/roles | Administradores con roles.view | Lista, con name, guard_name, created_from y created_to; paginada solo cuando se envían page y page_count |
GET | /api/roles/statistics | Administradores con roles.view | Totales |
GET | /api/roles/select | Administradores con roles.view | Todos los roles, para un campo de selección |
GET | /api/roles/permissions | Administradores con roles.view | Todos los permisos, por módulo |
GET | /api/roles/:id | Administradores con roles.view | Un rol, con sus permisos |
POST | /api/roles | Administradores con roles.create | Crear: name |
PUT | /api/roles/:id | Administradores con roles.edit | Renombrar: name |
POST | /api/roles/:id/permissions | Administradores con roles.assign_permissions | Reemplazar lo que concede el rol: permissions, una lista de nombres de permisos. Los titulares con sesión iniciada reciben el aviso al instante. |
DELETE | /api/roles/:id | Administradores con roles.delete | Eliminar |
Ajustes de la aplicación
Pares de clave y valor con un nombre para mostrar, una descripción, un tipo y una categoría, como site_name, support_email y maintenance_mode.
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
GET | /api/settings | Administradores con settings.view | Lista, con search y category |
GET | /api/settings/:key | Administradores con settings.view | Un ajuste |
PATCH | /api/settings/:key | Administradores con settings.edit | Cambiar su value |
DELETE | /api/settings/:key | Administradores con settings.edit | Eliminarlo |
Países y subidas
| Método | Ruta | Quién puede llamarla | Qué hace |
|---|---|---|---|
GET | /api/helpers/countries | Cualquiera | Los 50 países como { value, label, code, phone_code }, etiquetados en el idioma de la petición |
POST | /api/helpers/upload | Cualquier administrador con sesión iniciada | Sube una imagen como file multipart, con path opcional (la carpeta, uploads por defecto) y for (profile, cover, logo o default) |
La subida acepta una imagen de 10 MB como máximo, la guarda en tu bucket R2 como JPEG de 1920 píxeles de ancho como máximo, con una copia redimensionada según su valor de for, y devuelve sus direcciones: original y, por ejemplo, 250x250. Sin las variables de R2 responde 503 con "Image uploads are not set up on this server yet."
El asistente de IA y sus conversaciones
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
La ruta de streaming del asistente, su lista de modelos y sugerencias, y las conversaciones guardadas.
Servidor MCP
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
El endpoint MCP para agentes de programación y cómo se autoriza.
Actualizaciones de permisos en vivo
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
El namespace de Socket.IO que escucha el panel, su evento y cómo se autoriza una conexión.
Rutas del modo demostración
Incluido con tu compra. Inicia sesión para leerlo o ábrelo en tu descarga.
Las rutas que añade una compilación de demo pública.