Menú digital
POST
Abrir el enlace del menú digital
POST /api/digital-menu/get-link
Descripción
Devuelve el restaurante y, con el código del enlace, el canal de entrega y lo que hay que pedirle al cliente para enviar.
Detalles
Cada enlace abre un solo canal de entrega: una mesa, el domicilio o para llevar. Sin código solo se puede reservar. Dice si el canal recibe pedidos ahora, qué datos pide antes de enviar, las formas de pago con el momento en que se paga y cómo se cobra el envío. Una mesa con pedido en curso solo deja sumarse con el código del pedido.
Permisos requeridos
public
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| slug | string | Sí |
min:1
max:63
|
| token | string | No |
min:1
max:64
|
Respuesta
Campos que devuelve dentro de data. Nada fuera de esta lista sale en la respuesta.
| Campo | Tipo | Descripción |
|---|---|---|
| restaurant | object | Restaurante del enlace |
| restaurant.name | string | Nombre comercial |
| restaurant.logoUrl | string Admite vacío | Dirección del logo |
| restaurant.brandColor | string | Código del color de marca con que se pinta el menú |
| restaurant.menuTheme | string | Modo con que abre el menú: light o dark |
| restaurant.slug | string | Identificador público del restaurante |
| restaurant.phone | string Admite vacío | Teléfono de contacto |
| restaurant.timezone | string | Zona horaria del restaurante |
| restaurant.currency | string | Moneda en que cobra |
| restaurant.locale | string | Idioma y región para mostrar fechas y montos |
| restaurant.country | string | País del restaurante |
| restaurant.hasReservations | bool | Si recibe reservas en línea |
| restaurant.realtimeChannel | string | Canal de tiempo real para enterarse de los cambios |
| link | object Admite vacío | Canal que abre el código; vacío si se entró sin código |
| link.token | string | Código con el que se entra a pedir por este canal |
| link.fulfillmentUuid | string | Identificador del canal de entrega |
| link.fulfillmentName | string | Nombre del canal de entrega |
| link.fulfillmentTypeCode | string | Código del tipo de canal |
| link.placeKind | string Admite vacío | Si el código es de una mesa (table) o una habitación (room) |
| link.placeName | string Admite vacío | Nombre de la mesa o habitación |
| link.entry | string | direct abre un pedido propio; join_only solo deja sumarse con el código del pedido |
| ordering | object Admite vacío | Si el canal recibe pedidos ahora |
| ordering.canOrder | bool | Si recibe pedidos en este momento |
| ordering.reason | string | Motivo por el que recibe o no pedidos |
| ordering.opensAt | datetime Admite vacío | Cuándo vuelve a recibir pedidos |
| checkout | object Admite vacío | Lo que pide el canal antes de enviar; vacío si se entró sin código |
| checkout.fields | array | Datos que pide el canal al enviar |
| checkout.fields[].field | string | Campo que se pide |
| checkout.fields[].isRequired | bool | Si es obligatorio |
| checkout.requiresVerifiedPhone | bool | Si hay que verificar el WhatsApp para enviar |
| checkout.callerLabel | string Admite vacío | Nombre del código con que se llama al cliente |
| checkout.paymentOptions | array | Formas de pago del canal |
| checkout.paymentOptions[].optionType | string | Forma de pago |
| checkout.paymentOptions[].moment | string | Cuándo se paga: before, end o handoff |
| checkout.paymentOptions[].instructions | string Admite vacío | Indicaciones del restaurante para pagar |
| checkout.paymentOptions[].asksChange | bool | Si pregunta con cuánto pagas en efectivo |
| checkout.delivery | object Admite vacío | Cómo se cobra el domicilio; vacío si no es a domicilio |
| checkout.delivery.mode | string | Cómo se cobra el envío: disabled, fixed, free, per_zone o manual |
| checkout.delivery.fixedFeeCents | int Admite vacío | Costo fijo del envío, en centavos |
| checkout.delivery.minFeeCents | int Admite vacío | Costo mínimo del envío, en centavos |
| checkout.delivery.maxFeeCents | int Admite vacío | Costo máximo del envío, en centavos |
| checkout.delivery.freeAboveCents | int Admite vacío | Desde qué total el envío es gratis, en centavos |
| checkout.delivery.zones | array | Zonas de entrega con su costo |
| checkout.delivery.zones[].deliveryZoneId | int | Identificador de la zona, para elegirla al enviar |
| checkout.delivery.zones[].name | string | Nombre de la zona |
| checkout.delivery.zones[].feeCents | int | Costo del envío a esa zona, en centavos |
Ejemplo de request
curl -X POST https://restofy.pro/api/digital-menu/get-link \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-d '{
"slug": "string"
}'
Los valores son demo: reemplázalos por datos reales del negocio.