Skip to content

📦 Grupos de Pedido do Cliente

📋 Visão Geral

O Grupo de Pedido é a unidade principal de uma compra na plataforma. Toda vez que um cliente finaliza o checkout, é criado um grupo de pedido — identificado por um código legível como #000042 — que representa a compra completa originada de um único carrinho.

Dentro de cada grupo existem uma ou mais remessas (entidade Order), cada uma vinculada a um armazém específico. Isso acontece quando os itens do carrinho são atendidos por armazéns diferentes: cada armazém gera sua própria remessa, mas todas pertencem ao mesmo grupo de pedido.

> Em resumo: o cliente comprou uma vez (um grupo), mas pode receber em múltiplas entregas (várias remessas).

Este módulo expõe os endpoints utilizados principalmente na tela de "Meus Pedidos" da Minha Conta, permitindo que o cliente:

  • Consulte a lista de suas compras com paginação e filtros
  • Visualize o detalhe completo de um grupo de pedido, incluindo status, itens, pagamentos e entregas
  • Adicione observações a um grupo de pedido
  • Envie comprovantes de pagamento para métodos que exigem confirmação manual
  • 🔄 Entidades Envolvidas

  • Cliente — dono do grupo de pedido, identificado pelo token de autenticação
  • Grupo de Pedido (OrderGroup) — compra completa originada de um carrinho, identificada pelo campo code
  • Remessa (Order) — entrega individual dentro do grupo, vinculada a um armazém específico
  • Pagamento (OrderPayment) — registro de pagamento associado ao grupo; um grupo pode ter múltiplos pagamentos (ex: dois cartões)
  • Observação (OrderObservation) — mensagem textual registrada pelo cliente no grupo, visível também para a equipe administrativa
  • Comprovante de Pagamento — arquivo enviado pelo cliente para confirmar pagamentos manuais (boleto, PIX, transferência)
  • 🗂️ Estrutura do Grupo de Pedido

    CampoTipoDescrição
    idintegerIdentificador único interno do grupo
    codestringCódigo legível exibido ao cliente — ex: #000042
    cartIdstringID do carrinho que originou este grupo
    tradePolicyIdintegerID da política comercial aplicada na compra
    salesChannelIdintegerID do canal de venda onde a compra foi realizada
    salesChannelDomainstringDomínio do canal de venda — ex: minhaloja.com.br
    currencystringMoeda utilizada no pedido — ex: BRL
    createdAtdatetimeData e hora em que o grupo foi criado
    issuedAtdatetimeData e hora de emissão oficial do pedido
    maskedbooleanIndica se dados sensíveis estão mascarados na resposta
    paymentsarrayArray de pagamentos do grupo — vazio [] sem o field payments
    ordersarrayArray de remessas — sempre presente e completo, independentemente dos fields solicitados

    🛒 Campos de marketplace (presentes mas null em compras diretas)

    CampoTipoDescrição
    marketplaceIdinteger/nullID do marketplace de origem, quando aplicável
    marketplaceNamestring/nullNome do marketplace
    marketplaceStoreCredentialIdinteger/nullID da credencial de integração com o marketplace
    marketplaceOrderGroupIdstring/nullIdentificador do grupo no sistema do marketplace

    👤 Campos de venda interna (presentes mas null em compras feitas pelo cliente)

    CampoTipoDescrição
    userIdinteger/nullID do usuário administrativo — null em compras normais
    userEmailstring/nullE-mail do usuário administrativo
    userNamestring/nullNome do usuário administrativo

    📦 Estrutura da Remessa (dentro de orders[])

    Cada remessa dentro do grupo sempre retorna os campos abaixo, independente dos fields solicitados:

    CampoTipoDescrição
    idintegerIdentificador único da remessa
    orderGroupIdintegerID do grupo ao qual esta remessa pertence
    productStorageIdintegerID do armazém responsável por atender esta remessa
    orderStatusIdintegerID do status atual da remessa
    marketplaceOrderIdstring/nullID da remessa no marketplace, quando aplicável
    maskedbooleanIndica se dados sensíveis estão mascarados
    orderGroupnullSempre null dentro da listagem/detalhe do grupo — evita referência circular
    productStorageobjectDados completos do armazém — sempre presente
    statusobjectStatus atual da remessa — sempre presente
    itemsarrayItens com dados do produto (simpleProduct) — sempre presente
    Os demais campos da remessa (customer, addresses, values, shipping, payments, discounts, additions, reserves, invoice, histories) são null por padrão e precisam ser solicitados via fields.

    🎛️ Campos Selecionáveis (fields)

    A API suporta um sistema de fields que permite ao cliente controlar quais informações adicionais são retornadas, otimizando a performance e o tamanho das respostas.

    FieldNívelDescrição
    customergrupoDados do cliente no momento da compra (nome, e-mail, documento)
    addressesgrupoEndereços de entrega registrados no pedido
    valuesgrupo + remessaValores financeiros: subtotal, frete, descontos e total
    paymentsgrupo + remessaDados completos de pagamento — no grupo, passa de [] para o array com todos os pagamentos
    paymentLogsdentro de cada pagamentoLogs de transação com a operadora de pagamento (requer payments)
    observationsgrupoObservações criadas pelo cliente no grupo
    discountsgrupo + itensDescontos aplicados nos itens e no grupo
    additionsgrupo + itensAcréscimos aplicados nos itens e no grupo
    shippingremessaDados de frete e rastreamento — código de rastreio, transportadora, previsão de entrega
    invoiceremessaDados de nota fiscal eletrônica da remessa
    reservesremessaReservas de estoque vinculadas à remessa
    statusremessaJá retornado por padrão — não é necessário solicitar
    itemsremessaJá retornado por padrão — não é necessário solicitar
    productStorageremessaJá retornado por padrão — não é necessário solicitar

    🔐 Permissão

    Todas as rotas desta seção exigem dupla autenticação:

  • PublicAuth — autenticação do canal de venda (identificação da loja/aplicação)
  • CustomerAuth — token do cliente autenticado, enviado via header Authorization: Bearer {customerToken}
  • > Requisições sem os dois tokens serão rejeitadas com erro de autenticação. O cliente só acessa grupos de pedido vinculados à sua conta — não é possível consultar grupos de outros clientes.

    📎 Comprovante de Pagamento

    O envio de comprovante é utilizado em métodos de pagamento manuais, como boleto, PIX avulso e transferência bancária, onde a confirmação de pagamento não é automática.

  • Formatos aceitos: jpeg, png, jpg, pdf, docx, doc
  • Tamanho máximo: 2 MB
  • O arquivo deve ser enviado como multipart/form-data com o campo file
  • 📌 Notas e Considerações

  • O campo orders (remessas) é sempre retornado e sempre completo — independente dos fields solicitados.
  • Os campos reserves e paymentLogs são excluídos automaticamente das respostas ao cliente por padrão, por questões de segurança e privacidade — só são retornados quando explicitamente solicitados via fields.
  • As observações criadas pelo cliente ficam registradas no grupo e são visíveis pela equipe administrativa.
  • Em grupos com múltiplos armazéns, cada remessa terá seu próprio productStorage, status e items — os valores financeiros e pagamentos são sempre consolidados no nível do grupo.

