# Centros de almacenamiento (puntos de recogida)

Los centros de almacenamiento son ubicaciones gestionadas por el tenant, como puntos de recogida, almacenes, sucursales u otros lugares necesarios para el flujo de preparación de pedidos.

A diferencia de las direcciones personales, que pertenecen a un usuario, los centros pertenecen al **tenant** y son visibles para todos sin autenticación. Sirven como:

- **Puntos de recogida** — lugares donde los clientes recogen sus pedidos
- **Almacenes** — ubicaciones de despacho o preparación logística
- **Sucursales** — tiendas físicas que también funcionan como punto de recogida
- **Centros de entrega** — ubicaciones de terceros para operaciones entre particulares o reventa

Los centros se crean y administran mediante la API estándar Addresses con `type: "storage_hub"`.

---

## Listar centros de almacenamiento

**GET** `/v1/addresses?type=storage_hub`

Devuelve todas las direcciones de centro de almacenamiento del tenant. No requiere `user_id`; estos centros son públicos para el tenant.

### Campos de respuesta

| Campo | Tipo | Descripción |
|---|---|---|
| `id` | integer | Identificador único de la dirección |
| `name` | string | Nombre del centro (por ejemplo, «Almacén principal» o «Tienda del centro») |
| `address_line_1` | string | Dirección postal |
| `address_line_2` | string | Línea de dirección adicional |
| `city` | string | Ciudad |
| `state` | string | Estado o región |
| `post_code` | string | Código postal |
| `country` | string | Nombre del país |
| `country_code` | string | Código de país ISO |
| `formatted_address` | string | Dirección completa en un solo texto |
| `phone_number` | string | Teléfono de contacto del centro |
| `landmark` | string | Punto de referencia o indicaciones cercanas |
| `latitude` | number | Latitud GPS |
| `longitude` | number | Longitud GPS |
| `type` | string | Siempre `"storage_hub"` |

---

## Añadir un centro de almacenamiento

**POST** `/v1/addresses`

Crea un centro nuevo para el tenant. Solo administradores.

### Campos de solicitud

| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| `address.type` | string | Sí | Debe ser `"storage_hub"` |
| `address.name` | string | Sí | Nombre del centro |
| `address.address_line_1` | string | Sí | Dirección postal |
| `address.address_line_2` | string | No | Apartamento, planta o edificio |
| `address.city` | string | No | Ciudad |
| `address.state` | string | No | Estado o región |
| `address.post_code` | string | No | Código postal |
| `address.country` | string | No | Nombre del país |
| `address.country_code` | string | No | Código de país ISO (por ejemplo, `"US"`, `"GB"`) |
| `address.phone_number` | string | No | Teléfono de contacto de la ubicación |
| `address.landmark` | string | No | Punto de referencia o indicación de navegación |
| `address.formatted_address` | string | No | Sustituye el texto de dirección mostrado |
| `address.coordinates.latitude` | number | No | Latitud GPS |
| `address.coordinates.longitude` | number | No | Longitud GPS |

---

## Editar centro de almacenamiento

**PUT** `/v1/addresses/:id`

Actualiza un centro existente. Envía `address.type: "storage_hub"` y los campos que quieras modificar. Se usan los mismos campos que para añadirlo.

---

## Eliminar centro de almacenamiento

**DELETE** `/v1/addresses/:id`

Archiva un centro de almacenamiento. Ya no aparecerá en los resultados de lista.
