- Laravel 11 backend with API REST - React 18 + TypeScript + Vite frontend - Multi-parser architecture for accounting systems (CONTPAQi, Aspel, SAP) - 27+ financial metrics calculation - PDF report generation with Browsershot - Complete documentation (10 documents) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.0 KiB
4. API Reference
Base URL
http://localhost:8000/api
Autenticación
Todos los endpoints (excepto login) requieren token Bearer:
Authorization: Bearer {token}
Endpoints de Autenticación
POST /login
Iniciar sesión
Request:
{
"email": "admin@horux360.com",
"password": "password"
}
Response 200:
{
"user": {
"id": 1,
"nombre": "Administrador",
"email": "admin@horux360.com",
"role": "admin",
"cliente_id": null
},
"token": "1|abc123..."
}
POST /logout
Cerrar sesión (requiere autenticación)
Response 200:
{
"message": "Sesión cerrada exitosamente"
}
GET /user
Obtener usuario actual
Response 200:
{
"id": 1,
"nombre": "Administrador",
"email": "admin@horux360.com",
"role": "admin",
"cliente_id": null,
"cliente": null
}
Endpoints de Giros
GET /giros
Listar giros activos
Response 200:
[
{ "id": 1, "nombre": "Hotelería", "activo": true },
{ "id": 2, "nombre": "Comercio", "activo": true }
]
Endpoints de Clientes
GET /clientes
Listar clientes (filtrado por rol)
Response 200:
[
{
"id": 1,
"nombre_empresa": "Hotel Boutique HSA",
"logo": "logos/abc123.png",
"giro_id": 1,
"moneda": "MXN",
"giro": { "id": 1, "nombre": "Hotelería" }
}
]
POST /clientes
Crear cliente (multipart/form-data)
Request:
nombre_empresa: Hotel Ejemplo
giro_id: 1
moneda: MXN
logo: [archivo imagen]
Response 201:
{
"id": 2,
"nombre_empresa": "Hotel Ejemplo",
"giro_id": 1,
"moneda": "MXN",
"logo": "logos/xyz789.png"
}
GET /clientes/{id}
Obtener cliente con balanzas y reportes
PUT /clientes/{id}
Actualizar cliente
DELETE /clientes/{id}
Eliminar cliente (solo admin)
Endpoints de Balanzas
GET /clientes/{id}/balanzas
Listar balanzas de un cliente
Response 200:
[
{
"id": 1,
"cliente_id": 1,
"periodo_inicio": "2024-01-01",
"periodo_fin": "2024-12-31",
"sistema_origen": "contpaqi",
"status": "completado"
}
]
POST /clientes/{id}/balanzas
Subir balanza (multipart/form-data)
Request:
archivo: [archivo PDF/Excel/CSV]
periodo_inicio: 2024-01-01
periodo_fin: 2024-12-31
Response 201:
{
"id": 2,
"sistema_origen": "contpaqi",
"status": "procesando"
}
GET /balanzas/{id}/cuentas
Listar cuentas de una balanza
Response 200:
[
{
"id": 1,
"codigo": "001-100-000",
"nombre": "ACTIVO CIRCULANTE",
"nivel": 1,
"saldo_final_deudor": 1500000.00,
"saldo_final_acreedor": 0,
"excluida": false,
"es_cuenta_padre": true,
"requiere_revision": false,
"categoria_contable": {
"id": 1,
"nombre": "Activos Circulantes"
}
}
]
PUT /balanzas/{id}/exclusiones
Actualizar cuentas excluidas
Request:
{
"exclusiones": [5, 12, 23]
}
Endpoints de Cuentas
PUT /cuentas/{id}/clasificacion
Corregir clasificación de cuenta
Request:
{
"reporte_contable_id": 1,
"categoria_contable_id": 3,
"requiere_revision": false
}
POST /cuentas/{id}/toggle-exclusion
Alternar exclusión de cuenta
GET /anomalias
Listar cuentas que requieren revisión
Endpoints de Reportes
GET /clientes/{id}/reportes
Listar reportes de un cliente
POST /clientes/{id}/reportes
Generar nuevo reporte
Request:
{
"nombre": "Reporte Anual 2024",
"balanza_ids": [1, 2, 3]
}
Response 201:
{
"id": 1,
"nombre": "Reporte Anual 2024",
"periodo_tipo": "anual",
"status": "completado",
"data_calculada": { ... }
}
GET /reportes/{id}
Obtener reporte con datos calculados
GET /reportes/{id}/pdf
Descargar PDF del reporte
Response: Archivo PDF
DELETE /reportes/{id}
Eliminar reporte
Endpoints de Administración
Requieren rol admin.
Usuarios
GET /admin/usuarios- Listar usuariosPOST /admin/usuarios- Crear usuarioPUT /admin/usuarios/{id}- Actualizar usuarioDELETE /admin/usuarios/{id}- Eliminar usuario
Giros
GET /admin/giros- Listar todos los girosPOST /admin/giros- Crear giroPUT /admin/giros/{id}- Actualizar giroDELETE /admin/giros/{id}- Eliminar giro
Umbrales
GET /admin/umbrales- Listar umbralesPOST /admin/umbrales- Crear umbralPUT /admin/umbrales/{id}- Actualizar umbralDELETE /admin/umbrales/{id}- Eliminar umbral
Reglas de Mapeo
GET /admin/reglas-mapeo- Listar reglasPOST /admin/reglas-mapeo- Crear reglaPUT /admin/reglas-mapeo/{id}- Actualizar reglaDELETE /admin/reglas-mapeo/{id}- Eliminar regla
Códigos de Error
| Código | Descripción |
|---|---|
| 401 | No autenticado |
| 403 | No autorizado |
| 404 | Recurso no encontrado |
| 422 | Error de validación |
| 500 | Error del servidor |
Ejemplo error 422:
{
"message": "The email field is required.",
"errors": {
"email": ["The email field is required."]
}
}