📦 Listagem de Grupos de Pedido do Cliente

GET /customer/orders/groups

Lista todos os grupos de pedido do cliente autenticado

📋 Descrição

Endpoint responsável por listar os grupos de pedido do cliente autenticado.

O grupo de pedido representa a compra completa realizada a partir de um único carrinho. Cada grupo contém uma ou mais remessas (pedidos por armazém), sempre presentes no array orders.

🔐 Permissão

  • CustomerAuth — autenticação do cliente via token JWT

📌 Campos sempre retornados na resposta

No grupo (registers[*]):

CampoDescrição
id, cartId, code, tradePolicyId, salesChannelId, salesChannelDomainIdentificadores do grupo
userId, userEmail, userNameUsuário responsável (venda interna, null em compras normais)
marketplaceId, marketplaceName, marketplaceStoreCredentialId, marketplaceOrderGroupIdDados de marketplace (null quando não aplicável)
currency, createdAt, issuedAt, maskedCampos base
paymentsArray de pagamentos do grupo (vazio [] sem o field payments)
ordersArray de remessas — sempre presente e completo
values, observations, discounts, additionsSempre presentes, null quando o field não for solicitado
Em cada remessa (orders[*]):

CampoDescrição
id, orderGroupId, productStorageId, orderStatusId, marketplaceOrderId, maskedIdentificadores base
orderGroupSempre null na listagem de grupos
productStorageDados completos do armazém — sempre presente
statusStatus atual da remessa — sempre presente
itemsItens com dados de produto (simpleProduct) — sempre presente
customer, addresses, values, shipping, discounts, additions, payments, reserves, invoice, historiesSempre presentes, null quando o field não for solicitado

