Obtener Enlaces de Descarga de Etiquetas
Obtén los enlaces para descargar las etiquetas de envío asociadas con una orden específico. Las etiquetas solo están disponibles por 90 días después de su creación.
/v1/client/shipment/label_path/:unique_order_numberEste endpoint proporciona una lista de URLs para descargar las etiquetas asociadas con la orden solicitado. Las etiquetas solo estarán disponibles 90 días después de su creación.
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/v1/client/shipment/label_path/Orden-12345 \
-H "Authorization: Bearer TU_TOKEN"
const uniqueOrderNumber = 'Orden-12345';
const response = await fetch(
`https://apisandbox.eonwms.com/v1/client/shipment/label_path/${uniqueOrderNumber}`,
{
method: 'GET',
headers: {
'Authorization': 'Bearer TU_TOKEN'
}
}
);
const labelData = await response.json();
// Descargar cada etiqueta
for (const label of labelData.shipment.data) {
console.log(`Formato: ${label.format}`);
console.log(`URL de descarga: ${label.url}`);
// Descargar la etiqueta
const labelResponse = await fetch(label.url, {
headers: {
'Authorization': 'Bearer TU_TOKEN'
}
});
if (labelResponse.ok) {
const blob = await labelResponse.blob();
// Guardar o mostrar la etiqueta
}
}
import requests
from datetime import datetime
unique_order_number = 'Orden-12345'
# Obtener enlaces de descarga
response = requests.get(
f'https://apisandbox.eonwms.com/v1/client/shipment/label_path/{unique_order_number}',
headers={
'Authorization': 'Bearer TU_TOKEN'
}
)
label_data = response.json()
if response.status_code == 200:
shipment = label_data['shipment']
print(f"Orden: {shipment['unique_order_number']}")
print(f"Rastreo: {shipment['master_tracking']}")
print(f"Expira: {shipment['expiration_date']}")
# Descargar cada etiqueta
for label in shipment['data']:
print(f"\nDescargando etiqueta en formato {label['format']}...")
# Descargar archivo
label_response = requests.get(
label['url'],
headers={'Authorization': 'Bearer TU_TOKEN'}
)
if label_response.status_code == 200:
# Guardar archivo
filename = f"{unique_order_number}_{shipment['master_tracking']}.{label['format'].lower()}"
with open(filename, 'wb') as f:
f.write(label_response.content)
print(f"Etiqueta guardada como: {filename}")
else:
print(f"Error: {label_data['fault']['message']}")
Respuestas
200Éxito - Enlaces de descarga disponibles
{
"shipment": {
"unique_order_number": "VALID-IDENTIFIER",
"master_tracking": "000000000000",
"expiration_date": "2024-11-27",
"data": [
{
"format": "PNG",
"url": "https://apisandbox.eonwms.com/v1/client/shipment/label/download/VALID-IDENTIFIER/000000000000.png"
}
]
}
}
404No encontrado - Orden no existe
{
"code": 404,
"fault": {
"arguments": {
"unique_order_number": "invalid"
},
"type": "shipmentNotFound",
"message": "Envío no encontrado."
}
}
422No procesable - Etiqueta expirada
{
"code": 422,
"fault": {
"arguments": null,
"type": "get_label.expired",
"message": "La etiqueta ya no está disponible, la orden ha expirado."
}
}
Estructura de la Respuesta
Información del Envío
- unique_order_number: Número único de la orden
- master_tracking: Número de rastreo principal
- expiration_date: Fecha de expiración de las etiquetas (formato YYYY-MM-DD)
Enlaces de Descarga
El array data contiene los enlaces de descarga:
- format: Formato del archivo (generalmente "PNG")
- url: URL completa para descargar la etiqueta
Las URLs de descarga también requieren el token Bearer en el header Authorization. No son enlaces públicos.
Consideraciones Importantes
Expiración de Etiquetas
Las etiquetas tienen una validez de 90 días desde su creación:
// Verificar si la etiqueta está por expirar
function verificarExpiracion(expirationDate) {
const expira = new Date(expirationDate);
const hoy = new Date();
const diasRestantes = Math.floor((expira - hoy) / (1000 * 60 * 60 * 24));
if (diasRestantes < 0) {
return { expirada: true, mensaje: "La etiqueta ya expiró" };
} else if (diasRestantes < 7) {
return {
expirada: false,
mensaje: `¡Advertencia! La etiqueta expira en ${diasRestantes} días`
};
}
return { expirada: false, diasRestantes };
}
Formatos Disponibles
Actualmente, las etiquetas se proporcionan en:
- PNG: Formato de imagen estándar
- Resolución recomendada para impresión: 300 DPI
- Tamaño típico: 4" x 6"
Múltiples Etiquetas
una orden puede tener múltiples etiquetas si:
- El envío requiere múltiples paquetes
- Se generaron etiquetas de retorno
- Hay documentación adicional (como etiquetas de aduana)
Ejemplo de Implementación Completa
Descargar y Mostrar Etiqueta en el Navegador
async function mostrarEtiqueta(uniqueOrderNumber) {
try {
// 1. Obtener URLs de etiquetas
const response = await fetch(
`https://apisandbox.eonwms.com/v1/client/shipment/label_path/${uniqueOrderNumber}`,
{
headers: { 'Authorization': 'Bearer TU_TOKEN' }
}
);
if (!response.ok) {
throw new Error('No se pudieron obtener las etiquetas');
}
const data = await response.json();
// 2. Verificar expiración
const expiracion = verificarExpiracion(data.shipment.expiration_date);
if (expiracion.expirada) {
alert('Las etiquetas han expirado');
return;
}
// 3. Descargar y mostrar cada etiqueta
for (const label of data.shipment.data) {
const labelResponse = await fetch(label.url, {
headers: { 'Authorization': 'Bearer TU_TOKEN' }
});
const blob = await labelResponse.blob();
const imgUrl = URL.createObjectURL(blob);
// 4. Mostrar en una nueva ventana
const ventana = window.open('', '_blank');
ventana.document.write(`
<html>
<head>
<title>Etiqueta ${uniqueOrderNumber}</title>
<style>
@media print {
body { margin: 0; }
img { max-width: 100%; }
}
</style>
</head>
<body>
<img src="${imgUrl}" alt="Etiqueta de envío">
<script>
window.print();
</script>
</body>
</html>
`);
}
} catch (error) {
console.error('Error:', error);
alert('Error al obtener las etiquetas');
}
}
Descargar Etiquetas en Lote
async function descargarEtiquetasEnLote(ordenes) {
const resultados = [];
for (const orden of ordenes) {
try {
const response = await fetch(
`https://apisandbox.eonwms.com/v1/client/shipment/label_path/${orden}`,
{
headers: { 'Authorization': 'Bearer TU_TOKEN' }
}
);
if (response.ok) {
const data = await response.json();
resultados.push({
orden,
exito: true,
urls: data.shipment.data
});
} else {
resultados.push({
orden,
exito: false,
error: 'No disponible'
});
}
} catch (error) {
resultados.push({
orden,
exito: false,
error: error.message
});
}
}
return resultados;
}
Casos de Uso
1. Reimpresión de Etiquetas
Cuando un cliente necesita reimprimir una etiqueta perdida o dañada.
2. Integración con Sistema de Impresión
Automatizar la descarga e impresión de etiquetas en tu centro de fulfillment.
3. Archivo Digital
Mantener un respaldo digital de todas las etiquetas generadas.
- Cachea las URLs: Las URLs son las mismas durante la vida de la etiqueta
- Implementa reintentos: En caso de fallo de red al descargar
- Verifica la expiración: Antes de intentar descargar
- Guarda localmente: Para evitar múltiples descargas de la misma etiqueta