VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API legada/Referência completa/Pedidos: rotas sem versão e app do seller

Itens, reembolso e histórico sem versão

Lê os itens, pede o reembolso e consulta o histórico de status de um pedido em /api/orders/{id}/..., com ids decimais.

Três consultas e ações auxiliares do pedido, na forma da API 1.0 sem o prefixo de versão. Os ids no caminho e na resposta são decimais em string (o UUID também é aceito). As regras completas estão em Consultar pedido, Reembolsos e Histórico do pedido. Todas exigem um administrador.

GET/api/orders/{id}/productsAdmin

Itens de um pedido, forma sem versão

Devolve só as linhas do pedido, no mesmo formato de products do detalhe. É o atalho que conectores de ERP e de marketplace usam para ler os itens sem baixar o pedido inteiro.

Parâmetros de caminho

idstringobrigatório
Id do pedido, decimal em string (ou UUID).
POST/api/orders/{id}/refundAdmin

Reembolsar um pedido, forma sem versão

Pede ao gateway que devolva o valor do pedido. Sem amount, devolve o saldo ainda não reembolsado. O corpo é opcional. Se o pedido não tem cobrança confirmada no gateway (pagamento na entrega, pedido de teste), nenhum dinheiro se move: a plataforma grava um registro manual só para auditoria e a resposta é 200 com refund_transaction vazio. Chave de API de seller só estorna pedidos da própria loja.

Parâmetros de caminho

idstringobrigatório
Id do pedido, decimal em string (ou UUID).

Corpo da requisição (opcional)

amountinteger
Valor a devolver em centavos (inteiro, 1000 = R$ 10,00), mesmo nesta API que usa string decimal nas respostas. Zero, negativo ou omitido devolve o saldo restante. Valor acima do saldo é limitado ao saldo.
GET/api/orders/{id}/status-historyAdmin

Histórico de status de um pedido, forma sem versão

Devolve as mudanças de status, da mais antiga para a mais recente. Mudanças de pagamento não entram: o log é só de status do pedido.

Parâmetros de caminho

idstringobrigatório
Id do pedido, decimal em string (ou UUID).

Exemplo de requisição

bash
curl "$BASE_URL/api/orders/1794666195/products" -u "$EMAIL:$API_KEY"

curl -X POST "$BASE_URL/api/orders/1794666195/refund" \
  -u "$EMAIL:$API_KEY" -H "Content-Type: application/json" \
  -d '{"amount":1000}'

curl "$BASE_URL/api/orders/1794666195/status-history" -u "$EMAIL:$API_KEY"

Resposta

200Itens do pedido
json
{
  "products": [
    {
      "item_id": "607887120",
      "product_id": "592384622",
      "product": "Doc Bulk Caneca",
      "product_code": "DOCBULK-002",
      "price": "49.90",
      "amount": 1,
      "discount": "7.24",
      "subtotal": "49.90",
      "total": "42.66"
    }
  ]
}
200Reembolso feito
json
{
  "order_id": "1794666195",
  "refund_transaction": "re_9Vq2kLxYzNwB41pD",
  "amount": "10.00"
}
200Histórico de status
json
{
  "history": [
    { "changed_at": 1791752125, "changed_by": "", "from_status": "O", "to_status": "O", "notes": "order_created" },
    { "changed_at": 1791752798, "changed_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc", "from_status": "O", "to_status": "P", "notes": "" }
  ]
}

Campos da resposta

products[].item_idstring
Id da linha do pedido, decimal em string.
products[].product_idstring
Id do produto, decimal em string.
products[].productstring
Nome do produto na hora da compra.
products[].product_codestring
SKU.
products[].pricestring
Preço unitário, string decimal.
products[].amountinteger
Quantidade.
products[].discountstring
Desconto da linha, string decimal.
products[].subtotalstring
Preço vezes quantidade, antes do desconto.
products[].totalstring
Total da linha depois do desconto.
order_idstring
(Reembolso) Id do pedido, decimal em string.
refund_transactionstring
(Reembolso) Id da transação de estorno no gateway. Vazio quando não havia cobrança para devolver.
amountstring
(Reembolso) Valor devolvido, em string decimal ("10.00"), ao contrário do amount da requisição.
history[].changed_atinteger
Momento da mudança, Unix timestamp em segundos.
history[].changed_bystring
Id do usuário que mudou o status. Continua em UUID mesmo nesta forma sem versão. Vazio quando foi o sistema.
history[].from_statusstring
Letra do status anterior.
history[].to_statusstring
Letra do novo status.
history[].notesstring
Observação da mudança (order_created na criação).

Erros

StatusQuandoCorpo
400Valor ou estorno recusado pelo gateway; pedido já totalmente reembolsado{"message":"order ... has already been fully refunded (refunded: ..., total: ...)","status":400}
400{id} em formato inválido{"message":"Invalid id","status":400}
401Sem credenciais, chave inválida ou token expirado{"message":"Invalid credentials","status":401}
403Usuário que não é administrador{"message":"Forbidden: admin scope required","status":403}
404{id} decimal que não corresponde a nenhum pedido{"message":"Not found","status":404}
500Pedido inexistente (UUID válido que não existe){"error":"internal server error"}
501A loja não tem serviço de pagamentos ligado{"message":"refund not implemented: payments service not wired","status":501}
amount é centavos na entrada e reais na saída

O corpo do refund pede o amount como inteiro em centavos (1000), mas a resposta devolve "10.00" em string decimal. Enviar 10.00 ou "10.00" é lido como zero e reembolsa o pedido inteiro.

Pedido inexistente vira 500 nestas rotas

Um UUID válido de pedido que não existe responde 500 (e não 404) em products, refund e status-history. Trate 500 aqui como "pedido não encontrado" quando o id vier de fonte não confiável. Com id decimal que não corresponde a nada, a resposta é 404.

Veja também

  • Um pedido
  • Reembolsos
  • Histórico do pedido
Anterior
Um pedido sem versão
Próxima
Ganchos de ERP sem versão
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também