📦 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
- Cliente — dono do grupo de pedido, identificado pelo token de autenticação
- Grupo de Pedido (
OrderGroup) — compra completa originada de um carrinho, identificada pelo campocode - 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)
PublicAuth— autenticação do canal de venda (identificação da loja/aplicação)CustomerAuth— token do cliente autenticado, enviado via headerAuthorization: Bearer {customerToken}- Formatos aceitos:
jpeg,png,jpg,pdf,docx,doc - Tamanho máximo:
2 MB - O arquivo deve ser enviado como
multipart/form-datacom o campofile - O campo
orders(remessas) é sempre retornado e sempre completo — independente dos fields solicitados. - Os campos
reservesepaymentLogssã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 viafields. - 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,statuseitems— os valores financeiros e pagamentos são sempre consolidados no nível do grupo.
🔄 Entidades Envolvidas
🗂️ Estrutura do Grupo de Pedido
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | Identificador único interno do grupo |
code | string | Código legível exibido ao cliente — ex: #000042 |
cartId | string | ID do carrinho que originou este grupo |
tradePolicyId | integer | ID da política comercial aplicada na compra |
salesChannelId | integer | ID do canal de venda onde a compra foi realizada |
salesChannelDomain | string | Domínio do canal de venda — ex: minhaloja.com.br |
currency | string | Moeda utilizada no pedido — ex: BRL |
createdAt | datetime | Data e hora em que o grupo foi criado |
issuedAt | datetime | Data e hora de emissão oficial do pedido |
masked | boolean | Indica se dados sensíveis estão mascarados na resposta |
payments | array | Array de pagamentos do grupo — vazio [] sem o field payments |
orders | array | Array de remessas — sempre presente e completo, independentemente dos fields solicitados |
🛒 Campos de marketplace (presentes mas null em compras diretas)
| Campo | Tipo | Descrição |
|---|---|---|
marketplaceId | integer/null | ID do marketplace de origem, quando aplicável |
marketplaceName | string/null | Nome do marketplace |
marketplaceStoreCredentialId | integer/null | ID da credencial de integração com o marketplace |
marketplaceOrderGroupId | string/null | Identificador do grupo no sistema do marketplace |
👤 Campos de venda interna (presentes mas null em compras feitas pelo cliente)
| Campo | Tipo | Descrição |
|---|---|---|
userId | integer/null | ID do usuário administrativo — null em compras normais |
userEmail | string/null | E-mail do usuário administrativo |
userName | string/null | Nome do usuário administrativo |
📦 Estrutura da Remessa (dentro de orders[])
Cada remessa dentro do grupo sempre retorna os campos abaixo, independente dos fields solicitados:
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | Identificador único da remessa |
orderGroupId | integer | ID do grupo ao qual esta remessa pertence |
productStorageId | integer | ID do armazém responsável por atender esta remessa |
orderStatusId | integer | ID do status atual da remessa |
marketplaceOrderId | string/null | ID da remessa no marketplace, quando aplicável |
masked | boolean | Indica se dados sensíveis estão mascarados |
orderGroup | null | Sempre null dentro da listagem/detalhe do grupo — evita referência circular |
productStorage | object | Dados completos do armazém — sempre presente |
status | object | Status atual da remessa — sempre presente |
items | array | Itens com dados do produto (simpleProduct) — sempre presente |
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.
| Field | Nível | Descrição |
|---|---|---|
customer | grupo | Dados do cliente no momento da compra (nome, e-mail, documento) |
addresses | grupo | Endereços de entrega registrados no pedido |
values | grupo + remessa | Valores financeiros: subtotal, frete, descontos e total |
payments | grupo + remessa | Dados completos de pagamento — no grupo, passa de [] para o array com todos os pagamentos |
paymentLogs | dentro de cada pagamento | Logs de transação com a operadora de pagamento (requer payments) |
observations | grupo | Observações criadas pelo cliente no grupo |
discounts | grupo + itens | Descontos aplicados nos itens e no grupo |
additions | grupo + itens | Acréscimos aplicados nos itens e no grupo |
shipping | remessa | Dados de frete e rastreamento — código de rastreio, transportadora, previsão de entrega |
invoice | remessa | Dados de nota fiscal eletrônica da remessa |
reserves | remessa | Reservas de estoque vinculadas à remessa |
status | remessa | Já retornado por padrão — não é necessário solicitar |
items | remessa | Já retornado por padrão — não é necessário solicitar |
productStorage | remessa | Já retornado por padrão — não é necessário solicitar |
🔐 Permissão
Todas as rotas desta seção exigem dupla autenticação:
> 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.
📌 Notas e Considerações
📦 Listagem de Grupos de Pedido do Cliente
/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[*]):
| Campo | Descrição |
|---|---|
id, cartId, code, tradePolicyId, salesChannelId, salesChannelDomain | Identificadores do grupo |
userId, userEmail, userName | Usuário responsável (venda interna, null em compras normais) |
marketplaceId, marketplaceName, marketplaceStoreCredentialId, marketplaceOrderGroupId | Dados de marketplace (null quando não aplicável) |
currency, createdAt, issuedAt, masked | Campos base |
payments | Array de pagamentos do grupo (vazio [] sem o field payments) |
orders | Array de remessas — sempre presente e completo |
values, observations, discounts, additions | Sempre presentes, null quando o field não for solicitado |
orders[*]):| Campo | Descrição |
|---|---|
id, orderGroupId, productStorageId, orderStatusId, marketplaceOrderId, masked | Identificadores base |
orderGroup | Sempre null na listagem de grupos |
productStorage | Dados completos do armazém — sempre presente |
status | Status atual da remessa — sempre presente |
items | Itens com dados de produto (simpleProduct) — sempre presente |
customer, addresses, values, shipping, discounts, additions, payments, reserves, invoice, histories | Sempre presentes, null quando o field não for solicitado |
📝 Parâmetros
🏷️ Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
📥 Body (opcional)
1{2 "fields": [],3 "condition": {},4 "order": {},5 "pagination": {}6}🎛️ Campos Selecionáveis (fields)
| Campo | Nível | Descrição |
|---|---|---|
customer | grupo | Dados do cliente no momento da compra |
addresses | grupo | Endereços de entrega do pedido |
values | grupo + remessa | Valores financeiros (subtotal, frete, desconto, total) |
payments | grupo + remessa | Dados de pagamento |
paymentLogs | dentro de cada pagamento | Logs de transação (requer payments) |
observations | grupo | Observações adicionadas ao grupo |
discounts | grupo + itens | Descontos aplicados |
additions | grupo + itens | Acréscimos aplicados |
status | remessa | Já retornado por padrão — não é necessário solicitar |
items | remessa | Já retornado por padrão — não é necessário solicitar |
shipping | remessa | Dados de frete e rastreamento |
invoice | remessa | Dados de nota fiscal |
productStorage | remessa | Já retornado por padrão — não é necessário solicitar |
reserves | remessa | Reservas de estoque |
📊 Campos de Condição Disponíveis
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | ID do grupo de pedido |
code | string | Código do grupo |
cartId | string | ID do carrinho de origem |
salesChannelId | integer | ID do canal de venda |
salesChannelDomain | string | Domínio do canal de venda |
tradePolicyId | integer | ID da política comercial |
userId | integer | ID do usuário (venda interna) |
marketplaceStoreCredentialId | integer | ID da credencial de marketplace |
createdAt | datetime | Data de criação |
issuedAt | datetime | Data de emissão |
customerId | integer | ID do cliente |
customerEmail | string | E-mail do cliente |
customerDocument | string | CPF/CNPJ do cliente |
orderPaymentId | integer | ID do pagamento |
paymentOptionId | integer | ID da opção de pagamento |
paymentStatus | string | Status do pagamento |
transactionId | string | ID da transação |
shippingTableId | integer | ID da tabela de frete |
addressId | integer | ID do endereço |
zipCode | string | CEP do endereço |
state | string | Estado do endereço |
city | string | Cidade do endereço |
country | string | País do endereço |
orderItemProductId | integer | ID do produto no item |
orderItemProductSku | string | SKU do produto no item |
orderItemProductName | string | Nome do produto no item |
orderStatusId | integer | ID do status do pedido |
subtotalValue | decimal | Valor subtotal |
shippingValue | decimal | Valor de frete |
totalValue | decimal | Valor total |
couponHash | string | Hash do cupom aplicado |
📊 Campos de Ordenação Disponíveis
| Campo | Descrição |
|---|---|
id | ID do grupo |
createdAt | Data de criação |
issuedAt | Data 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": null114 }115 }116 ],117 "payments": null,118 "reserves": null,119 "invoice": null,120 "histories": null121 }122 ]123 }124 ],125 "pagination": {126 "limit": 10,127 "offset": 0,128 "pages": 3,129 "registers": 27130 }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.407}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.408}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": null20}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 Erro | HTTP | Descrição |
|---|---|---|
EXPIRED_AUTH_TOKEN | 401 | Token de autenticação expirado |
INVALID_AUTH_TOKEN | 401 | Token de autenticação inválido ou ausente |
INVALID_CUSTOMER | 401 | Cliente associado ao token indisponível ou desativado |
📦 Detalhe de Grupo de Pedido do Cliente
/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
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
🔗 Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
orderGroupId | integer | ✅ Sim | ID 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": null140 }141 }142 ],143 "payments": null,144 "reserves": null,145 "invoice": null,146 "histories": null147 }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 Erro | HTTP | Descrição |
|---|---|---|
EXPIRED_AUTH_TOKEN | 401 | Token de autenticação expirado |
INVALID_AUTH_TOKEN | 401 | Token de autenticação inválido ou ausente |
INVALID_CUSTOMER | 401 | Cliente associado ao token indisponível ou desativado |
UAPPI_STORE_ORDER_GROUP_NOT_FOUND | 404 | Grupo de pedido não encontrado ou não pertence ao cliente autenticado |
💬 Criar Observação em Grupo de Pedido
/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
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
Content-Type | application/json | Tipo de conteúdo |
🔗 Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
orderGroupId | integer | ✅ Sim | ID do grupo de pedido onde a observação será criada |
📥 Corpo da Requisição
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
text | string | ✅ Sim | Texto 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 Erro | HTTP | Descrição |
|---|---|---|
EXPIRED_AUTH_TOKEN | 401 | Token de autenticação expirado |
INVALID_AUTH_TOKEN | 401 | Token de autenticação inválido ou ausente |
INVALID_CUSTOMER | 401 | Cliente associado ao token indisponível ou desativado |
UAPPI_STORE_ORDER_GROUP_NOT_FOUND | 404 | Grupo de pedido não encontrado ou não pertence ao cliente autenticado |
📎 Enviar Comprovante de Pagamento
/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
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
Content-Type | multipart/form-data | Tipo de conteúdo — obrigatório para envio de arquivo |
🔗 Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
orderGroupId | integer | ✅ Sim | ID do grupo de pedido |
orderPaymentId | integer | ✅ Sim | ID do pagamento ao qual o comprovante será vinculado |
📥 Corpo da Requisição (multipart/form-data)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
paymentProof | file | ✅ Sim | Arquivo 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": true4}⚠️ 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 Erro | HTTP | Descrição |
|---|---|---|
EXPIRED_AUTH_TOKEN | 401 | Token de autenticação expirado |
INVALID_AUTH_TOKEN | 401 | Token de autenticação inválido ou ausente |
INVALID_CUSTOMER | 401 | Cliente associado ao token indisponível ou desativado |
UAPPI_STORE_ORDER_GROUP_NOT_FOUND | 404 | Grupo de pedido não encontrado ou não pertence ao cliente autenticado |
UAPPI_STORE_ORDER_PAYMENT_NOT_FOUND | 404 | Pagamento não encontrado no grupo de pedido |
Rastreio de Grupo de Pedido do Cliente
/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
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {token} | Token de autenticação do cliente |
Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
orderGroupId | integer | Sim | ID 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": null18 }19]Campos da Resposta
| Campo | Tipo | Descrição | |
|---|---|---|---|
orderId | integer | ID da remessa | |
trackingCode | string\ | null | Código de rastreio emitido pela transportadora |
trackingUrl | string\ | null | URL do site da transportadora para acompanhamento visual |
status | string\ | null | Status atual do pedido na transportadora |
events | array | Histórico cronológico de movimentações. Cada item contém date, description e location | |
invoiceNumber | string\ | null | Número da nota fiscal |
invoiceKey | string\ | null | Chave de acesso NF-e (44 dígitos) |
invoiceSerie | string\ | null | Série da nota fiscal |
error | string\ | null | Có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 Erro | HTTP | Descrição |
|---|---|---|
EXPIRED_AUTH_TOKEN | 401 | Token de autenticação expirado |
INVALID_AUTH_TOKEN | 401 | Token de autenticação inválido ou ausente |
INVALID_CUSTOMER | 401 | Cliente associado ao token indisponível ou desativado |
MISSING_TRACKING_CODE | 200 | Remessa ainda não possui código de rastreio. Verifique o campo error do item. |
TRACKING_NOT_SUPPORTED | 200 | A integração de frete não oferece rastreio. Verifique o campo error do item. |