Toteat
Cobertura del adapter Toteat, endpoints, autenticación, límites y estado de estabilidad.
Toteat es el primer provider implementado por el SDK.
Cobertura actual
Toteat declara todos los métodos actuales como disponibles, pero algunas áreas siguen normalizadas de forma conservadora hasta validar más fixtures reales.
Base URLs
| Environment | URL |
|---|---|
production | https://api.toteat.com/mw/or/1.0/ |
development | https://apidev.toteat.com/mw/or/1.0/ |
También se puede inyectar baseUrl para tests o entornos controlados.
Autenticación
Toteat recibe credenciales como query params:
| SDK | Query param Toteat |
|---|---|
restaurantId | xir |
localId | xil |
userId | xiu |
apiToken | xapitoken |
Por eso el SDK debe ser server-side y las URLs deben redactarse antes de logging.
Credenciales en query string
xapitoken, xir, xil y xiu son sensibles. Nunca loggees URLs Toteat sin redacción.
Mapping de endpoints
| SDK | HTTP | Path Toteat | Query/body relevante |
|---|---|---|---|
catalog.getProducts | GET | products | activeProducts |
tables.getTables | GET | tables | credenciales |
shifts.getCurrentShiftStatus | GET | shiftstatus | credenciales |
orders.getOrderStatus | GET | orderstatus | ic, body_detail_type |
orders.createOrder | POST | orders | body order, query orderDetail |
orders.notifyDispatch | POST | orders/dispatch | body despacho |
orders.getCancellationReport | GET | orders/cancellation-report | start_date, end_date |
sales.getSales | GET | sales | ini, end, detail_cancel_order |
sales.getSalesByWaiter | GET | salesbywaiter | initial_date, final_date |
sales.getCollection | GET | collection | date |
fiscal.getFiscalDocuments | GET | fiscaldocuments | ini, end, doc_type |
inventory.getInventoryState | GET | inventorystate | initial_date, final_date |
accounting.getAccountingMovements | GET | accountingmovements | initial_date, final_date, include_sales |
purchases.createPurchaseMovement | POST | purchasemovements | body compra |
raw.request | GET/POST | path manual | query/body manual |
Capacidades declaradas
pos.capabilities para Toteat declara todos los métodos actuales como disponibles.
Ventas
sales.getSales y sales.getSalesByWaiter tienen maxRangeDays: 15.
Fiscal e inventario
fiscal.getFiscalDocuments e inventory.getInventoryState validan rangos de 15 días.
Contabilidad
accounting.getAccountingMovements también limita el rango máximo a 15 días.
Validaciones del adapter
| Validación | Métodos afectados |
|---|---|
Fecha real YYYY-MM-DD | reportes y sales.getCollection |
| Rango máximo 15 días | ventas, garzones, cancelaciones, fiscal, inventario, contabilidad |
endDate >= startDate | endpoints con rango |
| Timeout positivo | todas las requests |
| Retry no negativo | requests GET con retry |
| HTTP status code válido en retry | requests GET con retry |
Body order objeto no vacío | orders.createOrder |
| Strings no vacíos | orders.notifyDispatch, purchases.createPurchaseMovement |
lineDetails no vacío | purchases.createPurchaseMovement |
Reintentos
Defaults Toteat:
| Opción | Valor |
|---|---|
requestTimeoutMs | 30_000 |
readRetry.maxRetries | 1 |
readRetry.delayMs | 250 |
readRetry.statusCodes | 408, 429, 500, 502, 503, 504 |
Los retries solo se aplican a GET. Las escrituras POST nunca se reintentan automáticamente.
Estado de esquemas
El SDK valida envelopes y normaliza de forma conservadora. Varios samples públicos de Toteat colapsan objetos a {}, por lo que no deben tratarse como schemas completos.
Cómo endurecer schemas
Primero captura payload real, sanitiza fixture, agrega tests de schema y normalizer, y recién después endurece Zod.
| Área | Estado |
|---|---|
| Productos | Envelope validado, normalización conservadora. |
| Mesas | Envelope validado; campos pendientes de fixture real. |
| Turnos | Campos parciales. |
| Órdenes | Acknowledgement y status normalizados de forma conservadora. |
| Ventas | Envelope validado; filas conservadoras. |
| Fiscal | Respuesta directa array; campos parciales. |
| Inventario | Envelope validado; items raw. |
| Contabilidad | Envelope validado; aggregates raw/parciales. |
| Compras | Acknowledgement parcial. |
Legacy
Algunos endpoints aparecen como legacy-only en documentación actual de Toteat. El SDK los implementa porque forman parte de la superficie requerida, pero deben validarse contra ambiente real antes de uso productivo sensible.