Obtener Almacenes Disponibles
Consulta la lista de almacenes disponibles para tu cuenta, incluyendo su ubicación y detalles de dirección.
/client/warehouses/availablesEste 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ámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
Authorization | string | ✅ Sí | Token Bearer obtenido del endpoint /token/generate |
Ejemplos
- cURL
- JavaScript
- Python
curl -X GET https://apisandbox.eonwms.com/client/warehouses/availables \
-H "Authorization: Bearer TU_TOKEN"
const response = await fetch(
'https://apisandbox.eonwms.com/client/warehouses/availables',
{
method: 'GET',
headers: {
'Authorization': 'Bearer TU_TOKEN'
}
}
);
const warehouses = await response.json();
// Mostrar información de cada almacén
warehouses.data.forEach(warehouse => {
console.log(`Almacén #${warehouse.id}: ${warehouse.name}`);
console.log(`Ubicación: ${warehouse.municipality}, ${warehouse.state}, ${warehouse.country}`);
console.log(`Código Postal: ${warehouse.zipcode}`);
console.log('---');
});
import requests
response = requests.get(
'https://apisandbox.eonwms.com/client/warehouses/availables',
headers={
'Authorization': 'Bearer TU_TOKEN'
}
)
warehouses = response.json()
# Mostrar información de cada almacén
for warehouse in warehouses['data']:
print(f"Almacén #{warehouse['id']}: {warehouse['name']}")
print(f"Ubicación: {warehouse['municipality']}, {warehouse['state']}, {warehouse['country']}")
print(f"Código Postal: {warehouse['zipcode']}")
print("---")
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:
| Campo | Tipo | Descripción |
|---|---|---|
| id | integer | Identificador único del almacén |
| name | string | Nombre del almacén |
| country | string | País donde se ubica |
| state | string | Estado o provincia |
| zipcode | string | Código postal |
| municipality | string | Municipio o ciudad |
| neighborhood | string | Colonia o barrio |
| street | string | Calle |
| external_number | string | Número exterior |
| internal_number | string | Nú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
- Por Geografía: Usa el almacén más cercano al cliente
- Por Inventario: Usa el almacén con stock disponible
- Por Servicio: Usa almacenes específicos para ciertos transportistas
- 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);
Cachea la lista de almacenes localmente ya que no cambia frecuentemente. Actualízala solo cuando sea necesario o cada 24 horas.
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.