📝 Parâmetros

🏷️ Headers Obrigatórios

HeaderValorDescrição
AuthorizationBearer {token}Token de autenticação do cliente

📥 Body (opcional)

1{
2 "fields": [],
3 "condition": {},
4 "order": {},
5 "pagination": {}
6}

🎛️ Campos Selecionáveis (fields)

CampoNívelDescrição
customergrupoDados do cliente no momento da compra
addressesgrupoEndereços de entrega do pedido
valuesgrupo + remessaValores financeiros (subtotal, frete, desconto, total)
paymentsgrupo + remessaDados de pagamento
paymentLogsdentro de cada pagamentoLogs de transação (requer payments)
observationsgrupoObservações adicionadas ao grupo
discountsgrupo + itensDescontos aplicados
additionsgrupo + itensAcréscimos aplicados
statusremessaJá retornado por padrão — não é necessário solicitar
itemsremessaJá retornado por padrão — não é necessário solicitar
shippingremessaDados de frete e rastreamento
invoiceremessaDados de nota fiscal
productStorageremessaJá retornado por padrão — não é necessário solicitar
reservesremessaReservas de estoque

📊 Campos de Condição Disponíveis

CampoTipoDescrição
idintegerID do grupo de pedido
codestringCódigo do grupo
cartIdstringID do carrinho de origem
salesChannelIdintegerID do canal de venda
salesChannelDomainstringDomínio do canal de venda
tradePolicyIdintegerID da política comercial
userIdintegerID do usuário (venda interna)
marketplaceStoreCredentialIdintegerID da credencial de marketplace
createdAtdatetimeData de criação
issuedAtdatetimeData de emissão
customerIdintegerID do cliente
customerEmailstringE-mail do cliente
customerDocumentstringCPF/CNPJ do cliente
orderPaymentIdintegerID do pagamento
paymentOptionIdintegerID da opção de pagamento
paymentStatusstringStatus do pagamento
transactionIdstringID da transação
shippingTableIdintegerID da tabela de frete
addressIdintegerID do endereço
zipCodestringCEP do endereço
statestringEstado do endereço
citystringCidade do endereço
countrystringPaís do endereço
orderItemProductIdintegerID do produto no item
orderItemProductSkustringSKU do produto no item
orderItemProductNamestringNome do produto no item
orderStatusIdintegerID do status do pedido
subtotalValuedecimalValor subtotal
shippingValuedecimalValor de frete
totalValuedecimalValor total
couponHashstringHash do cupom aplicado

📊 Campos de Ordenação Disponíveis

CampoDescrição
idID do grupo
createdAtData de criação
issuedAtData de emissão

💡 Exemplo de Requisição (campos base)

1curl --request GET \
2 --url '{{MAIN_URL}}/customer/orders/groups' \
3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'

💡 Exemplo de Requisição (com campos extras)

