HomeGuidesAPI Reference
Log In
Guides

Como adicionar um endereço a uma entidade

📘

Os endereços não são criados por um endpoint separado. O endereço é registrado junto com a entidade, incluindo os campos de endereço no mesmo payload do POST api/Entity (veja Como criar um cliente, fornecedor, transportadora ou funcionário).

O endereço é opcional, mas é validado como um bloco de tudo-ou-nada: se você preencher qualquer campo de endereço, o bloco inteiro passa a ser obrigatório.

Campos de endereço

CampoDescriçãoObrigatório dentro do bloco?
streetLogradouro / avenida (até 100 caracteres)Sim
zipCodeCEP (até 9 caracteres)Sim
districtBairro (até 60 caracteres)Sim
cityCidade (até 50 caracteres)Sim
initialsStateSigla do estado (ex.: SP, RJ). Pode ser satisfeito indiretamente via state — veja abaixo.Sim
complementComplemento do endereço — apartamento, bloco, andar (até 100 caracteres)Não
typeAddressCodeTipo de endereço: 1 = Residencial, 2 = Comercial, 3 = Faturamento, 4 = Entrega, 5 = CobrançaNão
stateNome completo do estado / distrito (ex.: São Paulo). Fallback para initialsState — veja abaixo.Não
countryNome completo do país (ex.: Brasil). Usado apenas para desambiguar state — veja abaixo.Não
🚧

O bloco de endereço é tudo-ou-nada. Se você preencher qualquer um dos campos street, zipCode, district, city ou initialsState, todos os cinco tornam-se obrigatórios. Se algum faltar, a requisição é rejeitada com: Os campos de endereço '...' são obrigatórios se qualquer outro campo relacionado ao endereço for preenchido.

state, initialsState e country

Estes três campos trabalham em conjunto para definir o estado da entidade. O comportamento deles tem algumas especificidades:

  • initialsState tem precedência. Se você enviar a sigla do estado (ex.: SP), ela é usada como está e state / country são ignorados na resolução do estado.
  • state é um fallback. Quando initialsState não é informado, mas state sim, a API resolve internamente a sigla correspondente a partir do nome do estado/distrito (a comparação por nome é insensível a maiúsculas/acentos, seguindo a collation do banco). Como essa resolução ocorre antes da validação, enviar apenas state já é suficiente para satisfazer o campo obrigatório initialsState.
  • country desambigua. É opcional. Só é usado ao resolver state pelo nome quando o mesmo nome existe em mais de um país. Não informá-lo continua sendo uma ação válida.

Regras de resolução (quando initialsState está vazio e state é informado)

SituaçãoResultado
O nome corresponde a exatamente um estadoinitialsState é preenchido automaticamente com a sigla resolvida.
O nome não é encontradoErro: Não foi encontrado um estado/distrito com o nome '...'. (ou ... para o país '...'. quando country foi informado).
O nome existe em mais de um país e country não foi informadoErro: O nome de estado/distrito '...' é ambíguo (encontrado em mais de um país). Informe o campo 'country' para desambiguar.
O nome é ambíguo e country foi informadoA busca é filtrada pelo nome do país, resolvendo a sigla.

Exemplos

Entidade com endereço completo, usando a sigla do estado diretamente:

[
  {
    "name": "John Doe",
    "tradeName": "John Doe",
    "personType": 2,
    "entityTypeId": 1,
    "relationalEntityCode": "8504",
    "situationCode": 1,
    "street": "Av. Paulista, 1000",
    "district": "Bela Vista",
    "city": "São Paulo",
    "zipCode": "01310-100",
    "initialsState": "SP",       // sigla do estado
    "typeAddressCode": 4         // 4 = Entrega
  }
]

O mesmo endereço, mas deixando a API resolver a sigla a partir do nome do estado (state), desambiguado por country:

[
  {
    "name": "John Doe",
    "tradeName": "John Doe",
    "personType": 2,
    "entityTypeId": 1,
    "relationalEntityCode": "8504",
    "situationCode": 1,
    "street": "Av. Paulista, 1000",
    "district": "Bela Vista",
    "city": "São Paulo",
    "zipCode": "01310-100",
    "state": "São Paulo",        // resolvido internamente para "SP"
    "country": "Brasil",         // opcional — apenas desambiguação
    "typeAddressCode": 4
  }
]

Para mais informações sobre as propriedades, consulte a nossa Referência da API aqui.


Did this page help you?