Los rechazos de OpenTable usan los códigos nativos
- En los locales administrados por OpenTable, un rechazo para el que OpenTable da un motivo ahora responde con el mismo código que un local nativo de Maple, con las palabras de Maple, en lugar de
422 provider_rejectedcon el texto de OpenTable. Una hora demasiado próxima responde422 outside_booking_window(details.reason: inside_min_lead); una reserva que ya empezó o está por empezar,409 not_changeable/409 not_cancellable(details.reason: outside_policy_window); una hora que requiere tarjeta,422 payment_instrument_required. Los demás rechazos siguen siendoprovider_rejected. Consulte Errores.
Cambie solo la nota de una reserva
POST /v1/bookings/{bookingId}/changeaceptanotessinslot_tokenpara cambiar solo la nota del huésped: la reserva conserva su hora, el tamaño del grupo y la mesa, por lo que no se necesita una cotización. Si no se envía ninguno de los dos campos, responde400 change_required. Consulte Cambiar o cancelar.
Experiencias
- La disponibilidad lista las experiencias (menús fijos, degustaciones, turnos con boleto) donde el local las ofrece, junto con los horarios estándar en orden de inicio. Cada
booking_slottiene unexperience(id,name,description,prepayment_required),nullpara una reserva estándar.experience_idlimita una búsqueda a una experiencia. Se ofrecen en locales de OpenTable;booking_profile.capabilities.experiencesindica si un local las ofrece. - Un horario de experiencia se reserva con el flujo habitual de retención y reserva, y el recurso
Booking(y sus payloads de webhook) incluyeexperience(id,name),nullpara una reserva estándar. Un cambio conserva la experiencia: un horario de otra experiencia, o entre una experiencia y una mesa estándar, responde422 capability_unsupported. - Retener un horario cuya experiencia pide pago por adelantado responde
422 payment_instrument_required: Maple todavía no puede cobrar. Consulte Experiencias.
Reservas con el grupo ya sentado en locales de OpenTable
- En los locales administrados por OpenTable, cambiar o cancelar una reserva cuyo grupo ya está sentado, o que ya terminó, ahora responde
409 not_changeableo409 not_cancellable(motivoin_serviceoterminal_state) antes de que Maple llame a OpenTable, como ya ocurría en los locales nativos de Maple.
Los establecimientos controlan los mensajes a huéspedes
- Los gerentes de restaurante ahora pueden desactivar los mensajes de texto de Maple a los huéspedes de su establecimiento. Donde lo hicieron,
POST /v1/waitlist_entries/{entryId}/notifyresponde422 guest_messaging_unavailable, como ya ocurría donde los mensajes a huéspedes no están habilitados. Siente o retire al grupo. Consulte Administre la lista de espera. - Los gerentes también pueden activar por sí mismos las reservas de Maple una vez publicada una configuración, así que
booking_profile.enabledpuede cambiar sin intervención de Maple. Siga verificándolo antes de ofrecer disponibilidad.
Revisiones de configuración
- La configuración de reservas incluye un
revision. Publique conexpected_revisionpara recibir409 stale_configurationen lugar de sobrescribir una configuración que un gerente del restaurante editó en el panel de Maple desde su lectura;nullespera que aún no haya configuración. Publicar sin él sigue reemplazando la configuración sin condiciones. Consulte Publique sin sobrescribir al local.
Todas las áreas de asientos se pueden reservar
- La disponibilidad nativa de Maple ahora sienta a los grupos en todas las áreas configuradas, no solo en la primera: prueba la primera área, luego las demás en orden de
poolId, y reserva la primera que tenga una mesa o combinación libre que quepa. Ahora se ofrece un grupo que solo otra área puede sentar (una mesa grande en el patio). Los límites de tamaño de grupo abarcan todas las áreas. Consulte Reglas de publicación.
Busque reservas por teléfono o código de confirmación
GET /v1/bookingsaceptaphoneyconfirmation_codepara encontrar la reserva por la que pregunta un huésped. Ambos requierenlocation_id; el teléfono se normaliza primero. Sin una ventana de tiempo, la búsqueda encuentra reservas en cualquier fecha, tanto en locales nativos como administrados por un proveedor. Una búsqueda sinlocation_idresponde400 location_required. Consulte Encuentre la reserva de un huésped.
Fechas bloqueadas para reservas
GET /v1/locations/{locationId}/booking_profiledevuelve losblackout_datesdel local: periodos en los que no recibe reservas.PUT /v1/locations/{locationId}/booking_blackoutsreemplaza la lista con el alcance (scope)bookings:configure, en locales nativos y administrados por un proveedor. Envíe elblackout_dates_revisiondel perfil comoexpected_revisionpara recibir409 stale_blackout_datesen lugar de sobrescribir las ediciones más recientes del establecimiento. Los rangos no válidos responden400 invalid_blackout_dates. Consulte Fechas bloqueadas.
Errores de validación y la pista de comentarios
- Una solicitud cuyos parámetros de ruta, consulta, encabezados o cuerpo no superan la validación ahora responde
400con un cuerpoDeveloperApiBadRequest(code: "invalid_request") que nombra el campo, donde antes respondía con un cuerpo vacío. - Todo cuerpo de error incluye una línea
feedbackque apunta aPOST /v1/feedback. Consulte Errores.
Comentarios
POST /v1/feedbackreporta un error, una capacidad que falta, documentación incorrecta o un error poco claro, citando los ids de las solicitudes involucradas. Solokindysummaryson obligatorios. Un id que Maple no pueda asociar con sus solicitudes recientes se conserva tal como se envió en lugar de rechazarse. Cualquier credencial puede enviarlo; no se requiere alcance. Su contrato no se romperá: se pueden agregar campos, nunca eliminarlos ni volverlos obligatorios. Consulte Comentarios.
Clientes sin reserva y cancelación por parte del establecimiento
POST /v1/locations/{locationId}/walk_inssienta a un grupo que llega en la mesa más próxima donde quepa ahora y devuelve la reserva con el grupo sentado; es seguro reintentar con unidempotency_keylimitado a su app. Consulte Siente a un cliente sin reserva.POST /v1/bookings/{id}/venue_cancelcancela en nombre del establecimiento (cancelled_by_venue), fuera de la ventana de cancelación del huésped. Consulte Cancele como el establecimiento.- Ambos requieren
bookings:managey están disponibles en locales nativos de Maple. La referencia de la API ahora muestra la lista de espera en su propia sección.
Lista de espera
- Lea la cola de clientes sin reserva de un local nativo y cotice esperas con
bookings:read. - Agregue grupos con un
idempotency_keylimitado a su app, y cancélelos en nombre del huésped, conbookings:write. - Notifique, siente y retire grupos, y abra o cierre la lista de espera, con
bookings:manage. Maple envía todos los mensajes a los huéspedes; sentar crea una reserva de cliente sin reserva. Consulte Administre la lista de espera. - Cinco tipos de webhook de lista de espera (
waitlist_entry.created,.notified,.seated,.removed,.expired) con el estado más reciente de la entrada. Consulte Eventos de lista de espera.
Zonas de entrega
- CRUD de zonas de entrega para locales conectados: liste, cree, obtenga, actualice y elimine zonas con
delivery_zones:read/delivery_zones:write, dentro de la conexión activa de su app. POST /v1/locations/{locationId}/delivery_zones/checkindica si una coordenada tiene entrega y devuelve la zona y la tarifa correspondientes. Consulte Administre las zonas de entrega.
Reservas — lanzamiento por local
- Perfil de reservas, búsqueda acotada de disponibilidad, retenciones, y listar/obtener/crear/cambiar/cancelar reservas.
- Acciones del establecimiento con
bookings:manage, con verificación de versiones y registros de auditoría atribuidos a la app. - Publicación y lectura de configuración nativa con
bookings:configure, conservando los menús existentes. - Plano del local en vivo bajo demanda, ocho tipos de webhook de reservas y aprovisionamiento opcional de sandbox de reservas.
- Retenciones nativas y de proveedor propiedad de la app, cuotas atómicas de diez retenciones por app y local, y límites separados para solicitudes y búsquedas de reservas con
Retry-After. - Reclamos duraderos de escritura al proveedor, reservas de versión, identidades de solicitud estables y reconciliación tras escrituras inciertas o fallas del espejo. Consulte Tome reservas para las reglas de reintento.
Direcciones de entrega, puesta al día de pedidos y reintentos de webhook más densos
- Direcciones de entrega: el recurso del pedido y el payload de
order.notificationahora incluyendelivery_address(calle, unidad, ciudad, estado, código postal y las instrucciones de entrega del cliente ennotes). Esnullen pedidos para recoger y en pedidos a domicilio sin dirección guardada. Consulte Recibir pedidos. - Puesta al día de pedidos:
GET /v1/ordersaceptasince,starting_afterylimit. Consince, los resultados se vacían del más antiguo al más reciente desde un punto de control exclusivo, para que pueda recorrer un rezago tras una caída. Consulte Listas. - Reenvío de pedidos:
POST /v1/orders/{orderId}/resendpublica unorder.notificationnuevo para un pedido activo que no recibió su webhook, sin cambiar el estado del pedido. Requierewebhooks:write; los pedidos en estado terminal no se pueden reenviar. - Reintentos de webhook más densos: una entrega fallida ahora se reintenta hasta 9 veces (antes 6), con los primeros intentos dentro de la ventana de decisión del POS de seis minutos. Consulte Reintentos y desactivación automática.
Lanzamiento de la Developer API
La Developer API de Maple está disponible para socios de POS y de plataformas.
- Autenticación: claves de API (
mpk_test_…para el sandbox,mpk_live_…para producción) con acceso por alcances. - Locales y conexiones: liste los locales autorizados y conéctese como receptor de pedidos de un local.
- Pedidos: reciba
order.notification, lea el pedido completo y decídalo con accept / deny / ready / complete / cancel / status. Prevalidación opcional. - Menú: publique el menú completo de un local como un solo documento JSON con sus propios IDs externos, y léalo de vuelta.
- Webhooks: suscríbase a tipos de evento, verifique entregas firmadas con HMAC y repita desde el registro de eventos.