API para apps móviles
Misma base de datos que el POS web. Autenticación por token; cada respuesta respeta los permisos de la organización.
Cómo autenticarse
POST /api/public/v1/auth/login
{ "email": "usuario@empresa.com", "password": "••••••" }
# después, en cada petición:
Authorization: Bearer <access_token>Todas las rutas (excepto auth) requieren org_id. La paginación usa page y per_page (máx. 100) y devuelve { data, page, per_page, total }. Las ventas se envían con un client_uuid generado en el dispositivo: si se reintenta tras una caída de red, no se duplica.
| Método | Endpoint | Descripción | Parámetros |
|---|---|---|---|
| POST | /api/public/v1/auth/login | Devuelve access_token y refresh_token. Body: { email, password } | — |
| POST | /api/public/v1/auth/refresh | Renueva la sesión. Body: { refresh_token } | — |
| GET | /api/public/v1/me | Perfil y organizaciones del usuario con su rol | — |
| GET | /api/public/v1/catalog/categories | Categorías de la organización | org_id, page, per_page |
| GET | /api/public/v1/catalog/products | Productos y combinados | org_id, search, category_id, warehouse, page, per_page |
| GET | /api/public/v1/inventory | Stock actual por almacén | org_id, low_stock=true, threshold, warehouse, page, per_page |
| GET | /api/public/v1/tables | Mesas y su posición en el plano | org_id, page, per_page |
| GET | /api/public/v1/printers | Impresoras configuradas y su formato | org_id |
| GET | /api/public/v1/sales | Ventas con sus líneas | org_id, from, to, payment_code, page, per_page |
| POST | /api/public/v1/sales | Registra una venta. Body: { org_id, client_uuid, items[], subtotal, tax, total, payment_code, table_id }. Idempotente por client_uuid | — |
| GET | /api/public/v1/reservations | Reservas por rango | org_id, from, to, status, page, per_page |
| POST | /api/public/v1/reservations | Crea una reserva. Body: { org_id, table_id, customer_name, people, reserved_at } | — |
| GET | /api/public/v1/closures | Cierres de caja | org_id, from, to, page, per_page |
| POST | /api/public/v1/closures | Registra un cierre de caja Z | — |
| GET | /api/public/v1/reports/summary | Facturación, tickets y top 5 artículos | org_id, period=day|week|fortnight|month|year |