Pedidos por token de app
Acesso de aplicativos de terceiros aos pedidos, com token vat_ e escopos read_orders e write_orders, sem usuário administrador.
Um app de terceiros (um conector de ERP, um sistema de logística, uma ferramenta de BI) normalmente não deve usar o login de uma pessoa. A plataforma oferece outra forma de acesso: o app é cadastrado no portal de desenvolvedores da loja, recebe um token de app (começa com vat_live_ ou vat_test_) e só pode o que os escopos aprovados permitem.
As rotas de pedidos para apps ficam sob /api/admin/... (sem /v1.0) e aceitam esse token. Elas têm o seu próprio formato de resposta: valores em centavos (inteiros), datas em RFC 3339 e ids UUID, diferente das rotas /api/v1.0 desta seção, que usam string decimal e Unix timestamp. Esta página descreve o cabeçalho, os escopos, as rotas disponíveis e o formato de cada uma.
Rotas disponíveis com token de app
| Rota | Escopo | O que faz |
|---|---|---|
GET /api/admin/orders | read_orders | Lista pedidos, com filtros e paginação. |
GET /api/admin/orders/{id} | read_orders | Consulta um pedido com itens, endereços e histórico. |
PUT /api/admin/orders/{id}/status | write_orders | Muda o status do pedido. |
GET /api/admin/orders/{id}/shipments | read_orders | Lista as remessas do pedido. |
POST /api/admin/orders/{id}/shipments | write_orders | Cria uma remessa com rastreio. |
GET /api/admin/orders/{id}/tracking | read_orders | Resumo plano do rastreio (primeira remessa): tracking_code, carrier, status, url. Responde 404 se o pedido não tem remessa. |
GET /api/admin/users/{id}/orders | read_orders | Lista os pedidos de um cliente (mesmo formato da lista de pedidos). |
Não há rota de criação, cancelamento, reembolso ou edição por token de app: para isso use a API de administração com um usuário.
/api/admin/ordersAutenticadaToken de app: listar pedidos
Lista os pedidos da loja, do mais novo para o mais antigo. Escopo read_orders.
Parâmetros de consulta
pageintegerpadrão: 1per_pageintegerpadrão: 20sort_bystringpadrão: created_atcreated_attotalorder_numberstatuscustomer_namecustomer_emailsort_dirstringpadrão: descascdescstatusstringprocessing) ou pela letra (P) do cadastro de status da loja.payment_statusstringpendingauthorizedcapturedpaidrefundedfaileddate_fromstringYYYY-MM-DD ou RFC 3339.date_tostringYYYY-MM-DD o dia inteiro entra.searchstring/api/admin/orders/{id}AutenticadaToken de app: consultar um pedido
Devolve um envelope com o pedido (order), os itens (items), os endereços (addresses) e o histórico de status (status_history). Valores em centavos e datas RFC 3339. Escopo read_orders.
Parâmetros de caminho
iduuidobrigatório/api/admin/orders/{id}/statusAutenticadaToken de app: mudar o status de um pedido
Muda o status do pedido e devolve o pedido atualizado. Escopo write_orders. O histórico registra a mudança como feita por um sistema, sem usuário. Aqui o status vale pelas regras de transição da plataforma, diferente de PUT /api/v1.0/orders/{id}, que aceita qualquer letra em qualquer ordem.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
statusstringobrigatórioshipped) ou pela letra (S) do cadastro da loja.notesstringexpected_updated_atstring/api/admin/orders/{id}/shipmentsAutenticadaToken de app: listar os envios de um pedido
Lista as remessas do pedido, com os itens de cada uma. Escopo read_orders.
Parâmetros de caminho
iduuidobrigatório/api/admin/orders/{id}/shipmentsAutenticadaToken de app: criar um envio
Cria uma remessa com os itens e as quantidades informadas. A plataforma confere que os itens são do pedido e que não se envia mais do que o pedido tem. Com tracking_code, a remessa nasce como enviada e o cliente recebe o e-mail de rastreio; sem o código, nasce pendente. Criar uma remessa não muda o status do pedido: faça isso com a rota de status. Escopo write_orders. Como não há usuário, o campo created_by da remessa fica vazio.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
itemsarrayobrigatórioorder_item_id, quantity_shipped).carrierstringtracking_codestringnotesstringExemplo de requisição
curl "$BASE_URL/api/admin/orders?status=processing&per_page=50" \
-H "Authorization: Bearer $APP_TOKEN"
curl -X PUT "$BASE_URL/api/admin/orders/$ORDER_ID/status" \
-H "Authorization: Bearer $APP_TOKEN" -H "Content-Type: application/json" \
-d '{"status":"shipped","notes":"Coletado pela transportadora"}'Resposta
Por exemplo, a lista de pedidos:
{
"orders": [
{
"id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
"order_number": "PEDIDO-20261010-0004",
"total": 22500,
"status": "P",
"status_text": "processing",
"created_at": "2026-10-11T02:56:25.843882Z"
}
],
"total": 1,
"page": 1,
"per_page": 20,
"total_pages": 1
}Campos da resposta
ordersarrayid, order_number, total (centavos), status (letra), status_text (código do status), payment_status, customer_name, customer_email e created_at.totalintegerpageintegerper_pageintegertotal_pagesintegershipments[]arrayid, order_id, tracking_code, carrier, status (letra), shipped_at e items (order_item_id, quantity_shipped, product_name, product_sku).Erros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, ou um JWT de usuário no lugar de um token de app | {"error":"app_token_required"} |
| 401 | Token de app inválido, revogado ou expirado | {"error":"invalid or expired app access token"} |
| 403 | O app não tem o escopo exigido pela rota | {"error":"missing_scope","required":"write_orders"} |
| 400 | Id 0 ou vazio no caminho | {"error":"invalid id parameter"} |
| 404 | Pedido inexistente | {"error":"order not found"} |
| 400 | Transição de status inválida | {"error":"invalid_transition","detail":"..."} |