1curl --request GET \
2 --url '{{MAIN_URL}}/customer/orders/groups' \
3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \
4 --header 'Content-Type: application/json' \
5 --data '{
6 "fields": ["customer", "addresses"],
7 "pagination": { "limit": 10, "offset": 0 }
8 }'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "status": true,
3 "data": {
4 "registers": [
5 {
6 "id": 42,
7 "cartId": "a1b2c3d4-0001-4abc-9xyz-e2c94e085abc",
8 "tradePolicyId": 1,
9 "salesChannelId": 1,
10 "userId": null,
11 "userEmail": null,
12 "userName": null,
13 "code": "#000042",
14 "salesChannelDomain": "minhaloja.com.br",
15 "marketplaceId": null,
16 "marketplaceName": null,
17 "marketplaceStoreCredentialId": null,
18 "marketplaceOrderGroupId": null,
19 "currency": "BRL",
20 "createdAt": "2026-03-10 09:22:11",
21 "issuedAt": "2026-03-10 09:22:11",
22 "masked": false,
23 "payments": [],
24 "customer": null,
25 "addresses": null,
26 "values": null,
27 "observations": null,
28 "discounts": null,
29 "additions": null,
30 "orders": [
31 {
32 "id": 87,
33 "orderGroupId": 42,
34 "productStorageId": 2,
35 "orderStatusId": 5,
36 "marketplaceOrderId": null,
37 "masked": false,
38 "orderGroup": null,
39 "productStorage": {
40 "id": 2,
41 "code": "cd-sp",
42 "corporateName": "Empresa Exemplo LTDA",
43 "email": "logistica@empresa.com.br",
44 "phone": "+5511987654321",
45 "tradeName": "CD São Paulo",
46 "stateCode": "BR-SP",
47 "countryCode": "BRA",
48 "document": "98765432000199",
49 "zipCode": "04538133",
50 "city": "São Paulo",
51 "address": "Av. Brigadeiro Faria Lima",
52 "district": "Itaim Bibi",
53 "number": "3477",
54 "complement": null,
55 "latitude": "-23.5789",
56 "longitude": "-46.6892",
57 "active": true,
58 "observation": null,
59 "tradePolicyExceptions": []
60 },
61 "status": {
62 "id": 5,
63 "orderStatusParentId": null,
64 "code": "delivered",
65 "name": "Entregue",
66 "icon": "check_circle",
67 "children": []
68 },
69 "customer": null,
70 "addresses": null,
71 "values": null,
72 "shipping": null,
73 "discounts": null,
74 "additions": null,
75 "items": [
76 {
77 "id": 203,
78 "orderId": 87,
79 "productId": 55,
80 "name": "Tênis Running Pro",
81 "description": "Tênis para corrida profissional",
82 "sku": "TEN-RUN-42",
83 "priceRule": null,
84 "priceRuleId": null,
85 "quantity": 1,
86 "unitValue": 349.90,
87 "unitAdditionValue": 0,
88 "unitDiscountValue": 0,
89 "subtotalValue": 349.90,
90 "subtotalAdditionValue": 0,
91 "subtotalDiscountValue": 0,
92 "totalValue": 349.90,
93 "service": false,
94 "generateGiftCard": false,
95 "discounts": null,
96 "additions": null,
97 "simpleProduct": {
98 "productId": 55,
99 "brandId": 7,
100 "brandName": "SportMax",
101 "mainCategoryId": 12,
102 "mainCategoryName": "Calçados Esportivos",
103 "type": "product",
104 "sku": "TEN-RUN-42",
105 "name": "Tênis Running Pro",
106 "active": true,
107 "url": "/tenis-running-pro",
108 "comparisonPrice": 429.90,
109 "stock": 14,
110 "medias": [],
111 "combination": [],
112 "currentAttributes": [],
113 "restriction": null
114 }
115 }
116 ],
117 "payments": null,
118 "reserves": null,
119 "invoice": null,
120 "histories": null
121 }
122 ]
123 }
124 ],
125 "pagination": {
126 "limit": 10,
127 "offset": 0,
128 "pages": 3,
129 "registers": 27
130 }
131 }
132}

🎛️ Campos Opcionais por fields

customer (nível grupo)

1"customer": {
2 "orderGroupId": 42,
3 "customerId": 18,
4 "customerNameCorporateName": "Maria Fernanda Souza",
5 "customerTradeName": null,
6 "customerEmail": "maria.fernanda@email.com.br",
7 "customerDocument": "987.654.321-00",
8 "customerDocument2": "",
9 "customerPhone": "(21) 98765-4321",
10 "customerIsCorporate": false,
11 "customerGender": "female",
12 "customerBirthdate": "1995-11-23"
13}

addresses (nível grupo)

1"addresses": [
2 {
3 "orderGroupId": 42,
4 "customerAddressType": "delivery",
5 "customerAddressId": 31,
6 "addressZipCode": "22071-900",
7 "addressRecipient": "Maria Fernanda Souza",
8 "addressStreet": "Rua Visconde de Pirajá",
9 "addressNumber": "550",
10 "addressDistrict": "Ipanema",
11 "addressCity": "Rio de Janeiro",
12 "addressState": "Rio de Janeiro",
13 "addressStateCode": "RJ",
14 "addressCountryCode": "BRA",
15 "addressComplement": "Bloco B, Sala 12"
16 }
17]

values (nível grupo e remessa)

No grupo:

1"values": {
2 "subtotalValue": 349.90,
3 "additionValue": 0.00,
4 "shippingValue": 22.50,
5 "discountValue": 35.00,
6 "totalValue": 337.40
7}

Na remessa (dentro de orders[*]):

1"values": {
2 "orderId": 87,
3 "subtotalValue": 349.90,
4 "additionValue": 0.00,
5 "shippingValue": 22.50,
6 "discountValue": 35.00,
7 "totalValue": 337.40
8}

shipping (nível remessa)

