🏠 Endereços do Cliente (Admin)
📋 Visão Geral
O módulo de Endereços do Cliente permite que usuários administrativos gerenciem os endereços dos clientes cadastrados na loja.
Por meio dele, é possível consultar, criar, atualizar e remover endereços, além de definir o endereço principal de um cliente, centralizando a gestão dessas informações no painel administrativo.
🔄 Entidades Envolvidas
O módulo opera sobre uma única entidade principal:
Endereço do Cliente (CustomerAddress)
Representa um local físico vinculado a um cliente. Os campos que compõem um endereço são:
id— identificador único gerado automaticamente pela plataformamain— indica se este é o endereço principal do cliente, usado como padrão em entregas e cobrançasidentification— apelido livre definido pelo cliente (ex:"Casa","Trabalho"), não precisa ser únicozipCode— CEP ou código postalstreet,number,complement,district,city— campos do logradouro;complementaceita string vazia quando não houver complementostate— nome completo do estadostateCode— código do estado no formato alpha-2 prefixado pelo país (ex:BR-SP), deve pertencer ao país informadocountryCode— código do país no formato alpha-3 (ex:BRA,USA,PRT)recipient— nome do destinatário que receberá no endereço (limite de 255 caracteres)createdAteupdatedAt— datas de criação e última atualização, gerenciadas pela plataforma- A exclusão de um endereço é permanente e irreversível — os dados não podem ser recuperados após a remoção.
countryCodedeve estar no formato alpha-3 (3 letras). Caso o país não seja encontrado, a API retorna o erroUAPPI_STORE_CUSTOMER_ADDRESS_COUNTRY_NOT_FOUND.stateCodedeve ser um código válido pertencente ao país informado. Caso o estado não seja encontrado, a API retornaUAPPI_STORE_CUSTOMER_ADDRESS_STATE_NOT_FOUND.
Todos os campos de texto, exceto recipient, têm limite máximo de 100 caracteres.
O primeiro endereço cadastrado para um cliente é definido automaticamente como principal. Ao definir um novo endereço como principal, o anterior perde o status automaticamente — apenas um endereço pode ser principal por vez.
📌 Notas e Considerações
🏠 Detalhe do Endereço do Cliente
/customers/{customerId}/address/{addressId}
Endpoint responsável por retornar o detalhe de um endereço do cliente
📄 Descrição
Endpoint responsável por retornar os detalhes completos de um endereço específico vinculado a um cliente 🏠.
A resposta contempla todas as informações cadastradas para o endereço, permitindo consulta detalhada para fins administrativos, validação ou suporte.
📋 Parâmetros de Query
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| customerId | integer | Sim | ID do cliente |
| addressId | integer | Sim | ID do endereço |
Exemplo de Requisição
1curl --request GET \2 --url '{{MAIN_URL}}/customers/123/address/456' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "id": 456,5 "main": true,6 "zipCode": "01310100",7 "identification": "Casa",8 "street": "Av. Paulista",9 "number": "1000",10 "city": "São Paulo",11 "complement": "Apto 101",12 "district": "Bela Vista",13 "state": "São Paulo",14 "recipient": "João Silva",15 "stateCode": "SP",16 "countryCode": "BRA",17 "createdAt": "2026-01-10 10:30:00",18 "updatedAt": "2026-01-15 14:20:00"19 }20}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
| UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não foi encontrado |
| UAPPI_STORE_INVALID_ADDRESS | 404 | Endereço não foi encontrado |
🏠 Criação de Endereço do Cliente
/customers/{customerId}/address
Endpoint responsável por criar um novo endereço para o cliente
📄 Descrição
Endpoint que permite aos usuários administrativos criar um novo endereço para um cliente 🏠.
Quando se trata do primeiro endereço cadastrado, ele é automaticamente definido como endereço principal, garantindo um padrão inicial para operações como entrega e cobrança.
📋 Parâmetros de Query
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
Content-Type | application/json | Tipo do conteúdo |
Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| customerId | integer | Sim | ID do cliente |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| zipCode | string | Sim | CEP/Código postal (máximo 100 caracteres) |
| identification | string | Sim | Identificação do endereço (máximo 100 caracteres) |
| countryCode | string | Sim | Código do país no formato alpha-3 (ex: BRA) |
| stateCode | string | Sim | Código do estado (ex: BR-SP) |
| state | string | Sim | Nome do estado (máximo 100 caracteres) |
| city | string | Sim | Nome da cidade (máximo 100 caracteres) |
| street | string | Sim | Nome da rua (máximo 100 caracteres) |
| number | string | Sim | Número (máximo 100 caracteres) |
| complement | string | Sim | Complemento (máximo 100 caracteres) - Enviar string vazia se não houver |
| district | string | Sim | Bairro (máximo 100 caracteres) |
| recipient | string | Sim | Nome do destinatário (máximo 255 caracteres) |
Exemplo de Requisição
1curl --request POST \2 --url '{{MAIN_URL}}/customers/123/address' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \4 --header 'Content-Type: application/json' \5 --data '{6 "zipCode": "01310100",7 "identification": "Casa",8 "countryCode": "BRA",9 "stateCode": "SP",10 "state": "São Paulo",11 "city": "São Paulo",12 "street": "Av. Paulista",13 "number": "1000",14 "complement": "Apto 101",15 "district": "Bela Vista",16 "recipient": "João Silva"17 }'✅ Resposta de Sucesso
HTTP Status: 201 Created
1{2 "status": true,3 "data": {4 "id": 456,5 "main": false,6 "zipCode": "01310100",7 "identification": "Casa",8 "street": "Av. Paulista",9 "number": "1000",10 "city": "São Paulo",11 "complement": "Apto 101",12 "district": "Bela Vista",13 "state": "São Paulo",14 "recipient": "João Silva",15 "stateCode": "SP",16 "countryCode": "BRA",17 "createdAt": "2026-01-01 10:30:00",18 "updatedAt": "2026-01-01 10:30:00"19 }20}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
| UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não foi encontrado |
| UAPPI_STORE_CUSTOMER_ADDRESS_COUNTRY_NOT_FOUND | 404 | O país solicitado não foi encontrado |
| UAPPI_STORE_CUSTOMER_ADDRESS_STATE_NOT_FOUND | 404 | O estado solicitado não foi encontrado |
🏠 Atualização de Endereço do Cliente
/customers/{customerId}/address/{addressId}
Endpoint responsável por atualizar um endereço do cliente
📄 Descrição
Endpoint que permite aos usuários administrativos atualizar um endereço existente de um cliente 🏠.
A operação possibilita a alteração das informações previamente cadastradas, garantindo que os dados de envio e cobrança permaneçam atualizados no sistema.
📋 Parâmetros de Query
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
Content-Type | application/json | Tipo do conteúdo |
Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| customerId | integer | Sim | ID do cliente |
| addressId | integer | Sim | ID do endereço |
Parâmetros do Corpo
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| zipCode | string | Sim | CEP/Código postal (máximo 100 caracteres) |
| identification | string | Sim | Identificação do endereço (máximo 100 caracteres) |
| countryCode | string | Sim | Código do país no formato alpha-3 (ex: BRA) |
| stateCode | string | Sim | Código do estado (ex: BR-SP) |
| state | string | Sim | Nome do estado (máximo 100 caracteres) |
| city | string | Sim | Nome da cidade (máximo 100 caracteres) |
| street | string | Sim | Nome da rua (máximo 100 caracteres) |
| number | string | Sim | Número (máximo 100 caracteres) |
| complement | string | Sim | Complemento (máximo 100 caracteres) - Enviar string vazia se não houver |
| district | string | Sim | Bairro (máximo 100 caracteres) |
| recipient | string | Sim | Nome do destinatário (máximo 255 caracteres) |
Exemplo de Requisição
1curl --request PUT \2 --url '{{MAIN_URL}}/customers/123/address/456' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \4 --header 'Content-Type: application/json' \5 --data '{6 "zipCode": "01310100",7 "identification": "Trabalho",8 "countryCode": "BRA",9 "stateCode": "SP",10 "state": "São Paulo",11 "city": "São Paulo",12 "street": "Av. Paulista",13 "number": "2000",14 "complement": "Sala 501",15 "district": "Bela Vista",16 "recipient": "João Silva"17 }'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": {4 "id": 456,5 "main": false,6 "zipCode": "01310100",7 "identification": "Trabalho",8 "street": "Av. Paulista",9 "number": "2000",10 "city": "São Paulo",11 "complement": "Sala 501",12 "district": "Bela Vista",13 "state": "São Paulo",14 "recipient": "João Silva",15 "stateCode": "SP",16 "countryCode": "BRA",17 "createdAt": "2026-01-10 10:30:00",18 "updatedAt": "2026-01-15 14:20:00"19 }20}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
| UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não foi encontrado |
| UAPPI_STORE_INVALID_ADDRESS | 404 | Endereço não foi encontrado |
| UAPPI_STORE_CUSTOMER_ADDRESS_COUNTRY_NOT_FOUND | 404 | O país solicitado não foi encontrado |
| UAPPI_STORE_CUSTOMER_ADDRESS_STATE_NOT_FOUND | 404 | O estado solicitado não foi encontrado |
🗑️ Remoção de Endereço do Cliente
/customers/{customerId}/address/{addressId}
Endpoint responsável por remover um endereço do cliente
📄 Descrição
Endpoint que permite aos usuários administrativos remover um endereço de um cliente 🗑️.
A exclusão é definitiva e permanente, não sendo possível recuperar o endereço após a remoção.
Essa operação deve ser realizada com atenção, pois impacta diretamente dados utilizados em processos como entrega e cobrança.
Ao remover um endereço:
- Remoção definitiva: O endereço é removido permanentemente do banco de dados
- Endereço principal: Se o endereço removido for o principal, outro endereço será automaticamente definido como principal
📋 Parâmetros de Query
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {usertoken} | Token de autenticação do usuário |
Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| customerId | integer | Sim | ID do cliente |
| addressId | integer | Sim | ID do endereço |
Exemplo de Requisição
1curl --request DELETE \2 --url '{{MAIN_URL}}/customers/123/address/456' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": true4}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
| UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não foi encontrado |
| UAPPI_STORE_INVALID_ADDRESS | 404 | Endereço não foi encontrado |
📍 Atualização do Endereço Principal
/customers/{customerId}/address/main/{addressId}
Endpoint responsável por definir o endereço principal do cliente
📄 Descrição
Endpoint que permite aos usuários administrativos definir qual endereço será o endereço principal de um cliente 🏠.
O endereço principal é utilizado como padrão em operações de envio e cobrança, impactando diretamente o fluxo de pedidos.
Ao definir um novo endereço como principal, as seguintes regras são aplicadas:
- Remoção do anterior: o endereço que era principal terá o flag
mainremovido - Novo principal: o endereço informado passa a assumir o flag
main: true
Essa lógica garante que apenas um endereço permaneça como principal por vez, mantendo a consistência dos dados.
📋 Parâmetros de Query
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
Parâmetros de URL
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| customerId | integer | Sim | ID do cliente |
| addressId | integer | Sim | ID do endereço que será definido como principal |
Exemplo de Requisição
1curl --request PUT \2 --url '{{MAIN_URL}}/customers/123/address/main/456' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": true4}⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
| UAPPI_STORE_CUSTOMER_NOT_FOUND | 404 | Cliente não foi encontrado |
| UAPPI_STORE_INVALID_ADDRESS | 404 | Endereço não foi encontrado |
📄 Exemplo de Arquivo para Importação de Endereços
/customers/address/import/example
Endpoint responsável por retornar o arquivo de exemplo para importação de endereços
📄 Descrição
Endpoint responsável por retornar um arquivo CSV de exemplo para importação de endereços 📄.
O arquivo contém o cabeçalho com todas as colunas obrigatórias, servindo como referência para o correto preenchimento dos dados.
Esse modelo pode ser utilizado como base para preparar e validar o arquivo de importação, reduzindo erros no processamento.
📋 Parâmetros de Query
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
Exemplo de Requisição
1curl --request GET \2 --url '{{MAIN_URL}}/customers/address/import/example' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \4 --output customer-address-example.csv✅ Resposta de Sucesso
HTTP Status: 200 OK
Content-Type: application/octet-stream
Content-Disposition: attachment; filename="customer-address-example.csv"
O arquivo retornado contém o seguinte cabeçalho:
1Email,Identification,Zip code,Street,Number,District,City,State code,Country code,Complement,RecipientDescrição das Colunas
| Coluna | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| string | Sim | E-mail do cliente cadastrado (usado para vincular o endereço) | |
| Identification | string | Sim | Identificação do endereço (ex: Casa, Trabalho) |
| Zip code | string | Sim | CEP/Código postal |
| Street | string | Sim | Nome da rua |
| Number | string | Sim | Número |
| District | string | Sim | Bairro |
| City | string | Sim | Nome da cidade |
| State code | string | Sim | Código do estado (ex: SP, RJ, MG) |
| Country code | string | Sim | Código do país no formato alpha-3 (ex: BRA) |
| Complement | string | Não | Complemento do endereço |
| Recipient | string | Sim | Nome do destinatário |
Exemplo de Arquivo Preenchido
1Email,Identification,Zip code,Street,Number,District,City,State code,Country code,Complement,Recipient2cliente@email.com,Casa,01310100,Av. Paulista,1000,Bela Vista,São Paulo,SP,BRA,Apto 101,João Silva3cliente2@email.com,Trabalho,22041080,Av. Atlântica,500,Copacabana,Rio de Janeiro,RJ,BRA,,Maria Santos📂 Importação de Endereços de Clientes
/customers/address/import
Endpoint responsável por importar endereços de clientes através de arquivo CSV
📄 Descrição
Endpoint que permite aos usuários administrativos importar endereços de clientes em massa por meio de um arquivo CSV 📂.
O arquivo deve seguir exatamente o modelo disponibilizado no endpoint de exemplo, garantindo que os dados estejam no formato correto para processamento.
O limite máximo permitido é de 5.000 linhas por arquivo, assegurando controle e estabilidade na importação.
📋 Parâmetros de Query
Headers Obrigatórios
| Header | Valor | Descrição |
|---|---|---|
Authorization | Bearer {userToken} | Token de autenticação do usuário |
Content-Type | multipart/form-data | Tipo do conteúdo |
Parâmetros do Corpo (multipart/form-data)
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| file | file | Sim | Arquivo CSV com os endereços (máximo 4MB, mimetype: text/csv) |
| salesChannelId | integer | Sim | ID do canal de vendas |
Estrutura do Arquivo CSV
O arquivo CSV deve conter as seguintes colunas:
| Coluna | Descrição |
|---|---|
| E-mail do cliente (identificador para vincular o endereço) | |
| Identification | Identificação do endereço (ex: Casa, Trabalho) |
| Zip code | CEP/Código postal |
| Street | Nome da rua |
| Number | Número |
| District | Bairro |
| City | Nome da cidade |
| State code | Código do estado (ex: SP) |
| Country code | Código do país (formato alpha-3, ex: BRA) |
| Complement | Complemento |
| Recipient | Nome do destinatário |
Exemplo de Requisição
1curl --request POST \2 --url '{{MAIN_URL}}/customers/address/import' \3 --header 'Authorization: Bearer SEU_TOKEN_AQUI' \4 --header 'Content-Type: multipart/form-data' \5 --form 'file=@customer-addresses.csv' \6 --form 'salesChannelId=1'✅ Resposta de Sucesso
HTTP Status: 200 OK
1{2 "status": true,3 "data": [4 {5 "id": 456,6 "externalId": "cliente@email.com",7 "error": null,8 "identification": "Casa",9 "zipCode": "01310100",10 "street": "Av. Paulista",11 "number": "1000",12 "district": "Bela Vista",13 "city": "São Paulo",14 "stateCode": "SP",15 "countryCode": "BRA",16 "complement": "Apto 101",17 "recipient": "João Silva"18 },19 {20 "id": null,21 "externalId": "cliente2@email.com",22 "error": "UAPPI_STORE_CUSTOMER_NOT_FOUND",23 "identification": "Trabalho",24 "zipCode": "01310200",25 "street": "Av. Brasil",26 "number": "500",27 "district": "Centro",28 "city": "São Paulo",29 "stateCode": "SP",30 "countryCode": "BRA",31 "complement": "",32 "recipient": "Maria Santos"33 }34 ]35}Estrutura da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
| id | integer/null | ID do endereço criado (null se houver erro) |
| externalId | string | E-mail do cliente usado como identificador |
| error | string/null | Código do erro (null se sucesso) |
| identification | string | Identificação do endereço |
| zipCode | string | CEP/Código postal |
| street | string | Nome da rua |
| number | string | Número |
| district | string | Bairro |
| city | string | Nome da cidade |
| stateCode | string | Código do estado |
| countryCode | string | Código do país |
| complement | string | Complemento |
| recipient | string | Nome do destinatário |
⚠️ Possíveis erros:
Atenção: a seguir estão destacados os principais erros que podem ocorrer neste endpoint.
Os cenários descritos representam os erros mais relevantes do contexto atual, servindo como referência para entendimento e tratamento das falhas.
| Código Interno | Código HTTP | Descrição |
|---|---|---|
| UAPPI_CORE_IMPORT_FILE_HEADER_REQUIRED | 400 | O arquivo não possui cabeçalho |
| UAPPI_CORE_IMPORT_FILE_REQUIRED_FIELDS | 400 | O arquivo não possui os campos obrigatórios |
| UAPPI_CORE_IMPORT_FILE_LINE_LIMIT | 400 | O arquivo excede o limite de 5000 linhas |
Possíveis Erros por Linha
| Código do Erro | Descrição |
|---|---|
| UAPPI_STORE_CUSTOMER_NOT_FOUND | Cliente não encontrado com o e-mail informado |