Skip to main content
Un menú en Fire es la definición completa del catálogo para una combinación específica de tienda y canal — incluye categorías, productos, grupos de modificadores y horarios. El payload es autocontenido y está listo para enviarse a sistemas externos. Trátalo como un upsert: crea el menú si no existe o reemplázalo completamente si ya existe.

Payload

Campos

data

data.menu

data.menu.list

data.menu.list.stores[n]

data.menu.list.stores[n].channels[n]

data.menu.list.stores[n].channels[n].schedules[n]

data.menu.categories[n]

data.menu.products[n]

data.menu.products[n].productModifiers[n].overrides[n]

data.menu.modifierGroups[n]

data.menu.modifierGroups[n].modifierOptions[n]

Fecha de incorporación al menú

categories[n].assignedAt y products[n].additionalInfo.assignedAt indican cuándo la entidad entró al menú. Es un dato de membresía, no de edición: no cambia al editar el precio, el nombre, la descripción, la imagen, los modificadores, el orden ni la visibilidad. Formato: ISO 8601 con precisión de segundos y sufijo Z"2026-08-04T12:30:00Z". Siempre en UTC, nunca en la zona de la tienda: el valor es el mismo hecho para todas las tiendas del menú, que pueden estar en países distintos. Para mostrarlo en hora local usa el timezone que viaja por tienda en list.stores[n]. Sin milisegundos — a diferencia de event.createdAt, que sí los lleva. No existe assignedAt a nivel list ni list.stores[n]: el campo describe cuándo la entidad entró al menú, no cuándo una tienda empezó a recibirlo. El mismo campo, con la misma semántica, viaja en product.updated. No viaja en product.price_updated ni en product.availability_changed: esos eventos transmiten solo su delta, y el assignedAt que ya tengas registrado sigue vigente.

Notas

  • El payload es un menú completo — no un diff. Reemplaza el menú completo en el sistema externo.
  • Cada menu.modifierGroups[n].modifierOptions[n].productId debe referenciar un producto definido en menu.products.
  • stores[n].channels[n].schedules: ventanas de tiempo en las que el canal está activo para esa tienda. Un array vacío ([]) indica que el canal opera 24 horas — sin restricciones.
  • categories[].schedules: horario propio de la categoría si existe; null si no hay.
  • products[].schedules: solo cuando el producto tiene schedule mode: custom; null si usa horario de tienda o no tiene horario custom.

Eliminar un menú externamente

Fire no emite un evento de borrado separado para menús. Para eliminar un menú de un sistema externo, Fire envía un evento menu.updated con menu.categories, menu.products y menu.modifierGroups como arrays vacíos. Tu sistema debe interpretar un menú vacío como señal para desactivar o eliminar el menú externamente. Este vaciado quita a categorías y productos del menú. Si el menú vuelve a publicarse, se reincorporan: llegan con assignedAt nuevo, no con su fecha original — misma regla que “producto quitado del menú y vuelto a agregar”.

Uso

Consulta la guía Publicación de menú para el flujo completo de procesamiento.