1"shipping": {
2 "orderId": 87,
3 "shippingTableId": 3,
4 "label": "SEDEX",
5 "shippingCarrierId": 1,
6 "shippingCarrier": "Correios",
7 "shippingIntegrationCode": "SEDEX",
8 "beginShippingTime": 1,
9 "endShippingTime": 3,
10 "initialDeliveryForecast": "2026-03-11 09:00:00",
11 "finalDeliveryForecast": "2026-03-13 18:00:00",
12 "shippingValue": 22.50,
13 "trackingCode": "BR987654321BR",
14 "reverseLogisticsCode": null,
15 "trackingUrl": null,
16 "schedule": false,
17 "scheduleDay": null,
18 "scheduleHour": null,
19 "pickUpDetails": null
20}

payments (nível grupo e remessa)

No grupo, o array payments passa de [] para os pagamentos completos. Na remessa, payments passa de null para o array de pagamentos da remessa:

1"payments": [
2 {
3 "id": 76,
4 "orderGroupId": 42,
5 "orderId": 87,
6 "customerCardId": 9,
7 "paymentType": "credit-card",
8 "paymentProof": "",
9 "paymentExpirationDate": "",
10 "paymentOptionId": 3,
11 "parentPaymentOptionId": null,
12 "paymentOptionLabel": "Cartão de Crédito",
13 "paymentOptionDetail": "Visa",
14 "integrationName": "cielo",
15 "transactionId": "TXN-9f3a2b1c-0042",
16 "currentStatus": "approved",
17 "paymentAntiFraudId": null,
18 "paymentAntiFraudCredentialId": null,
19 "antiFraudStatus": null,
20 "pixQrCode": null,
21 "pixEmv": null,
22 "billetBarCode": null,
23 "billetDigitableLine": null,
24 "billetUrl": null,
25 "cardAutomaticCapture": true,
26 "cardMasked": "<strong></strong>5678",
27 "cardFlag": "visa",
28 "cardExpiration": "09/2029",
29 "value": 337.40,
30 "installment": 3,
31 "installmentValue": 112.47,
32 "fee": 0.00,
33 "orderGroup": null,
34 "logs": []
35 }
36]

observations (nível grupo)

1"observations": [
2 {
3 "id": 14,
4 "orderGroupId": 42,
5 "userId": null,
6 "userEmail": null,
7 "text": "Produto com embalagem para presente, por favor.",
8 "createdAt": "2026-03-10 09:25:00"
9 }
10]

⚠️ Possíveis Erros

> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.

Código do ErroHTTPDescrição
EXPIRED_AUTH_TOKEN401Token de autenticação expirado
INVALID_AUTH_TOKEN401Token de autenticação inválido ou ausente
INVALID_CUSTOMER401Cliente associado ao token indisponível ou desativado

📦 Detalhe de Grupo de Pedido do Cliente

GET /customer/orders/groups/{orderGroupId}

Retorna os dados completos de um grupo de pedido do cliente autenticado

📋 Descrição

Endpoint responsável por retornar o detalhe completo de um grupo de pedido do cliente autenticado.

O grupo de pedido representa a compra completa — inclui todas as remessas geradas (orders), os pagamentos realizados, os valores consolidados e as observações registradas.

> A estrutura de resposta é idêntica à da listagem (GET /customer/orders/groups), com a diferença que data é o objeto do grupo diretamente, sem registers nem pagination.

🔐 Permissão

  • CustomerAuth — autenticação do cliente via token JWT

📌 Campos sempre presentes na resposta

Os mesmos da listagem se aplicam aqui. Consulte a documentação de Listagem de Grupos de Pedido para referência completa dos campos e do parâmetro fields.

📝 Parâmetros

🏷️ Headers Obrigatórios

HeaderValorDescrição
AuthorizationBearer {token}Token de autenticação do cliente

🔗 Parâmetros de URL

ParâmetroTipoObrigatórioDescrição
orderGroupIdinteger✅ SimID do grupo de pedido a ser consultado

📥 Body (opcional)

1{
2 "fields": ["customer", "addresses", "values", "payments", "shipping"]
3}

Os campos disponíveis em fields são os mesmos da listagem. Consulte a documentação de Listagem de Grupos de Pedido.

💡 Exemplo de Requisição

