Las cargas útiles aquí documentadas reflejan lo que Maple emite, pero todavía no tienen un esquema formal: pueden
agregarse campos nuevos. Valide de forma defensiva (ignore los campos desconocidos) y trate
GET /v1/orders/{orderId}
como la fuente autorizada del estado actual de un pedido. La lista vigente de tipos de eventos siempre está en
GET /v1/webhook_event_types.data según type. Esta página documenta cada tipo de evento. Para firma, entrega, reintentos y reenvío, consulte Webhooks.
Eventos de pedidos
Los webhooks de pedidos son de dos tipos, y distinguirlos es la clave para usarlos bien:order.notificationes el evento sobre el que usted cumple el pedido. Le entrega el contenido del pedido para actuar, se dispara una sola vez en el traspaso y su entrega se considera crítica. Construya sobre él su ciclo de aceptar / rechazar / listo / completar.order.created,order.paidyorder.cancelledson eventos de ciclo de vida. Cada uno informa un momento de la vida del pedido con datos resumidos, para seguimiento y conciliación. Comoorder.notificationse dispara solo una vez y nunca se actualiza, estos eventos le permiten enterarse de lo que ocurre antes o después de esa instantánea, sobre todo una cancelación o un pago que se liquida más tarde.
¿A qué eventos de pedidos debo suscribirme?
- Para cumplir pedidos (un POS):
order.notificationyorder.cancelled: reciba los pedidos y deténgase cuando uno se cancele. Agregueorder.validation_requestedsi valida de antemano. - Para reportes o conciliación (un OMS, un panel, analítica): también
order.createdyorder.paid, para reflejar el ciclo de vida del pedido y del pago.
La carga útil de order.notification
order.notification (y order.validation_requested) llevan el contenido del pedido en data, suficiente para empezar a cumplirlo, con la estructura de GET /v1/orders/{orderId}:
status ni payment. Para el estado actual y autorizado (estado, pago, impuesto por artículo, marcas de tiempo), consulte GET /v1/orders/{orderId}. Los eventos de ciclo de vida llevan únicamente los campos resumidos indicados arriba.
scheduled_for es null en los pedidos para el momento (ASAP). Cuando tiene valor (ISO 8601, UTC), el cliente eligió esa hora de recogida o entrega: la notificación igual llega de inmediato, así que prepare el pedido para scheduled_for, no al recibirlo.
delivery_address es null en los pedidos para recoger y en los pedidos a domicilio sin dirección guardada. Cuando está presente, se incluyen las seis claves; notes contiene las instrucciones de entrega, y unit o notes pueden ser null.
No es un flujo de estados
Maple no emite un webhook por cada cambio de estado. Las transiciones que usted mismo ejecuta (accept, ready, complete) no se le devuelven, y no hay un evento para cuando el pedido llega a IN_DELIVERY ni para cuando el pago pasa a refunded / voided / failed. Consulte el recurso del pedido para conocer el estado actual; vea Ciclo de vida del pedido.
Eventos de reservas
Los eventos de reservas se entregan a cada app activa a la que se le haya otorgado el local, cuyos alcances (scopes) permitidos incluyanbookings:read y cuya suscripción coincida con el tipo de evento. No es necesario que la app sea dueña de la conexión con el POS. El indicador de despliegue de reservas del local debe estar habilitado.
Los ocho usan la misma estructura de
data. El booking incluido coincide con el recurso GET:
previous_status es null. Por lo tanto, el nombre de un evento puede describir un cambio anterior al estado actual de la reserva incluida. Una vez registrados para un destinatario, los reintentos conservan esa carga útil y la identidad del evento.
Cada evento original de la bandeja de salida recibe una identidad estable por app y entorno. Dos cambios en la misma reserva siguen siendo distintos aun cuando ambos se envíen con la misma versión de la reserva. Elimine duplicados por ID de evento y concilie por id/version de la reserva; no dependa del orden de entrega. El consumidor independiente para desarrolladores no avanza el cursor de comunicaciones con los invitados. En esta versión no se reenvían eventos del plano de sala; los cambios de la lista de espera tienen sus propios eventos.
Si falla el encolado para un destinatario, no se detiene el encolado para las demás apps o suscripciones elegibles. Los reintentos reutilizan la misma identidad de evento por suscripción. La publicación de eventos de reservas usa como máximo tres intentos de envío, cada uno con reintentos internos acotados. Los eventos internos mal formados y los intentos de envío agotados se conservan para que un operador los investigue, en lugar de bloquear los eventos siguientes o reintentar indefinidamente. Esto es independiente de los reintentos de entrega HTTP de webhooks. Use GET /v1/bookings?updated_since=… para conciliar el estado actual de las reservas después de un hueco en las entregas.
Eventos de lista de espera
Los eventos de lista de espera llegan a las mismas apps que los de reservas: cada app activa a la que se le haya otorgado el local, cuyos alcances permitidos incluyanbookings:read y cuya suscripción coincida con el tipo de evento. Se envían para los locales nativos de Maple mientras el indicador de despliegue de reservas del local esté habilitado. Consulte Administre la lista de espera.
Los cinco usan la misma estructura de
data. El waitlist_entry incluido coincide con GET /v1/waitlist_entries/{entryId}:
waitlist_entry.created entregado después de que el grupo se sentó ya muestra seated. Use el tipo de evento para saber qué ocurrió y waitlist_entry.status para saber en qué estado está ahora la entrada. Cada cambio tiene su propio ID de evento por app y entorno; elimine duplicados por ID de evento y no dependa del orden de entrega. Los intentos de entrega, los reintentos y la cuarentena de eventos internos mal formados siguen las reglas de los eventos de reservas descritas arriba. Sentar al grupo también crea una reserva de cliente sin reserva (walk-in), que se informa mediante los eventos de reservas a los que usted se suscriba.
Eventos de local (store)
Estos eventos siguen su acceso a un local: el ciclo de vida de la conexión:
Eventos de menú
Consulte Publique un menú.
Evento de prueba
webhook.test se entrega a pedido mediante POST /v1/webhook_subscriptions/{id}/test. Úselo para verificar su controlador antes de recibir tráfico real. La actividad real nunca lo emite.