Saltar al contenido principal

Obtener Almacenes Disponibles

Consulta la lista de almacenes disponibles para tu cuenta, incluyendo su ubicación y detalles de dirección.

GET/client/warehouses/availables

Este endpoint te permite obtener los almacenes soportados para tu cuenta. Cada almacén tiene un ID único que deberás usar al crear pedidos.

Encabezados

ParámetroTipoRequeridoDescripción
Authorizationstring✅ SíToken Bearer obtenido del endpoint /token/generate

Ejemplos

curl -X GET https://apisandbox.eonwms.com/client/warehouses/availables \
-H "Authorization: Bearer TU_TOKEN"

Respuestas

200Éxito - Lista de almacenes disponibles

{
"data": [
{
"id": 1,
"name": "Chronos",
"country": "México",
"state": "San Luis Potosí",
"zipcode": "79526",
"municipality": "Villa de Reyes",
"neighborhood": "Logistik II",
"street": "Dubai",
"external_number": "112",
"internal_number": ""
}
]
}

401No autorizado - Token inválido

{
"v": "EON_V2.0",
"fault": {
"arguments": {
"Authorization": "invalid"
},
"type": "InvalidAuthorizationException",
"message": "La solicitud no está autorizada, el token de acceso es inválido."
}
}

Estructura de la Respuesta

Cada almacén en el array data incluye:

CampoTipoDescripción
idintegerIdentificador único del almacén
namestringNombre del almacén
countrystringPaís donde se ubica
statestringEstado o provincia
zipcodestringCódigo postal
municipalitystringMunicipio o ciudad
neighborhoodstringColonia o barrio
streetstringCalle
external_numberstringNúmero exterior
internal_numberstringNúmero interior (opcional)

Uso del ID de Almacén

El id del almacén es requerido al crear pedidos:

// Ejemplo: Seleccionar almacén para un pedido
const orderData = {
unique_order_number: "PEDIDO-123",
warehouse_id: "1", // Usar el ID del almacén deseado
shipping_service: "FEDEX",
// ... resto de los datos del pedido
};

Almacenes por Región

México 🇲🇽

Los almacenes en México típicamente soportan:

  • Transportistas: FEDEX, YEGO, AFIMEX, TIUI
  • Envíos nacionales e internacionales
  • Servicios COD (Contra entrega)

Estados Unidos 🇺🇸

Los almacenes en USA típicamente soportan:

  • Transportistas: FEDEX, UPS, USPS
  • Cálculo de tarifas en tiempo real
  • Envíos domésticos e internacionales

Casos de Uso

1. Selección Automática de Almacén más Cercano

function seleccionarAlmacenMasCercano(warehouses, codigoPostalDestino) {
// Lógica simplificada - en producción usarías una API de geocoding
const obtenerRegion = (cp) => {
const primerDigito = cp.charAt(0);
if (['0', '1', '2'].includes(primerDigito)) return 'norte';
if (['3', '4', '5'].includes(primerDigito)) return 'centro';
return 'sur';
};

const regionDestino = obtenerRegion(codigoPostalDestino);

// Filtrar almacenes por región
const almacenesCercanos = warehouses.data.filter(wh => {
const regionAlmacen = obtenerRegion(wh.zipcode);
return regionAlmacen === regionDestino;
});

// Si hay almacenes en la misma región, usar el primero
if (almacenesCercanos.length > 0) {
return almacenesCercanos[0].id;
}

// Si no, usar el almacén por defecto
return warehouses.data[0].id;
}

2. Mostrar Selector de Almacén al Usuario

async function crearSelectorAlmacenes() {
const response = await fetch(
'https://apisandbox.eonwms.com/client/warehouses/availables',
{
headers: { 'Authorization': 'Bearer TU_TOKEN' }
}
);

const data = await response.json();

// Crear HTML para selector
const opciones = data.data.map(wh => `
<option value="${wh.id}">
${wh.name} - ${wh.municipality}, ${wh.state} (${wh.country})
</option>
`).join('');

return `
<select id="warehouse-selector" class="form-control">
<option value="">Selecciona un almacén</option>
${opciones}
</select>
`;
}

3. Validar Disponibilidad de Servicio

async function validarServicioEnAlmacen(warehouseId, shippingService) {
// Primero obtener información del almacén
const response = await fetch(
'https://apisandbox.eonwms.com/client/warehouses/availables',
{
headers: { 'Authorization': 'Bearer TU_TOKEN' }
}
);

const warehouses = await response.json();
const warehouse = warehouses.data.find(wh => wh.id === warehouseId);

if (!warehouse) {
return { valido: false, mensaje: 'Almacén no encontrado' };
}

// Validar servicios por país
const serviciosPorPais = {
'México': ['FEDEX', 'YEGO', 'AFIMEX', 'TIUI'],
'Estados Unidos': ['FEDEX', 'UPS', 'USPS'],
'USA': ['FEDEX', 'UPS', 'USPS']
};

const serviciosDisponibles = serviciosPorPais[warehouse.country] || [];

if (serviciosDisponibles.includes(shippingService)) {
return { valido: true };
} else {
return {
valido: false,
mensaje: `${shippingService} no está disponible en ${warehouse.country}`,
serviciosDisponibles
};
}
}

Configuración Multi-Almacén

Si tu cuenta tiene acceso a múltiples almacenes, considera:

Estrategias de Distribución

  1. Por Geografía: Usa el almacén más cercano al cliente
  2. Por Inventario: Usa el almacén con stock disponible
  3. Por Servicio: Usa almacenes específicos para ciertos transportistas
  4. Por Costo: Optimiza basándote en costos de envío

Ejemplo de Implementación

class GestorAlmacenes {
constructor(token) {
this.token = token;
this.almacenes = null;
}

async cargarAlmacenes() {
const response = await fetch(
'https://apisandbox.eonwms.com/client/warehouses/availables',
{
headers: { 'Authorization': `Bearer ${this.token}` }
}
);

this.almacenes = await response.json();
return this.almacenes;
}

obtenerPorPais(pais) {
return this.almacenes.data.filter(wh => wh.country === pais);
}

obtenerPorId(id) {
return this.almacenes.data.find(wh => wh.id === id);
}

obtenerMasCercano(codigoPostal) {
// Implementar lógica de proximidad
// Por ahora retorna el primero
return this.almacenes.data[0];
}
}

// Uso
const gestor = new GestorAlmacenes('TU_TOKEN');
await gestor.cargarAlmacenes();

const almacenesMexico = gestor.obtenerPorPais('México');
const almacenPrincipal = gestor.obtenerPorId(1);
Optimización

Cachea la lista de almacenes localmente ya que no cambia frecuentemente. Actualízala solo cuando sea necesario o cada 24 horas.

Permisos de Almacén

Los almacenes mostrados son solo aquellos a los que tu cuenta tiene acceso. Si necesitas acceso a almacenes adicionales, contacta a tu representante de cuenta.