1curl --request GET \
2 --url '{{MAIN_URL}}/customer/orders/groups/42' \
3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \
4 --header 'Content-Type: application/json' \
5 --data '{
6 "fields": ["customer", "addresses"]
7 }'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1{
2 "status": true,
3 "data": {
4 "id": 42,
5 "cartId": "a1b2c3d4-0001-4abc-9xyz-e2c94e085abc",
6 "tradePolicyId": 1,
7 "salesChannelId": 1,
8 "userId": null,
9 "userEmail": null,
10 "userName": null,
11 "code": "#000042",
12 "salesChannelDomain": "minhaloja.com.br",
13 "marketplaceId": null,
14 "marketplaceName": null,
15 "marketplaceStoreCredentialId": null,
16 "marketplaceOrderGroupId": null,
17 "currency": "BRL",
18 "createdAt": "2026-03-10 09:22:11",
19 "issuedAt": "2026-03-10 09:22:11",
20 "masked": false,
21 "payments": [],
22 "customer": {
23 "orderGroupId": 42,
24 "customerId": 18,
25 "customerNameCorporateName": "Maria Fernanda Souza",
26 "customerTradeName": null,
27 "customerEmail": "maria.fernanda@email.com.br",
28 "customerDocument": "987.654.321-00",
29 "customerDocument2": "",
30 "customerPhone": "(21) 98765-4321",
31 "customerIsCorporate": false,
32 "customerGender": "female",
33 "customerBirthdate": "1995-11-23"
34 },
35 "addresses": [
36 {
37 "orderGroupId": 42,
38 "customerAddressType": "delivery",
39 "customerAddressId": 31,
40 "addressZipCode": "22071-900",
41 "addressRecipient": "Maria Fernanda Souza",
42 "addressStreet": "Rua Visconde de Pirajá",
43 "addressNumber": "550",
44 "addressDistrict": "Ipanema",
45 "addressCity": "Rio de Janeiro",
46 "addressState": "Rio de Janeiro",
47 "addressStateCode": "RJ",
48 "addressCountryCode": "BRA",
49 "addressComplement": "Bloco B, Sala 12"
50 }
51 ],
52 "values": null,
53 "observations": null,
54 "discounts": null,
55 "additions": null,
56 "orders": [
57 {
58 "id": 87,
59 "orderGroupId": 42,
60 "productStorageId": 2,
61 "orderStatusId": 5,
62 "marketplaceOrderId": null,
63 "masked": false,
64 "orderGroup": null,
65 "productStorage": {
66 "id": 2,
67 "code": "cd-sp",
68 "corporateName": "Empresa Exemplo LTDA",
69 "email": "logistica@empresa.com.br",
70 "phone": "+5511987654321",
71 "tradeName": "CD São Paulo",
72 "stateCode": "BR-SP",
73 "countryCode": "BRA",
74 "document": "98765432000199",
75 "zipCode": "04538133",
76 "city": "São Paulo",
77 "address": "Av. Brigadeiro Faria Lima",
78 "district": "Itaim Bibi",
79 "number": "3477",
80 "complement": null,
81 "latitude": "-23.5789",
82 "longitude": "-46.6892",
83 "active": true,
84 "observation": null,
85 "tradePolicyExceptions": []
86 },
87 "status": {
88 "id": 5,
89 "orderStatusParentId": null,
90 "code": "delivered",
91 "name": "Entregue",
92 "icon": "check_circle",
93 "children": []
94 },
95 "customer": null,
96 "addresses": null,
97 "values": null,
98 "shipping": null,
99 "discounts": null,
100 "additions": null,
101 "items": [
102 {
103 "id": 203,
104 "orderId": 87,
105 "productId": 55,
106 "name": "Tênis Running Pro",
107 "description": "Tênis para corrida profissional",
108 "sku": "TEN-RUN-42",
109 "priceRule": null,
110 "priceRuleId": null,
111 "quantity": 1,
112 "unitValue": 349.90,
113 "unitAdditionValue": 0,
114 "unitDiscountValue": 0,
115 "subtotalValue": 349.90,
116 "subtotalAdditionValue": 0,
117 "subtotalDiscountValue": 0,
118 "totalValue": 349.90,
119 "service": false,
120 "generateGiftCard": false,
121 "discounts": null,
122 "additions": null,
123 "simpleProduct": {
124 "productId": 55,
125 "brandId": 7,
126 "brandName": "SportMax",
127 "mainCategoryId": 12,
128 "mainCategoryName": "Calçados Esportivos",
129 "type": "product",
130 "sku": "TEN-RUN-42",
131 "name": "Tênis Running Pro",
132 "active": true,
133 "url": "/tenis-running-pro",
134 "comparisonPrice": 429.90,
135 "stock": 14,
136 "medias": [],
137 "combination": [],
138 "currentAttributes": [],
139 "restriction": null
140 }
141 }
142 ],
143 "payments": null,
144 "reserves": null,
145 "invoice": null,
146 "histories": null
147 }
148 ]
149 }
150}

