Partner API V1
Endpoint claro para conectar POS externos sin acceso a la base de datos.
WAGMI recibe catalogo y facturas por endpoints versionados. Cada request entra firmado, con idempotencia, staging y auditoria antes de afectar contabilidad o reportes del cliente.
Endpoints
Contrato publico para partners POS.
GET
/api/integrations/v1/toi/health
Validar conexion, capacidades y moneda soportada.
POST
/api/integrations/v1/toi/categories/batch
Sincronizar categorias externas.
POST
/api/integrations/v1/toi/products/batch
Sincronizar productos externos.
POST
/api/integrations/v1/toi/invoices/batch
Recibir facturas cerradas desde un POS externo.
POST
/api/integrations/v1/toi/invoices/void
Anular una factura externa staged.
Headers requeridos
Authorization
Bearer <partner_api_key>
X-WAGMI-Timestamp
ISO-8601 con zona, ejemplo 2026-05-12T14:35:00-04:00
X-WAGMI-Idempotency-Key
Llave unica por intento logico
X-WAGMI-Signature
sha256 HMAC de timestamp.idempotencyKey.rawBody
Ejemplo factura
{
"source": "TOI",
"sentAt": "2026-05-12T10:10:00-04:00",
"invoices": [
{
"externalId": "inv-1001",
"number": "1001",
"issuedAt": "2026-05-12T10:09:00-04:00",
"branchExternalId": "NACO",
"channel": "DINE_IN",
"customer": {
"externalId": "cust-1",
"name": "Cliente final",
"rnc": null,
"phone": null,
"email": null
},
"fiscal": {
"fiscalSource": "NONE",
"ncf": null,
"ecf": null,
"ncfType": null
},
"currency": "DOP",
"subtotal": 480,
"discount": 0,
"tax": 86.4,
"tip": 48,
"total": 614.4,
"lines": [
{
"externalLineId": "line-1",
"productExternalId": "prod-classic-smash",
"name": "Classic Smash",
"quantity": 1,
"unitPrice": 480,
"discount": 0,
"tax": 86.4,
"total": 566.4
}
],
"payments": [
{
"method": "CASH",
"amount": 614.4,
"receivedAt": "2026-05-12T10:09:30-04:00"
}
]
}
]
}Idempotencia y reintentos
Si un partner reintenta el mismo evento, debe mantener la misma `X-WAGMI-Idempotency-Key` y el mismo body. Si el body cambia con la misma llave, WAGMI responde error controlado para evitar duplicados o corrupcion de imports.