ClientAddress


Una dirección guardada de un Client. Son privadas: solo las ve el propio cliente y los administradores de la Company.

Tipos (type)

  • delivery — dirección estructurada para reparto local (líneas + ciudad + estado).
  • shipping — dirección postal completa para encomiendas (agrega código postal y país).
  • legacy — dirección antigua de texto libre; solo usa address_line_1. Las direcciones nuevas se crean como delivery o shipping.

Campos calculados

  • address — dirección lista para mostrar, compuesta según el type: legacy → address_line_1; delivery → líneas + city + state; shipping → líneas + city + postal_code + state + country.
  • address_legacy — address + ". " + reference.
  • is_selected — true si es la dirección activa del cliente (client.settings.selected_address_id). Se cambia con el endpoint set-selected.
  • geofence_check — resultado de Company::check(latitude_e6, longitude_e6): si la dirección cae dentro del área de cobertura de la Company (is_valid). null solo si no se hizo la comprobación.

Estructura de Datos

Atributo Tipo Descripción
id int
name string Etiqueta de la dirección (ej. "Casa", "Oficina")
address_line_1 string\|null Calle / línea principal (única línea usada en legacy)
reference string\|null Punto de referencia / indicaciones para llegar
latitude_e6 int\|null Latitud (× 1e6)
longitude_e6 int\|null Longitud (× 1e6)
created_at datetime\|null
updated_at datetime\|null
client_id int Cliente dueño de la dirección
address_line_2 string\|null Segunda línea (piso, apto, etc.)
address_line_3 string\|null Tercera línea
country string\|null País (shipping)
postal_code string\|null Código postal (shipping)
state string\|null Estado / provincia
city string\|null Ciudad
type string\|null delivery | shipping | legacy (ver arriba)
company_id bigint -
city_id bigint -
address string Dirección compuesta para mostrar (según type)
address_legacy string address + ". " + reference
allLogs ApiLog>
client Client
geofence_check array\|null Cobertura de la Company para esta ubicación (Company::check); null si no se comprobó
google_maps_url string\|null
is_selected bool Si es la dirección activa del cliente
logs ApiLog>
{
    "id": 1,
    "name": "home",
    "address_line_1": "assssdaa",
    "reference": "sssda adsaasdaas",
    "latitude_e6": 10451257,
    "longitude_e6": -64138431,
    "created_at": "2020-04-28 18:39:57",
    "updated_at": "2020-04-28 18:39:57",
    "client_id": 42,
    "address_line_2": null,
    "address_line_3": null,
    "country": null,
    "postal_code": null,
    "state": null,
    "city": null,
    "type": "legacy",
    "company_id": 116,
    "city_id": 30,
    "address": "assssdaa",
    "geofence_check": {
        "coordinates_e6": [
            -64138431,
            10451257
        ],
        "distance_in_meters": null,
        "is_valid": false,
        "geofence": null
    },
    "is_selected": false
}

Endpoints

Insertar ClientAddress

Insertar ClientAddress de Client

Crear dirección

Crea una ClientAddress para el cliente. type por defecto es legacy (usa el campo address como address_line_1); para direcciones estructuradas enviar type: delivery o type: shipping con las líneas y la ubicación.

Método URI Cabeceras
POST /companies/{companyId}/clients/{clientId}/client-addresses Authorization
{
    "name": "required|string|max:32",
    "latitude_e6": "required_if:type,delivery|integer|between:-90000000,90000000",
    "longitude_e6": "required_if:type,delivery|integer|between:-180000000,180000000",
    "country": "required_with:type|string|max:80",
    "postal_code": "required_if:type,shipping|string|max:16",
    "state": "required_if:type,shipping|string|max:80",
    "city": "required_if:type,shipping|string|max:80",
    "address": "required_without:type|string|max:255",
    "address_line_1": "required_with:type|string|max:255",
    "address_line_2": "required_if:type,shipping|string|max:255",
    "address_line_3": "required_if:type,shipping|string|max:255",
    "reference": "string|max:255",
    "type": "string|in:delivery,shipping"
}

Listar ClientAddress

Listar ClientAddress de Client

{info} Soporta: Paginación Filters Carga dinámica

Listar direcciones de un cliente

Lista las ClientAddress del cliente. Un cliente solo puede listar las propias.

Método URI Cabeceras
GET /companies/{companyId}/clients/{clientId}/client-addresses Authorization

Mostrar ClientAddress

{info} Soporta: Carga dinámica

Mostrar dirección

Devuelve una ClientAddress. Solo la ve el cliente dueño o un administrador.

Método URI Cabeceras
GET /companies/{companyId}/client-addresses/{clientAddressId} Authorization

Actualizar ClientAddress

Actualizar dirección

Actualiza una ClientAddress. Igual que en la creación, address (texto plano) se guarda en address_line_1.

Método URI Cabeceras
PATCH /companies/{companyId}/client-addresses/{clientAddressId} Authorization
{
    "name": "string|max:32",
    "latitude_e6": "integer|between:-90000000,90000000",
    "longitude_e6": "integer|between:-180000000,180000000",
    "country": "string|max:80",
    "postal_code": "string|max:16",
    "state": "string|max:80",
    "city": "string|max:80",
    "address": "string|max:255",
    "address_line_1": "required_with:type|string|max:255",
    "address_line_2": "string|max:255",
    "address_line_3": "string|max:255",
    "reference": "string|max:255",
    "type": "string|in:delivery,shipping"
}

Eliminar ClientAddress

Eliminar dirección

Elimina una ClientAddress del cliente.

Método URI Cabeceras
DELETE /companies/{companyId}/client-addresses/{clientAddressId} Authorization

Acciones de ClientAddress

Direcciones fuera de cobertura (herramienta de administración)

{info} Soporta: Paginación Filters Carga dinámica

Devuelve las ClientAddress de la company que caen fuera del área de cobertura (geocercas activas), o todas con ?all=1. Cada elemento trae title, lat, lon, body e id, para pintarlo sobre un mapa junto con las geocercas y detectar zonas sin cobertura con muchos clientes.

Método URI Cabeceras
GET /companies/{companyId}/client-addresses Authorization

Marcar dirección como activa

Fija esta ClientAddress como la dirección activa del cliente (settings.selected_address_id), que se usará por defecto en los próximos pedidos.

Método URI Cabeceras
POST /companies/{companyId}/client-addresses/{clientAddressId}/set-selected Authorization

Relaciones