Consultar um endereço
Recupera um endereço específico pelo seu identificador público (addr...), devolvendo o objeto completo — componentes do endereço, coordenadas, dono associado e links HATEOAS. Use quando precisar exibi
Recupera um endereço específico pelo seu identificador público (addr_...), devolvendo o objeto completo — componentes do endereço, coordenadas, dono associado e links HATEOAS. Use quando precisar exibir, conferir ou pré-carregar os dados de um endereço antes de atualizá-lo, processar um checkout ou calcular frete.
GET /v1/addresses/{addressId}
Como funciona
Esta é uma operação de leitura (read): não altera nada no servidor, é segura e idempotente (chamar várias vezes devolve sempre o mesmo resultado, sem efeitos colaterais). Você informa o addressId no caminho da URL e a API responde com o objeto completo do endereço.
Diferentemente da listagem — que devolve projeções leves (alguns campos omitidos) dentro de um envelope paginado — a consulta individual devolve o objeto completo, no nível raiz da resposta (não dentro de data). Em especial, ela inclui os campos formatados line, line1, line2 e line3, que não aparecem nos itens da lista.
Cada resposta também traz um bloco _links (padrão HATEOAS — links que dizem ao cliente quais ações são possíveis a partir daqui). A partir de uma consulta, você descobre as URLs para atualizar (update), excluir (delete), criar (create) e listar (list) endereços sem precisar montá-las à mão.
Quando usar
- Conferir antes de atualizar: carregue o estado atual antes de enviar um PUT de atualização (que substitui o registro inteiro).
- Checkout e perfil: exibir um endereço salvo do cliente na tela de pagamento ou na área da conta.
- Logística: obter os componentes (e coordenadas, quando preenchidas) para cálculo de frete e roteirização.
Quando NÃO usar: se você precisa de vários endereços ou quer filtrar por cliente, não faça várias consultas em laço — use a listagem com o filtro customerid e paginação. A consulta individual é para quando você já tem o addressId exato.
Requisição
Headers
| Cabeçalho | Obrigatório | Valor |
|---|---|---|
SelectKey | Sim | Sua chave de API (sl_live_... em produção, sl_test_... em sandbox). Nunca use Authorization: Bearer/Basic. Veja Autenticação. |
Por ser uma leitura sem corpo, não envie Content-Type nem X-Idempotency-Key.
Parâmetros de caminho
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
addressId | string | Sim | Identificador público do endereço, no formato addr_.... Trate-o como opaco — não faça parsing. Ex.: addr_01hqzvabc. |
Exemplo curl
curl https://api.selectwin.io/v1/addresses/addr_01hqzvabc \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"Resposta
200 OK — o corpo é o objeto completo do endereço no nível raiz.
{
"id": "addr_01hqzvabc",
"ownerType": "customer",
"ownerId": "cus_01hqzvabc",
"street": "Av. Paulista",
"number": "1000",
"complement": "Sala 1",
"district": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"country": "BR",
"postcode": "01310100",
"latitude": null,
"longitude": null,
"primary": true,
"line": "Av. Paulista, 1000 - Bela Vista, São Paulo - SP, 01310100",
"line1": "Av. Paulista",
"line2": "1000",
"line3": "Bela Vista",
"metadata": null,
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z",
"merchant": {
"name": "Seller Name",
"merchantId": "bus_1234567890",
"isSubAccount": false
},
"_links": {
"self": {
"href": "https://api.selectwin.io/v1/addresses/addr_01hqzvabc",
"method": "GET",
"description": "Read a address."
},
"create": {
"href": "https://api.selectwin.io/v1/addresses",
"method": "POST",
"description": "Create a new address."
},
"update": {
"href": "https://api.selectwin.io/v1/addresses/addr_01hqzvabc",
"method": "PUT",
"description": "Update the address."
},
"delete": {
"href": "https://api.selectwin.io/v1/addresses/addr_01hqzvabc",
"method": "DELETE",
"description": "Delete the address."
},
"list": {
"href": "https://api.selectwin.io/v1/addresses",
"method": "GET",
"description": "List all addresses."
}
}
}Campos da resposta
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador público do endereço (addr_...). |
ownerType | string | Tipo do dono ao qual o endereço pertence (ex.: customer). |
ownerId | string | ID do dono (ex.: cus_01hqzvabc). |
street | string | Logradouro. |
number | string | Número. |
complement | string | Complemento (pode vir vazio). |
district | string | Bairro. |
city | string | Cidade. |
state | string | UF / estado. |
country | string | Código ISO do país (2–3 letras, ex.: BR). |
postcode | string | CEP (pode vir com ou sem hífen). |
latitude | number | null | Latitude, quando disponível; null se não geocodificado. |
longitude | number | null | Longitude, quando disponível; null se não geocodificado. |
primary | boolean | Indica se é o endereço principal do dono. |
line | string | Endereço completo formatado em uma única linha. |
line1 / line2 / line3 | string | Partes do endereço formatado, úteis para etiquetas e exibição. |
metadata | object | null | Objeto livre com dados seus (ex.: { "source": "checkout" }); null se não houver. |
createdAt | string (date-time) | Criação, em ISO 8601 UTC (...Z). |
updatedAt | string (date-time) | Última atualização, em ISO 8601 UTC. |
merchant | object | Conta dona dos dados — name, merchantId, isSubAccount. |
_links | object | Links HATEOAS (self, create, update, delete, list) com href, method e description. |
Nota
Os campos line, line1, line2 e line3 aparecem na consulta individual (e no create/update), mas não nos itens de uma listagem, que são projeções leves. Se precisar das linhas formatadas para um endereço vindo de uma lista, faça uma consulta por id.
Erros
error.code | HTTP | Quando ocorre |
|---|---|---|
addressIdNotFound | 404 | Nenhum endereço com esse addressId existe (ou não pertence à sua conta). |
invalidParameters | 400 | addressId malformado / fora do padrão addr_.... |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | Autenticado, mas sem permissão para ler este endereço. |
tooManyRequests | 429 | Limite de requisições excedido — respeite o backoff (veja API Limits). |
serverError | 500 | Erro interno — tente novamente com backoff. |
Trate sempre pelo error.code (estável), nunca pela message. Exemplo de envelope 404:
{
"error": {
"code": "addressIdNotFound",
"statusCode": 404,
"category": "client",
"message": "Address not found"
}
}Veja Tratamento de Erros e o Catálogo de Códigos de Erro.
Boas práticas
- Trate o
addressIdcomo opaco. Armazene a string inteira; não a derive de outros campos nem confie no comprimento. Veja Convenções. - Distinga 404 de 400.
addressIdNotFound(404) significa "não existe";invalidParameters(400) significa "formato inválido". Em UI, mostre mensagens diferentes. - Confira o dono antes de operações sensíveis. Valide
ownerType/ownerIdpara garantir que o endereço pertence ao cliente esperado antes de cobrar ou despachar. - Cache com prudência. Endereços mudam pouco, então cache curto é aceitável; invalide ao receber atualização ou exclusão, e use
updatedAtcomo referência de frescor. - Navegue pelos
_links. Use_links.update/_links.deleteda própria resposta em vez de montar URLs manualmente — isso mantém seu código resiliente a mudanças. - Coordenadas podem ser
null. Não assumalatitude/longitudepreenchidos; trate o caso nulo antes de integrar com mapas ou cálculo de distância. - Converta datas só na exibição.
createdAt/updatedAtchegam em UTC (...Z); converta para o fuso do usuário apenas na tela.
Veja também
- Visão geral de Endereços — modelo do objeto e todas as operações.
- Listar endereços — buscar vários, com filtro por cliente e paginação.
- Atualizar endereço — substituir o registro completo (PUT).
- Criar endereço — cadastrar um novo endereço.
- Excluir endereço — remover um endereço.
- Convenções · Autenticação · Códigos de Erro
How is this guide?