API REST
Endpoints disponibles para integración con ODECIS
Todos los endpoints requieren autenticación JWT. Incluye el header Authorization: Bearer <token> en cada petición.
Base URL: https://api.odecis.com
Productos
/productsLista todos los productos de tu organización
Params: ?page=1&limit=20&search=texto&categoryId=uuid
/products/:idObtiene el detalle de un producto específico
/productsCrea un nuevo producto
/products/:idActualiza un producto existente
/products/:idElimina un producto (soft delete)
Ejemplo: Crear producto
curl -X POST https://api.odecis.com/products \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"name": "Laptop HP ProBook",
"sku": "LAP-HP-001",
"price": 2499.90,
"cost": 1800.00,
"categoryId": "uuid-categoria",
"trackStock": true
}'Inventario
/stockLista el stock actual de todos los productos
Params: ?locationId=uuid&lowStock=true
/stock/:productIdStock de un producto en todas las ubicaciones
/adjustmentsCrea un ajuste de inventario (entrada/salida)
/adjustmentsLista ajustes de inventario
/transfersLista transferencias entre ubicaciones
/transfersCrea una transferencia entre ubicaciones
Ventas
/sales-ordersLista órdenes de venta
Params: ?status=pending&from=2025-01-01&to=2025-12-31
/sales-orders/:idDetalle de una orden de venta
/sales-ordersCrea una nueva orden de venta
/sales-orders/:id/statusActualiza el estado de una orden
Clientes
/customersLista todos los clientes
Params: ?search=nombre&type=natural|juridica
/customers/:idDetalle de un cliente
/customersCrea un nuevo cliente
/customers/:idActualiza un cliente
Facturación Electrónica
/facturacion/comprobantesLista comprobantes electrónicos emitidos
Params: ?tipo=01|03|07&from=2025-01-01
/facturacion/comprobantes/:idDetalle de un comprobante con XML/PDF
/facturacion/emitirEmite un nuevo comprobante electrónico
Formato de respuesta
Todas las respuestas siguen este formato:
// Éxito (200, 201)
{
"id": "uuid",
"name": "...",
// ... datos del recurso
}
// Lista con paginación
{
"data": [...],
"meta": {
"total": 150,
"page": 1,
"limit": 20,
"totalPages": 8
}
}
// Error (400, 401, 403, 404, 500)
{
"statusCode": 400,
"message": "Descripción del error",
"error": "Bad Request"
}