Saltar al contenido principal

Vista General del API

El POS de Desktop Kitchen expone un API REST para todas las operaciones. Esta vista general cubre la estructura del API para desarrolladores e integraciones.

URL Base

https://pos.desktop.kitchen/api

Para acceso especifico de tenant, incluye el header X-Tenant-ID o usa el subdominio del tenant.

Autenticacion

El API usa dos sistemas de autenticacion:

Autenticacion por PIN de Empleado

Para operaciones del POS (pedidos, pagos, consultas de menu):

  • Header: x-employee-id: <employee_id>
  • Usado por el frontend del POS

Autenticacion JWT de Propietario

Para gestion de tenant y facturacion:

  • Header: Authorization: Bearer <jwt_token>
  • Obtiene tokens via POST /api/auth/login

Rutas del API

MetodoEndpointDescripcion
GET/api/menu/categoriesListar todas las categorias
GET/api/menu/itemsListar todos los articulos del menu
POST/api/menu/itemsCrear un articulo del menu
PUT/api/menu/items/:idActualizar un articulo del menu
DELETE/api/menu/items/:idEliminar un articulo del menu

Pedidos

MetodoEndpointDescripcion
GET/api/ordersListar pedidos
POST/api/ordersCrear un pedido
PUT/api/orders/:id/statusActualizar estado del pedido
GET/api/orders/:idObtener detalles del pedido

Pagos

MetodoEndpointDescripcion
POST/api/payments/create-intentCrear Stripe PaymentIntent
POST/api/payments/refundReembolsar un pago

Inventario

MetodoEndpointDescripcion
GET/api/inventoryListar articulos de inventario
POST/api/inventoryAgregar articulo de inventario
PUT/api/inventory/:idActualizar stock

Empleados

MetodoEndpointDescripcion
GET/api/employeesListar empleados
POST/api/employeesCrear empleado
POST/api/employees/loginInicio de sesion por PIN

Reportes

MetodoEndpointDescripcion
GET/api/reports/salesResumen de ventas
GET/api/reports/itemsRendimiento de articulos

Delivery

MetodoEndpointDescripcion
GET/api/delivery/platformsListar plataformas
GET/api/delivery/markup-rulesListar reglas de markup
GET/api/delivery-intelligence/pnlAnalitica de P&L

Lealtad

MetodoEndpointDescripcion
GET/api/loyalty/customersListar clientes
GET/api/loyalty/configConfiguracion de lealtad

Marca

MetodoEndpointDescripcion
GET/api/brandingObtener marca del tenant
PUT/api/brandingActualizar marca

Formato de Respuesta

Todos los endpoints devuelven JSON:

// Exito
{
"id": 1,
"name": "Taco al Pastor",
"price": 45.00
}

// Error
{
"error": "Item not found"
}

API de Admin (Super Admin)

Estos endpoints estan montados antes del middleware de tenant y protegidos por el header ADMIN_SECRET. Usan el pool de conexion admin (neondb_owner) que omite RLS.

info

Las rutas de admin no tienen alcance de tenant. Operan a traves de todos los tenants y requieren autenticacion por header x-admin-secret en lugar de PIN de empleado o JWT de propietario.

MetodoEndpointDescripcion
GET/admin/analytics/overviewKPIs de toda la plataforma (tenants, MRR, churn)
GET/admin/analytics/signupsTendencias de registros en el tiempo
GET/admin/analytics/revenueDesglose de ingresos por plan
GET/admin/analytics/healthMetricas de salud del sistema
GET/admin/tenantsListar todos los tenants
POST/admin/tenantsCrear un nuevo tenant
PATCH/admin/tenants/:idActualizar detalles del tenant
DELETE/admin/tenants/:idEliminar tenant y todos sus datos
POST/admin/tenants/:id/seedPoblar tenant con datos demo
POST/admin/tenants/:id/reset-passwordRestablecer contrasena del propietario del tenant
GET/admin/tenants/:id/exportExportar todos los datos del tenant como JSON
GET/admin/tenants/:id/activityActividad reciente del tenant
GET/admin/configConfiguracion de la plataforma
PUT/admin/configActualizar configuracion de la plataforma
GET/admin/audit-logRegistro de auditoria de acciones admin
POST/admin/impersonate/:idSuplantar un tenant (depuracion)

Multi-Tenancy

Todos los tenants comparten una sola base de datos Neon Postgres, aislados por Row Level Security (RLS). Cada tabla con alcance de tenant tiene una columna tenant_id con politicas RLS que filtran filas basandose en current_setting('app.tenant_id').

La resolucion de tenant ocurre automaticamente via:

  1. Header X-Tenant-ID (mayor prioridad)
  2. Subdominio (ej., turestaurante.desktop.kitchen)
  3. Variable de entorno DEFAULT_TENANT_ID
  4. Fallback predeterminado

El backend mantiene dos pools de conexion:

  • adminSql (neondb_owner) — omite RLS, usado para rutas de autenticacion, API admin y trabajos en segundo plano de IA
  • tenantSql (app_user) — aplica RLS, usado para todas las rutas /api/* con alcance de tenant

Impuestos

Todos los precios estan en MXN. El impuesto (16% IVA) se calcula al crear el pedido, no se almacena en los articulos.

nota

La documentacion completa de referencia del API con esquemas de solicitud/respuesta estara disponible en una actualizacion futura. Esta vista general cubre los endpoints principales.