API de Integración — Restaurantero Pro
Versión: 1.0.4Base URL:
https://my.restauranteropro.com/api/v1Formato: JSON (inspirado en JSON:API)
Autenticación: Header
X-API-Key
1. Autenticación
Todos los endpoints requieren el header:rpro_test_ durante las pruebas y rpro_live_ en producción.
Errores de autenticación
Verificar conexión — GET /api/v1/ping
Primer endpoint a llamar al configurar una integración nueva. Confirma que la API Key
es válida y regresa información básica de la sucursal.
subscription_status:
Todas las sucursales existentes tienen
subscription_status: "active" hoy — este
campo es informativo, sin ningún cliente afectado actualmente. Se recomienda llamar
a /ping al iniciar sesión/turno y periódicamente durante el día (cada 15-30 min),
no antes de cada venta individual.2. Convenciones generales
Formato de requests y responses
Todos los requests y responses usan JSON con estructura JSON:API:Dinero — siempre en centavos
Fechas y horas
- Fechas:
YYYY-MM-DD - Timestamps: ISO 8601 con timezone:
2026-05-15T23:45:00-07:00 - Hermosillo (sin cambio de horario): usar
-07:00todo el año
Idempotencia — obligatoria en todos los POST de ingesta
Todos losPOST /api/v1/ingest/* requieren el header X-Idempotency-Key.
Para RC: Usa el
identifier UUID del CashRegisterOpening como Idempotency Key.3. Endpoints de Ingesta
Tu POS implementa estos endpoints. Tu sistema llama a estos endpoints para enviarnos datos. Nosotros los procesamos y generamos la inteligencia.
Orden correcto al cerrar un Corte Z
3.1 Corte de caja — POST /api/v1/ingest/cash-register
Registra un corte de caja. Tipos:
- Corte X (
xout): cierre de turno parcial — informativo - Corte Z (
zout): cierre del día — trigger principal que procesa todos los cubos
cash_theoretical y cash_actual son opcionales pero recomendados. Sin ellos, Restaurantero Pro solo puede mostrar la diferencia (cash_variance) sin el desglose completo. La convención de signos es: cash_variance = cash_actual - cash_theoretical — negativo es faltante, positivo es sobrante.202 Accepted:
La respuesta es
202 Accepted — el procesamiento es asíncrono. Usa webhooks (snapshot.completed) para saber cuándo los datos están listos.3.2 Ventas — POST /api/v1/ingest/sales
Body del request:
3.3 Pagos por método — POST /api/v1/ingest/payments
3.4 Líneas de orden — POST /api/v1/ingest/orders
Envía los productos vendidos. Cada línea genera una fila independiente para Top 10 productos, Star Employees y Ventas por categoría.
3.5 Catálogo de platillos — POST /api/v1/ingest/catalog
Sincroniza el catálogo completo del POS con Restaurantero Pro. Usa upsert por item_identifier o item_sku.
Este endpoint se llama una vez al inicio de la integración y luego cada vez que cambie el catálogo. La forma recomendada es un
ItemObserver en RC que dispare el envío automáticamente.Integración Bakery Pro: Sincroniza las categorías PRIMERO usando
POST /api/v1/ingest/categories (sección 3.6) antes de enviar productos. RC Express necesita las categorías para generar el identification correctamente.- Al configurar la integración por primera vez
- Cuando se crea un
Itemnuevo en RC - Cuando se modifica un
Item(precio, nombre, categoría) - Cuando se desactiva un
Item
Response exitoso
200 OK:
3.6 Categorías Bakery Pro — POST /api/v1/ingest/categories
Sincroniza las categorías del catálogo de Bakery Pro hacia RC Express.
Cuándo enviar categorías:
- Al configurar la integración por primera vez
- Cuando se crea una categoría nueva en Bakery Pro
- Cuando se renombra una categoría en Bakery Pro
Response exitoso
200 OK:
3.7 Descuentos — POST /api/v1/ingest/discounts
3.8 Cancelaciones — POST /api/v1/ingest/cancellations
4. Catálogo de errores
5. Checklist de integración
- 1. API Key configurada —
RESTAURANTERO_API_KEYen.envcon prefijorpro_live_ - 2. Branch Identifier correcto — UUID de la sucursal en
RESTAURANTERO_BRANCH_IDENTIFIER - 3. Categorías enviadas (Bakery Pro) —
POST /ingest/categoriescon todas las categorías activas ANTES de enviar productos - 4. Catálogo enviado —
POST /ingest/catalogcon todos los platillos activos al iniciar la integración - 5.
identificationguardado — RC Express devuelveidentificationpor item creado; Bakery Pro lo almacena como SKU - 6. ItemObserver configurado — El catálogo se actualiza automáticamente cuando cambia un Item en RC
- 7. Corte Z detectado — El service se invoca cuando
CashRegisterOpeninges tipozouty statuscompleted - 8. Corte X no envía datos de negocio — Solo
POST /ingest/cash-registerconclosing_type: "xout" - 9. Idempotency Keys únicos — Se usa el
identifierdelCashRegisterOpeningcomo base con sufijos - 10. Montos en centavos — Todos los
*_centsson integers, no decimales - 11.
waiter_nameincluido en cada línea — Requerido para Star Employees - 12.
category_typecorrecto —food,beverage,barootherpor línea - 13. Retry implementado — Al menos 3 intentos con backoff exponencial
- 14. Logging activo — Cada POST exitoso y fallido queda en los logs de RC
- 15. Orden de envío correcto — orders → discounts → cancellations → payments → sales → cash-register
- 16. Prueba con key
rpro_test_— Enviar categorías + catálogo + 3 cortes Z de prueba
6. Flujo completo de integración
6.1 Flujo diario (restaurant_controller)
6.2 Snippet PHP completo
7. Webhooks
8. Módulo Live — Datos en tiempo real
Estos endpoints devuelven el estado actual del turno, no datos históricos. Se referenciaban en el flujo de integración (sección 6.1) pero no estaban documentados — corregido en esta versión.8.1 Ventas del turno en curso
La comparación es siempre contra el mismo día de la semana anterior (ej. martes vs. martes pasado), nunca contra “ayer” — evita comparar un fin de semana contra un día entre semana.
8.2 Saldo de caja en tiempo real
8.3 Alertas del turno activo
8.4 Eventos de mesa en tiempo real — POST /api/v1/live/update
Endpoint opcional. Actívalo cuando quieras alimentar la vista “En vivo” del salón (mesas abiertas, qué llevan pedido, cuánto tiempo llevan) en el dashboard del dueño.
Response:
10. Changelog
v1.0.5 — Julio 2026
- Nueva Sección 8 — Módulo Live — documenta
GET /live/sales/today,GET /live/cash/balanceyGET /live/alerts/active, que ya estaban implementados y referenciados en el flujo de integración (6.1) pero nunca documentados con su forma de respuesta. POST /api/v1/live/update— Nuevo endpoint opcional (sección 8.4) para eventos de mesa en tiempo real (apertura, productos, cierre). Alimenta la vista “En vivo” del dashboard.- Sección 3.1 (Corte de caja) — Agregados los tipos opcionales
cash_theoreticalycash_actualal arreglosummaries, con la convención de signos documentada (cash_variance = cash_actual - cash_theoretical). - Sección 3.4 (Líneas de orden) — Aclarado que
ordered_ates el campo oficial para la hora exacta del pedido (ya documentado desde antes, pero nunca llega poblado en producción) — no se agregó ningún campo nuevo para esto, evitando confundirlo conmeta.sent_at(que tiene un significado distinto: hora de envío del payload completo).
v1.0.4 — Julio 2026
- Sección 1 — Nueva sub-sección “Verificar conexión” — documenta
GET /api/v1/ping, ausente hasta ahora en esta referencia aunque ya estaba en uso real por integradores. - Campo
subscription_statusagregado a la respuesta de/ping(active/suspended/blocked). Hoy informativo — todas las sucursales están enactive, sin ningún cliente afectado. Documenta el comportamiento esperado del POS por cada valor. integracion-rc.mdx— comandorestaurantero:testactualizado para mostrarsubscription_statusen su tabla de verificación.
v1.0.3 — Junio 2026
POST /api/v1/ingest/categories— Nuevo endpoint (sección 3.6) para sincronizar categorías de Bakery Pro con RC Express. Soporta jerarquía padre/hijo viaparent_identifier. RC Express debe devolverrc_express_idpor categoría creada.- Sección 3.5 actualizada — Response de
ingest/catalogahora incluye arrayitemscon campoidentificationgenerado por RC Express para cada item nuevo. Requerido para Bakery Pro. - Checklist actualizado — Puntos 3, 4, 5 actualizados para incluir sync de categorías antes de productos.
- Sección 3.6 (Descuentos) renumerada a 3.7 — Para dar lugar a la nueva sección 3.6 de categorías.
v1.0.2 — Mayo 2026
POST /api/v1/ingest/catalog— Nuevo endpoint para sincronizar el catálogo de platillos del POS.- Sección 3.5 — Documentación completa del endpoint de catálogo con mapeo desde RC.
- Checklist — Actualizado a 14 puntos.
v1.0.1 — Mayo 2026
POST /api/v1/ingest/orders— Agregado campowaiter_namepor línea.- Checklist — Actualizado a 13 puntos.
v1.0.0 — Mayo 2026
Release inicial de la API pública de Restaurantero Pro.Restaurantero Pro — API Documentation v1.0.5
Desarrollado por Restaurant Controller · Hermosillo, Sonora, México
Julio 2026 · Confidencial — Solo para partners autorizados