Disponibilidade limitada. Este evento está em implantação e é habilitado por conta. Consulte seu contato no Fire para saber se já se aplica à sua.
store.updated é disparado toda vez que a configuração de uma loja é publicada nos seus canais: primeira publicação, publicar um rascunho, ressincronizar, ligar ou desligar um canal, aplicar um override, arquivar. Ele sempre traz a loja completa — nunca um diff. Trate-o como uma substituição total do que você sabe sobre essa loja.
Assim como store.business_day_closed, é um evento no nível da loja: um por publicação, não um por pedido nem por canal. Uma publicação que envolve vários canais gera um único evento com todos os canais dentro, e cada flow que a recebe recebe esse evento uma única vez, com a loja completa.
Condição de disparo
Cada publicação de uma loja emite umstore.updated. data.publication.reason diz o que o gerou:
Podem aparecer valores novos de
reason (o contrato já admite retry) e de mode. Trate um valor que você não conhece como uma publicação normal: o evento continua trazendo a loja completa.
Uma publicação também pode ser agendada: ao agendá-la nada é emitido; o evento é disparado quando chega a hora agendada, com publication.mode: "scheduled" e publication.scheduledAt. Cancelar uma publicação agendada não emite nada.
Nada é emitido quando mudanças são salvas sem publicá-las nos canais, nem quando o dia de negócio abre ou fecha.
Um flow limitado a certos canais recebe uma publicação quando ela envolve pelo menos um deles — e recebe o evento completo, com todos os canais. Escolha os que são seus em
data.channels.Exemplo — payload real (sanitizado e abreviado)
Referência de data.*
data.store
object
O mesmo bloco de loja V4 que viaja nos eventos de pedido —
uid, code, name, phone, email, address, externalId, vendor, account, locationInfo (com country.phoneCode), metadata e storeFiscalConfig (pode ser null). Referência de campos em order.completed → data.store. phone vem em formato internacional (+ e dígitos, p. ex. +5511999990000). Pode trazer um número que não é real (por exemplo, só zeros) se a loja não tem telefone cadastrado, ou o valor como foi salvo se o país não tem código telefônico. metadata é a configuração chave-valor livre da loja: o Fire não impõe as chaves, algumas integrações leem chaves conhecidas (no exemplo, taxesInfo e deliveryInfo), e é {} quando a loja não tem nenhuma. Sobre esse bloco, este evento acrescenta:data.channels
array
Todos os canais configurados na loja — não só os desta publicação (esses estão em
publication.channels). Um canal ou tipo de serviço desligado viaja do mesmo jeito, com enabled: false: é assim que você fica sabendo que ele saiu do ar.data.operationSchedule e data.salesSchedule
array
O horário de operação da loja. Cada entrada:
day (MONDAY … SUNDAY), startTime e endTime (HH:mm).array
O horário de venda da loja, no mesmo formato. É o padrão para canais e tipos de serviço sem horário próprio — já aplicado em
channels[].fulfillmentTypes[].schedules.data.publication
object
A publicação que gerou este evento.
A publicação mais recente vence
Cada evento traz a loja completa, então a publicação mais recente substitui tudo o que veio antes. O Fire já cuida da ordem para você:- Dentro de um flow, as publicações de uma mesma loja são entregues uma por vez, na ordem em que foram emitidas. Lojas diferentes avançam em paralelo.
- Quando uma loja recebe uma publicação nova que cobre os mesmos canais, as entregas anteriores que ainda estavam esperando são canceladas; as demais saem do mesmo jeito, em ordem.
publication.sequence continua sendo um dado útil: você pode guardar a última que aplicou por loja e reconhecer um payload antigo se algum dia ele chegar — por exemplo, uma reexecução manual de uma entrega antiga, que mantém sua sequence original.
Arquivar
Arquivar uma loja emite umstore.updated com publication.reason: "archive". Ele traz a loja arquivada: store.status: "ARCHIVED", store.active: false, e todos os canais e tipos de serviço com enabled: false (e os canais com published: false). Se quiser tratar o arquivamento à parte, ramifique por reason ou por status.
Integration Flows não emite um evento
store.deleted separado: arquivar é um store.updated.Exemplo de handler
Erros comuns
- Não é um diff. Um canal que falta na sua cópia não está “sem mudanças” — o evento lista todos os canais. Substitua, não mescle.
- Um canal desligado viaja do mesmo jeito. Leia
enabled; não assuma que um canal presente no evento está aberto. publication.channelsnão é a lista de canais. Diz do que tratou esta publicação; os canais da loja estão emdata.channels.- Não deduplique por
event.id. Ele identifica a entrega; a publicação édata.publication.id. - Os códigos de canal mantêm as maiúsculas com que foram configurados (
iFood,KIOSK). Normalize antes de comparar.
Eventos relacionados
store.business_day_closed
O outro evento no nível da loja: uma loja fechou seu dia de negócio.
order.completed
Referência de campos do bloco
store V4 que este evento compartilha.