⚠️ Possíveis Erros

> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.

Código do ErroHTTPDescrição
EXPIRED_AUTH_TOKEN401Token de autenticação expirado
INVALID_AUTH_TOKEN401Token de autenticação inválido ou ausente
INVALID_CUSTOMER401Cliente associado ao token indisponível ou desativado
UAPPI_STORE_ORDER_GROUP_NOT_FOUND404Grupo de pedido não encontrado ou não pertence ao cliente autenticado

💬 Criar Observação em Grupo de Pedido

POST /customer/orders/groups/{orderGroupId}/observation

Cria uma observação textual em um grupo de pedido do cliente autenticado

📋 Descrição

Endpoint responsável por criar uma observação em um grupo de pedido do cliente autenticado.

Permite ao cliente comunicar informações adicionais sobre o pedido, como preferências de entrega, instruções especiais ou esclarecimentos. As observações ficam registradas no grupo de pedido e são visíveis para a equipe administrativa.

🔐 Permissão

  • CustomerAuth — autenticação do cliente via token JWT

📝 Parâmetros

🏷️ Headers Obrigatórios

HeaderValorDescrição
AuthorizationBearer {token}Token de autenticação do cliente
Content-Typeapplication/jsonTipo de conteúdo

🔗 Parâmetros de URL

ParâmetroTipoObrigatórioDescrição
orderGroupIdinteger✅ SimID do grupo de pedido onde a observação será criada

📥 Corpo da Requisição

CampoTipoObrigatórioDescrição
textstring✅ SimTexto da observação — sem limite de caracteres definido

💡 Exemplo de Requisição

1curl --request POST \
2 --url '{{MAIN_URL}}/customer/orders/groups/55/observation' \
3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \
4 --header 'Content-Type: application/json' \
5 --data '{
6 "text": "Por favor, entregar após as 18h. Interfone 202."
7 }'

✅ Resposta de Sucesso

HTTP Status: 201 Created

1{
2 "status": true,
3 "data": {
4 "id": 10,
5 "orderGroupId": 55,
6 "userId": null,
7 "userEmail": null,
8 "text": "Por favor, entregar após as 18h. Interfone 202.",
9 "createdAt": "2026-04-23 10:00:00"
10 }
11}

⚠️ Possíveis Erros

> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.

Código do ErroHTTPDescrição
EXPIRED_AUTH_TOKEN401Token de autenticação expirado
INVALID_AUTH_TOKEN401Token de autenticação inválido ou ausente
INVALID_CUSTOMER401Cliente associado ao token indisponível ou desativado
UAPPI_STORE_ORDER_GROUP_NOT_FOUND404Grupo de pedido não encontrado ou não pertence ao cliente autenticado

📎 Enviar Comprovante de Pagamento

POST /customer/orders/groups/{orderGroupId}/payments/{orderPaymentId}/payment-proof

Envia o comprovante de pagamento para um pagamento pendente de confirmação manual

📋 Descrição

Endpoint responsável por enviar o comprovante de pagamento de um pedido do cliente autenticado.

Utilizado em métodos de pagamento que exigem confirmação manual, como transferência bancária, depósito ou Pix com validação. O arquivo enviado é armazenado e disponibilizado para a equipe administrativa realizar a confirmação do pagamento.

🔐 Permissão

  • CustomerAuth — autenticação do cliente via token JWT

📝 Parâmetros

🏷️ Headers Obrigatórios

HeaderValorDescrição
AuthorizationBearer {token}Token de autenticação do cliente
Content-Typemultipart/form-dataTipo de conteúdo — obrigatório para envio de arquivo

🔗 Parâmetros de URL

ParâmetroTipoObrigatórioDescrição
orderGroupIdinteger✅ SimID do grupo de pedido
orderPaymentIdinteger✅ SimID do pagamento ao qual o comprovante será vinculado

📥 Corpo da Requisição (multipart/form-data)

CampoTipoObrigatórioDescrição
paymentProoffile✅ SimArquivo do comprovante — formatos aceitos: jpeg, png, jpg, pdf, doc — tamanho máximo: 2 MB

