Saltar al contenido principal

Mesas

Disponible desde 1.23.0. Las respuestas llevan Cache-Control: private, no-store. En modo coexistencia, las mesas aparecen desactivadas. Consulta también Mesas en la app y en wp-admin.

Rutas​

MétodoRutaPermiso
GET/tables/availabilityPúblico
GET/tables/resolve?token=Público
GET/tables/occupancyGestión
GET/settings/tablesGestión
PUT/settings/tablesGestión
POST/tables/{id}/releaseGestión
POST/tables/{id}/regenerate-qrGestión

Disponibilidad pública​

GET /tables/availability lista las mesas activas, sin datos de pedidos:

{
"success": true,
"data": {
"enabled": true, "available_count": 1, "total_count": 2,
"tables": [
{ "id": "t1", "label": "Mesa 1", "zone": "Terraza", "capacity": 4, "active": true, "status": "available", "selectable": true },
{ "id": "t2", "label": "Mesa 2", "zone": "Salón", "capacity": 2, "active": true, "status": "occupied", "selectable": false }
]
}
}

selectable es true si la mesa está libre o si la ocupa el mismo cliente (su sesión o su cuenta).

GET /tables/resolve?token=<token-del-QR> devuelve la mesa de un código QR. Si el token no existe, responde 404 table_not_found.

Ocupación​

GET /tables/occupancy es la vista del personal: todas las mesas, cada una con sus pedidos activos orders[{ id, status, total, currency, created_at }].

Una mesa está ocupada mientras tenga pedidos pendientes, en espera, aceptados, en proceso o completados. Los borradores de checkout la ocupan durante 5 minutos. Los pedidos finalizados, cancelados, reembolsados o fallidos la liberan.

Liberar una mesa​

POST /tables/{id}/release libera todos los pedidos activos de la mesa, añade una nota a cada uno y devuelve la ocupación actualizada. Errores: 404 table_not_found, 409 table_busy.

Ajustes y QR​

GET /settings/tables:

{
"enabled": true,
"selection": "qr_or_list",
"require_table": false,
"allow_in_cart": true,
"show_availability": true,
"hide_occupied": false,
"auto_release_minutes": 180,
"tables": [ { "id": "t1", "label": "Mesa 1", "zone": "Salón", "capacity": 2, "active": true, "qr_token": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" } ],
"store_url": "https://tienda.example.test"
}
Tokens de QR

Esta respuesta incluye los qr_token, necesarios para imprimir los códigos. Trátalos como datos privados de la tienda. El enlace de cada mesa es https://tienda.example.test/?notiwoo_table=<qr_token>.

AjusteValores
selectionqr_only, list o qr_or_list.
auto_release_minutes0 a 10080. 0 = nunca se liberan solas.
tablesHasta 250 mesas. id: 1 a 64 caracteres A-Z a-z 0-9 _ -. label: 1 a 120. zone: hasta 120. capacity: 1 a 1000.

PUT /settings/tables recibe el mismo objeto. Los valores sí/no deben ser booleanos reales. Las mesas sin qr_token conservan el suyo o reciben uno nuevo. store_url se ignora. No puedes eliminar una mesa ocupada.

POST /tables/{id}/regenerate-qr crea un token nuevo de 32 caracteres. El QR anterior deja de funcionar.

Errores: 400 invalid_tables, 400 invalid_table, 400 duplicate_table, 409 table_busy, 409 table_occupied, 404 table_not_found.