Download OpenAPI specification:
Documentación oficial de la API de Sistema de Ventas. Esta documentación sirve como "Single Source of Truth" para Frontend, QA y Consumidores Externos.
Endpoints para el flujo completo de autenticación del sistema. Gestiona la obtención del Token Maestro (login), el Token Empresarial (company-access) y el cierre de sesión (logout).
Autentica al usuario con correo y contraseña. Devuelve un Token Maestro y la lista de empresas vinculadas al usuario.
Lógica del frontend según la respuesta:
user.roleSystem es "superadmin" o "soporte" → redirigir al dashboard global.
No requiere Token Empresarial.user.roleSystem es null y companies tiene 1 elemento → el Token Empresarial
ya viene precargado en companies[0].company.auth. Redirigir al dashboard empresarial.user.roleSystem es null y companies tiene más de 1 elemento → todos los
company.auth son null. Mostrar selector de empresa y llamar a POST /auth/company-access.Credenciales para iniciar sesión en el sistema.
| email required | string <email> <= 255 characters Correo electrónico registrado del usuario. |
| password required | string [ 6 .. 24 ] characters Contraseña del usuario. Mínimo 6, máximo 24 caracteres. |
{- "email": "superadmin@valora.com",
- "password": "password123"
}roleSystem = "superadmin", companies = []. Entra directo al dashboard global. No necesita Token Empresarial.
{- "success": true,
- "message": "La sesión se ha iniciado correctamente.",
- "data": {
- "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlblR5cGUiOiJtYXN0ZXIifQ.55WudInmaPffOzq7upm_gPbtuLkj8cNU2-xeSt5gYbE",
- "type": "Bearer",
- "expirationAt": "2026-04-12T13:51:13.802129Z",
- "user": {
- "id": 1,
- "firstName": "Master System",
- "secondName": "Admin",
- "fullName": "Master System Admin",
- "documentType": "CI",
- "documentNumber": "9631256",
- "documentComplement": null,
- "email": "superadmin@valora.com",
- "phone": "59178533899",
- "image": null,
- "roleSystem": "superadmin",
- "state": "enabled",
- "emailVerifiedAt": "2026-04-02T06:11:55.000000Z"
}, - "companies": [ ]
}, - "errors": [ ],
- "meta": { },
- "traceId": "38ab526e-97f2-4ece-9bf5-5977940322f9"
}Genera un Token Empresarial para operar dentro de una empresa específica.
Cuándo usar este endpoint:
Solo cuando el usuario tiene más de una empresa vinculada y todos los company.auth
en la respuesta del login son null. El usuario debe elegir explícitamente con qué empresa
desea operar.
Cómo obtener los valores del body:
companyId → campo companyId de la empresa elegida en companies[] del login.companyUserId → campo companyUserId de ese mismo elemento del array.Resultado: El Token Empresarial recibido reemplaza al Token Maestro como token activo para todos los módulos empresariales (productos, ventas, facturación, clientes, etc.).
Datos para solicitar acceso a una empresa específica. Requiere Token Maestro en el header Authorization.
| companyId required | integer >= 1 ID de la empresa a la que se desea acceder. Debe coincidir con un "companyId" de la lista "companies" retornada en el login. |
| companyUserId required | integer >= 1 ID del vínculo usuario-empresa (campo "companyUserId" de la lista "companies" del login). Identifica la relación exacta entre el usuario y la empresa seleccionada. |
{- "companyId": 2,
- "companyUserId": 2
}{- "success": true,
- "message": "El acceso a la empresa ha sido concedido.",
- "data": {
- "companyId": 2,
- "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlblR5cGUiOiJjb21wYW55IiwiY29tcGFueUlkIjoyfQ.TOKEN_EMPRESA_A",
- "type": "Bearer",
- "expirationAt": "2026-04-17T14:14:49.317991Z"
}, - "errors": [ ],
- "meta": { },
- "traceId": "f392ed62-d94a-4a1a-94c6-4c72f38faf27"
}Revoca la sesión completa del usuario. Invalida el Token Maestro y todos los Tokens Empresariales generados a partir de él en una sola operación.
Comportamiento clave:
401 AUTH_TOKEN_REVOKED.No requiere body. Solo el header Authorization: Bearer <token>.
{- "success": true,
- "message": "La sesión se ha cerrado correctamente.",
- "data": null,
- "errors": [ ],
- "meta": { },
- "traceId": "821b948e-4f63-4d53-baa4-aa6aff665b66"
}