PUT
api/v1/pedidoNovo/
Cria ou atualiza um pedido (upsert)
Limite: 240 requisições por minuto
Descrição
Cria ou atualiza um pedido (upsert). O sistema busca pedidos existentes com a seguinte prioridade:1. Busca por numeroPedido + canal da loja autenticada
2. Se não encontrado e pedidoCanal informado, busca por pedidoCanal + canal da loja autenticada
3. Se nenhuma busca retornar resultado, cria um novo pedido
Proteção de campos sensíveis: Os campos chaveNfe, linkRastreio e codigoRastreio não são sobrescritos quando o valor enviado é vazio ou nulo e já existe um valor no documento.
XML da NFe: Quando o campo xmlNfe é informado com um XML válido, o conteúdo é armazenado no S3 no path
nfe/{chaveNfe}.xml. O XML não é gravado no MongoDB, apenas a referência. Tamanho máximo aceito: 1 MB.
Obs.: Utilizar tokenAPI (Authorization: Bearer)
Limite de requisições: 60 requisições por minuto.
Códigos de erro:
| Código | Descrição |
| 400 | Requisição inválida — JSON não informado, campo obrigatório ausente ou valor inválido. A mensagem indica o campo e motivo. |
| 401 | Não autorizado — Token ausente, inválido, inativo ou sem permissão para este serviço/método. |
| 429 | Limite de requisições ultrapassada — Aguarde o próximo minuto para novas requisições. |
| 500 | Erro interno — Falha no armazenamento do XML no S3 ou erro inesperado no servidor. |
Body da Requisição
JSON
{
"numeroPedido": "PED-2024-001",
"pedidoLoja": "",
"tipoPedido": "envio",
"canal": "ecommerce",
"pedidoCanal": "ML-123456",
"numeroPedidoEnvioPai": "",
"plataforma": "",
"statusDescricao": "Faturado",
"statusDescricaoCanal": "Faturado",
"valorTotalPedido": 109.80,
"valorTotalFrete": 10.00,
"dataPedido": "2024-01-15 10:30:00",
"enderecoEntrega": {
"nome": "João da Silva",
"cpfCnpj": "12345678901",
"cep": "01310100",
"cidade": "São Paulo",
"uf": "SP",
"endereco": "Av. Paulista",
"numero": "1000",
"complemento": "Sala 101",
"bairro": "Bela Vista",
"referencia": "Próximo ao metrô",
"inscricaoEstadual": "",
"telefone": "11999998888",
"email": "joao@email.com"
},
"envio": [
{
"statusDescricao": "Faturado",
"tipoLogistica": "transportadora",
"idCotacao": "",
"codigoRastreio": "",
"linkRastreio": "",
"nomeTransportadora": "",
"nomeMetodoEnvio": "Sedex",
"prazoDeEntrega": "2024-01-20",
"dataEntrega": "",
"produtos": [
{
"sku": "SKU-001",
"titulo": "Camiseta Básica",
"variacao": "Cor: Azul / Tamanho: M",
"quantidade": 2,
"preco": 49.90,
"imagem": "",
"linkAnuncio": ""
}
],
"notaFiscal": {
"chaveNfe": "35240112345678000195550010000000011000000019",
"numero": 0,
"serie": 0,
"cnpjFaturador": "",
"data": "2024-01-15",
"linkXmlNFe": "",
"linkDanfe": "",
"xmlNfe": "... "
},
"dadosAdicionaisEnvio": {}
}
],
"pagamentos": [
{
"idPagamento": "PAY-123",
"formaPagamento": "Cartão de crédito",
"metodo": "credit_card",
"bandeira": "Visa",
"parcelas": 3,
"valor": 109.80,
"valorParcela": 36.60,
"status": "aprovado",
"dataPagamento": "2024-01-15"
}
],
"dadosAdicionaisPedido": {}
}
Parâmetros de Entrada
| Campo | Descrição | Tipo | Tamanho | Obrigatório |
| numeroPedido | Número do pedido no sistema do lojista (ERP/Hub) | string | 100 | sim |
| pedidoLoja | Número do pedido na loja/plataforma de envio (ex: número AllPost) | string | 100 | não |
| tipoPedido | Tipo do pedido. Valores aceitos: envio ou reversa | string | 7 | sim |
| canal | Canal de origem do pedido (ex: ecommerce, mercadolivre, shopee) | string | 50 | sim |
| pedidoCanal | Número do pedido na plataforma de origem (marketplace) | string | 100 | não |
| numeroPedidoEnvioPai | Número do pedido de envio pai. Obrigatório quando tipoPedido for "reversa" | string | 100 | sim se reversa |
| plataforma | Plataforma/origem técnica do pedido (ex: Bling, Tiny, integração própria). Campo livre. | string | 100 | não |
| statusDescricao | Situação do pedido na loja/logística (ex: Pendente, Faturado, Em trânsito, Entregue, Cancelado). Na atualização, este campo é ignorado quando a origem é um canal/marketplace. | string | 100 | não |
| statusDescricaoCanal | Situação do pedido no canal/marketplace. Quando não informado, assume o mesmo valor de statusDescricao. Permite que um pedido esteja, por exemplo, "Entregue" na logística e "Cancelado" no canal ao mesmo tempo. Na atualização, este campo é ignorado quando a origem é a logística (AllPost). | string | 100 | não |
| valorTotalPedido | Valor total do pedido (itens + frete). Usado também para derivar o valor total dos itens (valorTotalPedido - valorTotalFrete). | float | não | |
| valorTotalFrete | Valor total do frete do pedido | float | não | |
| dataPedido | Data do pedido (ex: "2024-01-15" ou "2024-01-15 10:30:00"). Quando não informada, assume a data/hora atual. | string | não | |
| enderecoEntrega.nome | Nome do destinatário | string | 100 | sim |
| enderecoEntrega.cpfCnpj | CPF (11 dígitos) ou CNPJ (14 dígitos) do destinatário | string | 14 | sim |
| enderecoEntrega.cep | CEP do endereço de entrega (valor numérico entre 1000000 e 99999999) | string | 8 | sim |
| enderecoEntrega.cidade | Cidade do endereço de entrega (mínimo 2 caracteres) | string | 100 | sim |
| enderecoEntrega.uf | UF do endereço de entrega (2 caracteres, estado brasileiro válido) | string | 2 | sim |
| enderecoEntrega.endereco | Logradouro do endereço de entrega | string | 200 | sim |
| enderecoEntrega.numero | Número do endereço de entrega | string | 20 | sim |
| enderecoEntrega.complemento | Complemento do endereço de entrega | string | 100 | não |
| enderecoEntrega.bairro | Bairro do endereço de entrega | string | 100 | não |
| enderecoEntrega.referencia | Ponto de referência do endereço de entrega | string | 200 | não |
| enderecoEntrega.inscricaoEstadual | Inscrição estadual do destinatário (quando aplicável, ex: pedido para CNPJ) | string | 50 | não |
| enderecoEntrega.telefone | Telefone de contato do destinatário. Aceita também o campo telefones como array de strings. | string | 20 | não |
| enderecoEntrega.email | E-mail do destinatário | string | 100 | não |
| envio[].statusDescricao | Situação específica deste envio (quando o pedido tem mais de um envio) | string | 100 | não |
| envio[].tipoLogistica | Tipo de logística do envio (ex: correios, transportadora, coleta) | string | 50 | não |
| envio[].idCotacao | Identificador da cotação de frete associada ao envio | string | 100 | não |
| envio[].codigoRastreio | Código de rastreio do envio. Protegido: não é sobrescrito por valor vazio quando já existe. | string | 100 | não |
| envio[].linkRastreio | URL de rastreio do envio. Protegido: não é sobrescrito por valor vazio quando já existe. | string | 250 | não |
| envio[].nomeTransportadora | Nome da transportadora responsável pelo envio | string | 100 | não |
| envio[].nomeMetodoEnvio | Nome do método/serviço de envio (ex: PAC, Sedex, Full) | string | 100 | não |
| envio[].prazoDeEntrega | Data prometida de entrega (ex: "2024-01-20") | string | não | |
| envio[].dataEntrega | Data efetiva de entrega (ex: "2024-01-19") | string | não | |
| envio[].produtos[].sku | Código SKU do produto | string | 50 | sim |
| envio[].produtos[].titulo | Título do produto (mínimo 3 caracteres) | string | 200 | sim |
| envio[].produtos[].variacao | Variação do produto (ex: cor, tamanho, voltagem). Quando aplicável ao item. | string | 200 | não |
| envio[].produtos[].quantidade | Quantidade de itens (inteiro maior que zero) | integer | sim | |
| envio[].produtos[].preco | Preço unitário do produto (maior que zero) | float | sim | |
| envio[].produtos[].imagem | URL da imagem do produto | string | 250 | não |
| envio[].produtos[].linkAnuncio | URL pública do anúncio do produto (ex: página do item no marketplace) | string | 250 | não |
| envio[].notaFiscal.chaveNfe | Chave da Nota Fiscal Eletrônica (44 caracteres numéricos). Quando informada, número, série e CNPJ do faturador são derivados dela. | string | 44 | não |
| envio[].notaFiscal.numero | Número da NF. Usado quando a chave não é informada. | integer | não | |
| envio[].notaFiscal.serie | Série da NF. Usado quando a chave não é informada. | integer | não | |
| envio[].notaFiscal.cnpjFaturador | CNPJ do faturador da NF. Usado quando a chave não é informada. | string | 14 | não |
| envio[].notaFiscal.data | Data de emissão da NF (ex: "2024-01-15") | string | não | |
| envio[].notaFiscal.linkXmlNFe | URL do XML da NFe | string | 250 | não |
| envio[].notaFiscal.linkDanfe | URL do DANFE (PDF) da NFe | string | 250 | não |
| envio[].notaFiscal.xmlNfe | Conteúdo XML da NFe (máximo 1 MB). Será armazenado no S3 no path nfe/{chaveNfe}.xml. |
string | 1MB | não |
| envio[].dadosAdicionaisEnvio | Objeto/array livre com dados adicionais específicos do envio | object | não | |
| pagamentos[].idPagamento | Identificador do pagamento no canal/gateway | string | 100 | não |
| pagamentos[].formaPagamento | Forma de pagamento (ex: Cartão de crédito, Pix, Boleto). Quando não informada, é derivada de metodo. | string | 50 | não |
| pagamentos[].metodo | Método de pagamento no canal (código/nome original do marketplace) | string | 50 | não |
| pagamentos[].bandeira | Bandeira do cartão (ex: Visa, Mastercard) | string | 50 | não |
| pagamentos[].parcelas | Quantidade de parcelas | integer | não | |
| pagamentos[].valor | Valor total do pagamento | float | não | |
| pagamentos[].valorParcela | Valor de cada parcela | float | não | |
| pagamentos[].status | Situação do pagamento (o valor original do canal é preservado em statusCanal) | string | 50 | não |
| pagamentos[].dataPagamento | Data do pagamento (ex: "2024-01-15") | string | não | |
| dadosAdicionaisPedido | Objeto/array livre com dados adicionais do pedido | object | não |
Parâmetros de Retorno
| Campo | Descrição | Tipo | Tamanho |
| mensagem | Mensagem da operação: "sucesso" (criado) ou "Pedido já gerado" (atualizado); em erro, descreve o campo/motivo. | string | 255 |
| _id | Identificador único do pedido no MongoDB (criado ou atualizado) | string | 24 |
| chavePedido | Mesmo identificador do pedido (_id), mantido por compatibilidade | string | 24 |
| numeroPedido | Número do pedido informado na requisição | string | 100 |
| alteracoes | Presente apenas na atualização de um pedido existente: lista os campos alterados no documento. | object |
Exemplo de Resposta
JSON
{
"mensagem": "sucesso",
"chavePedido": "fe3008ade1e44c02dbcebe46a454142f",
"_id": "fe3008ade1e44c02dbcebe46a454142f",
"numeroPedido": "2368648"
}