CartamaticPOS SDK

Conceptos

Modelo mental del SDK: fachada neutral, provider adapters, capacidades y modelos normalizados.

El SDK separa tres niveles:

App server-side

Código Cartamatic que resuelve autorización, credenciales y workflows de producto.

Fachada POS neutral

Contrato estable PosClient que no filtra detalles de Toteat a la app.

Adapter de provider

Implementación específica que traduce métodos normalizados a la API externa.

Fachada neutral

Las apps deben consumir PosClient, no endpoints Toteat directamente.

El cliente expone namespaces de negocio:

NamespaceResponsabilidad
catalogProductos y menú.
tablesMesas y configuración de salón.
shiftsEstado de turnos.
ordersÓrdenes externas, estado, cancelaciones y despacho.
salesVentas, recaudación y reportes por garzón.
fiscalDocumentos fiscales.
inventoryEstado y movimientos de inventario.
accountingMovimientos contables.
purchasesMovimientos de compra.
rawEscape hatch temporal para provider.

Capabilities

Usa pos.capabilities para condicionar workflows.

Evita checks por provider

No distribuyas checks como if (provider === "toteat") por la app. Esa lógica debe quedar encapsulada en el SDK o en un punto acotado.

if (pos.capabilities.sales.getSales) {
  const sales = await pos.sales.getSales({
    startDate: "2026-07-01",
    endDate: "2026-07-15"
  });
}

Modelos normalizados

Los modelos normalizados son conservadores. Muchos campos son null porque aún faltan fixtures reales sanitizadas para confirmar payloads completos.

Ejemplo: PosProduct.

type PosProduct = {
  provider: "toteat";
  providerProductId: string | null;
  name: string | null;
  available: boolean | null;
  price: number | null;
  raw: unknown;
};

raw existe para auditoría y debugging. No lo uses para reemplazar el modelo normalizado en código de producto.

raw no es contrato de producto

raw puede cambiar con el provider. Si un campo se vuelve necesario para producto, promuévelo a modelo normalizado del SDK.

Acceso raw

raw.request() permite pedir paths específicos del provider mientras se implementa o depura una integración.

const payload = await pos.raw.request("products");

Rango de fechas

Los endpoints Toteat de reportes usan fechas públicas YYYY-MM-DD.

El adapter convierte esas fechas al formato wire de Toteat (YYYYMMDD) cuando corresponde.

Los endpoints con rango máximo validan 15 días antes de hacer la request.

En esta página