# Métodos de envío del tenant

Administra los métodos de envío disponibles para clientes. Cada uno se basa en una plantilla de plataforma y puede personalizarse por tenant con nombre, nota, orden y estado activo/predeterminado.

## Tipos

| Tipo | Descripción |
|---|---|
| standard | Tarifa fija o envío gratuito configurado manualmente. |
| external | Tarifas dinámicas en tiempo real de una extensión externa durante el checkout. |
| sendcloud | Integración con Sendcloud para etiquetas y selección de transportista. |

## Acceso de administrador y cliente

- GET /v1/tenants/shipping_methods es público y solo devuelve métodos activos. Añade account_id para filtrar por cuenta vendedora.
- POST, PUT y DELETE son solo para administradores.
- GET /:id/external obtiene tarifas actuales de una extensión para el checkout.

## Listar métodos

GET /v1/tenants/shipping_methods — Parámetro opcional account_id (integer) para filtrar por cuenta.

Campos devueltos: id (identificador), name (nombre localizado), note (descripción para clientes), logo_path (URL de imagen), type (standard, external, sendcloud), channel (por ejemplo delivery o pickup), default (método preseleccionado), active (disponibilidad para clientes), order_by (orden ascendente) y metadata (configuración de extensión, como extension_id).

## Crear método

POST /v1/tenants/shipping_methods — Solo administradores.

Cuerpo shipping_method: shipping_method_id (integer obligatorio, ID de plantilla de plataforma), name (string obligatorio), note (string opcional), default (boolean obligatorio; desactiva otros métodos predeterminados), active (boolean obligatorio), order_by (integer opcional) y metadata (object opcional, por ejemplo extension_id).

## Actualizar o archivar

PUT /v1/tenants/shipping_methods/:shipping_method_id actualiza el método con los mismos campos que POST. DELETE /v1/tenants/shipping_methods/:shipping_method_id lo archiva y lo quita del checkout. Solo administradores.

## Tarifas externas

GET /v1/tenants/shipping_methods/:shipping_method_id/external obtiene tarifas dinámicas. El método debe tener metadata.extension_id y la extensión debe admitir el evento external_shipping_methods.

Parámetros: shipping_address_id (integer, dirección guardada que se pasa a la extensión para calcular tarifas) y uuid (string, UUID del carrito para consultar su contenido).

Respuesta: external_shipping_methods, array de opciones de transportista devueltas por la extensión.
