Skip to main content
product.availability_changed é emitido quando a disponibilidade de um ou mais produtos muda — por exemplo, quando um restaurante marca um produto como esgotado ou o reativa. Controla se o produto aparece no menu e está disponível para compra. Suporta múltiplos produtos em um único evento. Quando a mudança afeta várias lojas, o Fire emite um único evento com todas as lojas afetadas listadas em targets.

Payload

Campos

data

data.targets[n]

Mesma estrutura que em product.updated, sem o campo listName em channels[n].

data.targets[n].channels[n]

data.products[n]

Comportamento

Definir active: false oculta o produto do menu e o marca como indisponível para compra. Definir active: true o restaura. Este evento não modifica nenhum outro dado do produto — nome, preço, imagens e modificadores permanecem inalterados. Desativar um produto não é removê-lo do menu: ele continua sendo membro, apenas deixa de estar disponível. Por isso sua data de atribuição ao menu (additionalInfo.assignedAt) não muda com active: false nem é reiniciada ao voltar para active: true, e este evento não a transmite. Ela chega em product.updated e em menu.updated.

active é a disponibilidade EFETIVA, não um único interruptor

products[n].active não reflete um único campo: é o resultado de combinar a visibilidade do produto com a de cada categoria em que ele aparece. Um produto pode viver em várias categorias do menu, e o evento é plano por produto, então se aplica o OR entre elas:
active = true se existir AO MENOS UMA categoria onde (a categoria está visível E o produto está visível nela).
Duas consequências importantes ao processar o evento:
  • Ocultar uma categoria inteira chega como N entradas de produto, uma para cada produto cuja disponibilidade efetiva mudou — não como uma alteração de categoria. Este evento não tem como expressar categorias; a estrutura do menu viaja em menu.updated (categories[n].displayInList).
  • Um produto que também vive em outra categoria visível NÃO aparece no evento, porque sua disponibilidade efetiva não mudou. Está correto, mas significa que a ausência de um produto em products[] não implica que sua categoria não tenha sido tocada.
Somente os produtos cuja disponibilidade efetiva mudou em relação ao estado anterior são emitidos. Um produto novo no menu não aparece aqui: ele chega com menu.updated / product.updated.

Uso

Consulte o guia Publicação de produto para o fluxo completo de processamento.