API Horizonte Contable development

Documentación de los endpoints disponibles. Las rutas inexistentes muestran esta página.

Obtener token (login)

Para consumir los endpoints protegidos primero obtenga su token de acceso. El usuario y la clave se entregan al registrar el consumidor de la API.

POST /login
{
  "usuario": "-su-user-asignado-",
  "clave": "-su-clave-asignada-"
}

Respuesta (200):

{
  "ok": true,
  "mensaje": "Autenticación exitosa",
  "usuario": "Sistema Externo Facturacion",
  "token": "abc123...",
  "expiracion": "2026-09-16 14:30:00"
}

El campo expiracion indica la fecha en que el token deja de ser válido. Cada login renueva la expiración. La duración se configura en .env con API_TOKEN_TTL_DIAS (0 = no expira).

Errores: 400 si faltan credenciales, 401 si son inválidas. Al usar un token vencido la API responde 401 {"error":"Token expirado. Realice un nuevo login"}.

Autenticación

Todos los endpoints protegidos requieren el encabezado con el token obtenido en el login:

Authorization: Bearer <token>

Cada petición queda registrada para auditoría en la tabla api_peticiones.

Endpoints

MétodoRutaDescripciónAcceso
GET/healthEstado de la APIPública
POST/loginAutenticación: obtener el token de accesoPública
POST/facturasRadicar una factura (proveedor asociado al token)Bearer token

Radicar factura

Registra una factura en la cuenta por pagar del proveedor asociado al token. Si el token es de acceso general (sin proveedor asociado), debe indicar id_proveedor en el cuerpo. Acepta valores en formato COP (punto de miles, coma decimal).

POST /facturas
{
  "numero": "001-002-000999",
  "fecha_emision": "2026-09-09",
  "fecha_vencimiento": "2026-10-09",
  "concepto": "Servicio de consultoría",
  "subtotal": "2.000.000,00",
  "iva": "380.000,00"
}

El total se calcula automáticamente como subtotal + iva, no debe enviarse en el cuerpo.

Para tokens de acceso general, incluya además "id_proveedor": 1 en el cuerpo.

Respuesta (201):

{
  "ok": true,
  "mensaje": "Factura radicada correctamente",
  "factura_id": 6,
  "estado": "radicada",
  "subtotal": 2000000,
  "iva": 380000,
  "total": 2380000
}