Pedido del comensal
POST
Abrir un pedido
POST /api/orders/create-order
Descripción
Abre un pedido nuevo a partir del link de acceso con el que entró el cliente.
Detalles
Inicia un pedido según el canal de entrega del link, con su primer producto guardado sin enviar. Si el link es de mesa o de habitación, ocupa el lugar, que debe estar libre. Fuera del local exige la sesión del cliente. Cada cliente tiene un solo pedido en curso por tipo de canal en cada restaurante: si ya tiene uno, se devuelve ese y no se le suma nada. Si ese pedido no tenía chat y es del mismo lugar, pasa al chat desde el que pide. Devuelve el pedido, su código corto para que otros clientes se sumen y el acceso con el que ese cliente opera su pedido.
Permisos requeridos
public
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| slug | string | Sí |
min:1
max:63
|
| token | string | Sí |
min:1
max:64
|
| deviceUuid | string | No |
min:36
max:36
|
| guestName | string | No |
max:60
|
| items | array | No | — |
| items[].productId | int | Sí |
min_value:1
|
| items[].menuId | int | Sí |
min_value:1
|
| items[].name | string | Sí |
max:200
|
| items[].qty | int | Sí |
min_value:1
|
| items[].consumptionMode | string | No |
enum:eat_in,takeaway
|
| items[].note | string | No |
max:500
|
| items[].guestName | string | No |
max:60
|
| items[].productPriceId | int | No |
min_value:1
|
| items[].productPriceOptionId | int | No |
min_value:1
|
| items[].modifiers | array | No | — |
| items[].modifiers[].modifierGroupId | int | Sí |
min_value:1
|
| items[].modifiers[].modifierId | int | Sí |
min_value:1
|
| items[].modifiers[].quantity | int | Sí |
min_value:1
|
| chatUuid | string | No |
min:36
max:36
|
Respuesta
Campos que devuelve dentro de data. Nada fuera de esta lista sale en la respuesta.
| Campo | Tipo | Descripción |
|---|---|---|
| orderUuid | string | Identificador del pedido |
| orderCode | string | Número del pedido para mostrar |
| joinCode | string | Código corto para que otros se sumen al pedido |
| isExistingOrder | bool | Si ya tenías un pedido en curso y se devolvió ese |
| chatUuid | string Admite vacío | Chat del pedido, si nació desde un chat |
| orderPass | string | Pase de pedido, va en el encabezado X-Order-Pass |
| orderPassExpiresAt | datetime | Cuándo vence el pase |
Ejemplo de request
curl -X POST https://restofy.pro/api/orders/create-order \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"slug": "string",
"token": "string"
}'
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-10-09T02:12:12Z
HTTP 200
Request
{
"slug": "restofy_test_deletechattest_2339_1791511769_tenant",
"token": "***",
"deviceUuid": "476ab80f-e921-407d-a7b2-2270a545fd85",
"guestName": "Laura",
"items": [
{
"productId": 16,
"menuId": 6,
"name": "Limonada Natural",
"qty": 1
}
],
"chatUuid": "83604f8d-c386-11f1-a755-a2f78ac020f7"
}
Response
{
"success": true,
"message": "Operación realizada correctamente",
"data": {
"orderUuid": "39172f2a-0da7-4e91-b4ed-7602bab811f3",
"orderCode": "24J-R23",
"joinCode": "R23",
"isExistingOrder": false,
"chatUuid": "83604f8d-c386-11f1-a755-a2f78ac020f7",
"orderPass": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0eXBlIjoib3JkZXItcGFzcyIsInRlbmFudEtleSI6InJlc3RvZnlfdGVzdF9kZWxldGVjaGF0dGVzdF8yMzM5XzE3OTE1MTE3NjlfdGVuYW50Iiwib3JkZXJVdWlkIjoiMzkxNzJmMmEtMGRhNy00ZTkxLWI0ZWQtNzYwMmJhYjgxMWYzIiwiZ3Vlc3RVdWlkIjoiNDc2YWI4MGYtZTkyMS00MDdkLWE3YjItMjI3MGE1NDVmZDg1Iiwic2NvcGUiOiJvcmRlciIsImV4cCI6MTc5MTUyNjE5M30.mwySyVK8iBo3-1WSYE7zF1-cAeEmTblk6jiJq5fbZqk",
"orderPassExpiresAt": "2026-10-09T06:09:53.000Z"
}
}