💡 Exemplo de Requisição

1curl --request POST \
2 --url '{{MAIN_URL}}/customer/orders/groups/55/payments/22/payment-proof' \
3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \
4 --header 'Content-Type: multipart/form-data' \
5 --form 'paymentProof=@/caminho/para/comprovante.pdf'

✅ Resposta de Sucesso

HTTP Status: 201 Created

1{
2 "status": true,
3 "data": true
4}

⚠️ Possíveis Erros

> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.

Código do ErroHTTPDescrição
EXPIRED_AUTH_TOKEN401Token de autenticação expirado
INVALID_AUTH_TOKEN401Token de autenticação inválido ou ausente
INVALID_CUSTOMER401Cliente associado ao token indisponível ou desativado
UAPPI_STORE_ORDER_GROUP_NOT_FOUND404Grupo de pedido não encontrado ou não pertence ao cliente autenticado
UAPPI_STORE_ORDER_PAYMENT_NOT_FOUND404Pagamento não encontrado no grupo de pedido

Rastreio de Grupo de Pedido do Cliente

GET /customer/orders/groups/{orderGroupId}/tracking

Consulta o rastreio ao vivo de todas as remessas de um grupo de pedido do cliente autenticado.

Descrição

Consulta o rastreio em tempo real de todas as remessas de um grupo de pedido pertencente ao cliente autenticado. As consultas são realizadas de forma concorrente, cada remessa sendo consultada diretamente na API da transportadora responsável.

> Propriedade validada: se o orderGroupId não pertencer ao cliente autenticado, a resposta será um array vazio.

A resposta é sempre um array — uma entrada por remessa do grupo. Remessas com falha de rastreio são incluídas com o campo error preenchido, permitindo visualização parcial sem interromper as demais consultas.

Permissão

  • CustomerAuth — autenticação do cliente via token JWT

Parâmetros

Headers Obrigatórios

HeaderValorDescrição
AuthorizationBearer {token}Token de autenticação do cliente

Parâmetros de URL

ParâmetroTipoObrigatórioDescrição
orderGroupIdintegerSimID do grupo de pedido

Exemplo de Requisição

1curl --request GET \
2 --url '{{MAIN_URL}}/customer/orders/groups/456/tracking' \
3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'

✅ Resposta de Sucesso

HTTP Status: 200 OK

1[
2 {
3 "orderId": 123,
4 "trackingCode": "AA123456789BR",
5 "trackingUrl": "https://correios.com.br/rastreio/AA123456789BR",
6 "status": "em_transito",
7 "events": [
8 {
9 "date": "2026-05-01T10:30:00",
10 "description": "Objeto em trânsito",
11 "location": "São Paulo / SP"
12 }
13 ],
14 "invoiceNumber": "000123",
15 "invoiceKey": "35260412345678901234550010001234561234567890",
16 "invoiceSerie": "1",
17 "error": null
18 }
19]

Campos da Resposta

CampoTipoDescrição
orderIdintegerID da remessa
trackingCodestring\nullCódigo de rastreio emitido pela transportadora
trackingUrlstring\nullURL do site da transportadora para acompanhamento visual
statusstring\nullStatus atual do pedido na transportadora
eventsarrayHistórico cronológico de movimentações. Cada item contém date, description e location
invoiceNumberstring\nullNúmero da nota fiscal
invoiceKeystring\nullChave de acesso NF-e (44 dígitos)
invoiceSeriestring\nullSérie da nota fiscal
errorstring\nullCódigo de erro quando o rastreio não pôde ser obtido. null indica sucesso

⚠️ Possíveis Erros

> Os cenários abaixo representam os principais erros que podem ocorrer neste endpoint, servindo como referência para entendimento e tratamento das falhas.

Erros de domínio por remessa (sem código de rastreio, integração não configurada etc.) são retornados dentro da própria resposta HTTP 200 — o campo error de cada item indica a falha específica.

Código do ErroHTTPDescrição
EXPIRED_AUTH_TOKEN401Token de autenticação expirado
INVALID_AUTH_TOKEN401Token de autenticação inválido ou ausente
INVALID_CUSTOMER401Cliente associado ao token indisponível ou desativado
MISSING_TRACKING_CODE200Remessa ainda não possui código de rastreio. Verifique o campo error do item.
TRACKING_NOT_SUPPORTED200A integração de frete não oferece rastreio. Verifique o campo error do item.

Uappi é a melhor opção para o crescimento da sua loja!

;