PUT api/v1/pedido

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": "",
  "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",
    "telefone": "11999998888",
    "email": "joao@email.com"
  },
  "envio": [
    {
      "produtos": [
        {
          "sku": "SKU-001",
          "titulo": "Camiseta Básica",
          "variacao": "Cor: Azul / Tamanho: M",
          "quantidade": 2,
          "preco": 49.90
        }
      ],
      "notaFiscal": {
        "chaveNfe": "35240112345678000195550010000000011000000019",
        "xmlNfe": "..."
      }
    }
  ]
}

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
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.telefone Telefone de contato do destinatário string 20 não
enderecoEntrega.email E-mail do destinatário string 100 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[].notaFiscal.chaveNfe Chave da Nota Fiscal Eletrônica (44 caracteres numéricos) string 44 não
envio[].notaFiscal.xmlNfe Conteúdo XML da NFe (máximo 1 MB). Será armazenado no S3 string 1MB não

Parâmetros de Retorno

Campo Descrição Tipo Tamanho
_id Identificador único do pedido no MongoDB (criado ou atualizado) string 24
mensagem Mensagem de sucesso ou erro da operação string 255

Exemplo de Resposta

JSON
{
  "_id": "507f1f77bcf86cd799439011",
  "mensagem": "sucesso"
}