Saltar al contenido
Developer Docs

Localizaciones

Catálogos jerárquicos de países, estados, ciudades y códigos postales para construir el domicilio fiscal.

Estos endpoints sirven como catálogo de solo lectura para construir el objeto fiscalAddress de la petición de alta de una organización cliente. Cada nivel de la jerarquía se resuelve a partir del anterior: país → estado → ciudad → código postal. Los códigos que envías en fiscalAddress.countryCode, stateCode y cityCode deben provenir de este catálogo; si no, el alta responde 404.

Convenciones comunes

  • Base URL Sandbox: https://api-sandbox.zertiban.com
  • Headers requeridos en todas las llamadas:
    • Authorization: Bearer {access_token}
    • x-tenant-id: {businessUuid}

1. Listar países

GET/location/v1/countries

Devuelve todos los países soportados por Zertiban. Sin parámetros.

shell
curl https://api-sandbox.zertiban.com/location/v1/countries \
  -H "Authorization: Bearer {access_token}" \
  -H "x-tenant-id: {businessUuid}"

Respuesta (200):

json
{
  "countries": [
    { "code": "ES", "name": "Spain" },
    { "code": "PT", "name": "Portugal" }
  ]
}
CampoDescripción
countries[i].codeCódigo ISO 3166 alpha-2. Este es el valor que envías como countryCode.
countries[i].nameNombre del país.

2. Estados de un país

GET/location/v1/countries/{countryCode}/states

Devuelve los estados o provincias del país indicado.

Path parameters:

ParámetroTipoDescripción
countryCodeStringCódigo ISO 3166 alpha-2 (ej. ES).
shell
curl https://api-sandbox.zertiban.com/location/v1/countries/ES/states \
  -H "Authorization: Bearer {access_token}" \
  -H "x-tenant-id: {businessUuid}"

Respuesta (200):

json
{
  "states": [
    { "code": "ES-AS", "name": "Asturias" },
    { "code": "ES-MD", "name": "Madrid" }
  ]
}
CampoDescripción
states[i].codeCódigo del estado (ISO 3166-2). Este es el valor que envías como stateCode.
states[i].nameNombre del estado o provincia.

3. Ciudades de un estado

GET/location/v1/countries/{countryCode}/states/{stateCode}/cities

Devuelve las ciudades del estado indicado dentro del país.

Path parameters:

ParámetroTipoDescripción
countryCodeStringCódigo ISO 3166 alpha-2 (ej. ES).
stateCodeStringCódigo del estado (ej. ES-AS).
shell
curl https://api-sandbox.zertiban.com/location/v1/countries/ES/states/ES-AS/cities \
  -H "Authorization: Bearer {access_token}" \
  -H "x-tenant-id: {businessUuid}"

Respuesta (200):

json
{
  "cities": [
    { "code": "ES-AS-OV", "name": "Oviedo" },
    { "code": "ES-AS-GI", "name": "Gijón" }
  ]
}
CampoDescripción
cities[i].codeCódigo de la ciudad. Este es el valor que envías como cityCode.
cities[i].nameNombre de la ciudad.

4. Códigos postales de una ciudad

GET/location/v1/countries/{countryCode}/states/{stateCode}/cities/{cityCode}/postal-codes

Devuelve los códigos postales válidos dentro de la ciudad indicada. Útil para presentar sugerencias o validar el postalCode que se enviará en fiscalAddress.

Path parameters:

ParámetroTipoDescripción
countryCodeStringCódigo ISO 3166 alpha-2 (ej. ES).
stateCodeStringCódigo del estado (ej. ES-AS).
cityCodeStringCódigo de la ciudad (ej. ES-AS-OV).
shell
curl https://api-sandbox.zertiban.com/location/v1/countries/ES/states/ES-AS/cities/ES-AS-OV/postal-codes \
  -H "Authorization: Bearer {access_token}" \
  -H "x-tenant-id: {businessUuid}"

Respuesta (200):

json
{
  "postalCodes": [{ "code": "33010" }, { "code": "33011" }]
}

5. Resolución completa de una localización

GET/location/v1/locations

Resuelve la localización completa a partir de país, estado, ciudad y código postal. Ideal para validar en un solo paso que la combinación que vas a enviar en fiscalAddress es consistente.

Query parameters (todos obligatorios):

ParámetroTipoDescripción
countryStringCódigo ISO 3166 alpha-2 (ej. ES).
state_codeStringCódigo del estado (ej. ES-AS).
city_codeStringCódigo de la ciudad (ej. ES-AS-OV).
postal_codeStringCódigo postal (ej. 33010).
shell
curl "https://api-sandbox.zertiban.com/location/v1/locations?country=ES&state_code=ES-AS&city_code=ES-AS-OV&postal_code=33010" \
  -H "Authorization: Bearer {access_token}" \
  -H "x-tenant-id: {businessUuid}"

Respuesta (200):

json
{
  "country": { "code": "ES", "name": "Spain" },
  "state": { "code": "ES-AS", "name": "Asturias" },
  "city": { "code": "ES-AS-OV", "name": "Oviedo" },
  "postalCode": { "code": "33010" }
}

Un 404 en esta llamada indica que la combinación no existe (por ejemplo, un código postal que no pertenece a esa ciudad). En ese caso, revalida cada nivel con los endpoints anteriores.

Tabla resumen

MétodoEndpointDescripción
GET/location/v1/countriesListar países
GET/location/v1/countries/{countryCode}/statesEstados de un país
GET/location/v1/countries/{countryCode}/states/{stateCode}/citiesCiudades de un estado
GET/location/v1/countries/{countryCode}/states/{stateCode}/cities/{cityCode}/postal-codesCódigos postales de una ciudad
GET/location/v1/locations?country=&state_code=&city_code=&postal_code=Resolución completa de la ubicación

Errores frecuentes

CódigoCausa típica
400Falta algún parámetro obligatorio en la resolución completa.
401Token expirado o credenciales inválidas.
403x-tenant-id incorrecto o permisos insuficientes.
404No existe la combinación de país, estado, ciudad y/o código postal solicitada.