Saltar al contenido principal

Actualizar dirección existente

PUT 

/addresses/:id

Propósito

Actualiza los datos de una dirección existente que pertenece a la empresa del usuario autenticado.

Objetivo

Permitir corregir o actualizar la información de una dirección ya registrada (nombre, teléfono, ubicación) sin tener que eliminarla y recrearla.

Casos de uso

  • Corregir el nombre o teléfono de contacto de un punto de entrega.
  • Actualizar las coordenadas GPS mediante un nuevo objeto addressGoogleMaps.
  • Establecer o quitar una dirección como predeterminada de la empresa.

Flujo de validación

flowchart TD
A[Recibir PUT /addresses/:id] --> B{¿Usuario autenticado?}
B -->|No| C[401 Unauthorized]
B -->|Sí| D{¿Dirección existe?}
D -->|No| E[404 NOT_FOUND]
D -->|Sí| F{¿Dirección pertenece a la empresa?}
F -->|No| G[403 NOT_ALLOWED]
F -->|Sí| H{¿Se envía addressGoogleMaps?}
H -->|Sí| I[Recalcular campos de ubicación]
H -->|No| J[Mantener ubicación actual]
I --> K{¿isDefault?}
J --> K
K -->|true| L[Establecer como address_default]
K -->|false/omitido| M{¿Era la predeterminada?}
M -->|Sí| N[Eliminar address_default]
M -->|No| O[Sin cambios en default]
L --> P[200 OK]
N --> P
O --> P

Detalles técnicos

El servidor verifica que el id exista y esté incluido en el array addresses de la empresa; de lo contrario devuelve 403 NOT_ALLOWED.

Cuando se envía addressGoogleMaps, los campos de ubicación (city, street_address, street_number, zipcode, province, country, location, placeId, name_address) se recalculan desde los address_components de Google. Los campos que no están presentes en el nuevo body se eliminan del documento si pertenecen a la lista de campos de dirección editables.

Comportamiento de isDefault:

  • true → establece esta dirección como address_default de la empresa.
  • false o no enviado → si la dirección era la predeterminada, se elimina address_default de la empresa (se des-marca).

Autenticación

Soporta JWT Bearer token y API Key.

Request

Responses

Dirección actualizada correctamente. Devuelve el documento completo con los campos de ubicación recalculados si se proporcionó addressGoogleMaps

Response Headers