Skip to main content
PUT
Um pedido criado no quiosque e cobrado no caixa fica aberto até a cobrança. Nesse meio-tempo o operador pode precisar corrigi-lo: o cliente pede nota com o seu documento, ou é preciso informar o número de localizador impresso no ticket. Este endpoint corrige esses dados sem mexer na cobrança.
Somente pedidos abertos. Um pedido cobrado, cancelado ou já faturado já produziu suas consequências e não é corrigido retroativamente.

Corrigir pedido vs. Confirmar pagamento

São dois endpoints separados de propósito. Um corrige o pedido, o outro o cobra, e nenhum escreve o que pertence ao outro. Os meios de pagamento não são corrigidos aqui. Se o body trouxer payments.paymentMethods ou um status, a resposta é 400: o status do pedido é derivado da cobrança e só o Confirmar pagamento o escreve. Rejeitamos em vez de ignorar porque um APPROVED descartado em silêncio seria dinheiro que você considera cobrado e nós não.

O fluxo completo

Não é preciso nenhum passo extra para a nota sair com os dados corrigidos. Quando a cobrança liquida, o Fire monta o evento order.completed lendo o pedido naquele momento, então ele viaja com a sua última correção.

Autenticação

string
obrigatório
Sua API key do Fire com escopo orders:write. A key deve ser vendor-scoped — keys sem vendorId são rejeitadas com 403.

Path params

string
obrigatório
Qualquer uma das três referências públicas do pedido:É o mesmo conjunto aceito por Obter pedido e Confirmar pagamento.

Corpo

Dois campos de controle, sempre, e um ou mais blocos. O que você não envia não é alterado.
integer
obrigatório
A revision do pedido que você leu com Obter pedido. Se o pedido mudou desde então —outro caixa o corrigiu—, a resposta é 409 STALE_REVISION e nada é escrito. Assim dois caixas nunca se sobrescrevem sem perceber.
string
obrigatório
Um identificador único por correção (até 200 caracteres), gerado por você. Se a resposta não chegar e você tentar de novo com a mesma chave, recebe 200 duplicate e a correção não é aplicada duas vezes.Sem essa chave, uma nova tentativa bateria no expectedRevision —que já avançou— e você não saberia se a sua correção entrou ou se outro escreveu.

Localizador e quiosque — additionalInfo

Aplicado campo a campo: envie só o que muda. Se você corrigir o localizador, o nome do buzzer e o e-mail da nota continuam como estavam.
string
O localizador: o número impresso no ticket do cliente e chamado na entrega.
string
Nome usado para chamar o cliente.
string
E-mail para onde a nota é enviada.
boolean
Se o cliente quer a nota impressa.

Consumidor final — client

Este bloco SUBSTITUI o comprador inteiro. Não é um patch: o que você não enviar fica vazio. Enviar { "uid": "…", "name": "Juan" } num pedido que tinha documento apaga o documento.É deliberado. Nome, documento e endereço são um único dado: misturar o nome novo com o documento antigo produz uma nota emitida errada, e isso só se corrige cancelando e emitindo de novo. Envie sempre o comprador completo, não a diferença.
string
obrigatório
Identificador do cliente. Obrigatório justamente porque o bloco substitui: sem ele o pedido ficaria sem cliente. Use o que o pedido já tem.
string
Tipo de documento: CEDULA, RUC, PASAPORTE (Equador); CC, NIT (Colômbia); CPF, CNPJ (Brasil); ou FINAL_CONSUMER.
string
Número do documento. Pontos, hífens e espaços são aceitos; o Fire os remove. Um preenchimento de dígitos repetidos (9999999999999, 222222222222) é tratado como consumidor final.
string
Nome ou razão social.
string
Sobrenome.
string
E-mail do comprador.
object
O destinatário da nota, e é ele que prevalece. O Fire monta o comprador do comprovante lendo primeiro billingInformation (govIdType, govIdNumber, name —ou businessName se não vier name—, email, address) e só depois os campos de client. Existe à parte porque a nota pode ir para uma empresa diferente da pessoa.Se você corrigir o documento, coloque-o aqui. Os pedidos do quiosque trazem este bloco como consumidor final: corrigir só client.govIdNumber e reenviar billingInformation sem mudanças deixa o comprovante como consumidor final. Se não for enviado, fica vazio e usa-se client.
A partir deste bloco o Fire recalcula o comprador impresso no comprovante. Não é preciso enviá-lo à parte.

Produtos — ainda não

Corrigir produtos e totais ainda não está habilitado. Se o body trouxer order ou payments, a resposta é 400. Será habilitado quando também se validar que os impostos e o total batem com as linhas, como acontece ao criar o pedido.

Requisição

O que o Fire faz com o que você envia

Guarde a revision da resposta: é a que você deve enviar na próxima correção.

Quando não dá para corrigir

Cada caso tem o seu código, porque cada um pede uma ação diferente. Todos são 409 e não escrevem nada. A verificação acontece no mesmo instante da escrita, então se uma cobrança entrar enquanto você corrige, uma espera a outra: nunca se sobrescrevem.

Idempotência e concorrência

Tentar de novo é seguro. Se a resposta não chegou, reenvie o mesmo body com a mesma idempotencyKey: Use uma chave nova para cada correção diferente. Reusar uma chave para outra mudança devolve duplicate e a mudança nova não é aplicada.

Eventos

Este endpoint não emite eventos. A correção fica no pedido, e quando ele é cobrado, o order.completed sai com os dados corrigidos: localizador, comprador e dados de faturamento.
Não existe order.updated, de propósito. A entrega de eventos não é ordenada: um aviso de correção que chegasse depois do order.completed seria um fato antigo sobre o qual o seu sistema poderia agir por engano.

Validações

Todas devolvem 400 salvo onde indicado. Ramifique pelo code, não pelo texto: a mensagem pode ser reescrita, o código é contrato.

Respostas

Relacionado

Obter pedido

Leia a revision antes de corrigir.

Confirmar pagamento

Cobre o pedido depois de corrigido.