Obtener Información de la orden
Obtén toda la información detallada relacionada con una orden específico, incluyendo datos del destinatario, productos, caja utilizada, guías de rastreo y estado actual.
Endpoint
GET /v1/client/shipment/data/:unique_order_number
Descripción
Este endpoint devuelve toda la información relacionada con una orden específico. Para solicitar la información es necesario especificar el unique_order_number en la URL y agregar el token Bearer de autenticación en los Headers de la solicitud.
Headers
| Header | Tipo | Requerido | Descripción |
|---|---|---|---|
| Authorization | string | ✓ | Token Bearer obtenido del endpoint /token/generate |
| Content-Type | string | ✓ | Debe ser application/json |
| Accept | string | ✓ | Debe ser application/json |
Ejemplos
cURL
curl -X GET https://apisandbox.eonwms.com/v1/client/shipment/data/COD00000Test \
-H "Authorization: Bearer TU_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json"
JavaScript
const uniqueOrderNumber = 'COD00000Test';
const response = await fetch(
`https://apisandbox.eonwms.com/v1/client/shipment/data/${uniqueOrderNumber}`,
{
method: 'GET',
headers: {
'Authorization': 'Bearer TU_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
}
);
const orderInfo = await response.json();
// Acceder a información específica
const numeroRastreo = orderInfo.data.attributes.masterTracking;
const estadoActual = orderInfo.data.attributes.lastStatus.data.attributes.status;
const productos = orderInfo.data.attributes.products;
Python
import requests
unique_order_number = 'COD00000Test'
response = requests.get(
f'https://apisandbox.eonwms.com/v1/client/shipment/data/{unique_order_number}',
headers={
'Authorization': 'Bearer TU_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
}
)
order_info = response.json()
# Acceder a información específica
numero_rastreo = order_info['data']['attributes']['masterTracking']
estado_actual = order_info['data']['attributes']['lastStatus']['data']['attributes']['status']
productos = order_info['data']['attributes']['products']
# Imprimir resumen de la orden
print(f"Orden: {unique_order_number}")
print(f"Rastreo: {numero_rastreo}")
print(f"Estado: {estado_actual}")
print(f"Total: ${order_info['data']['attributes']['totalPrice']}")
Respuestas
200 - Éxito
{
"data": {
"id": "24",
"type": "shipment",
"attributes": {
"uniqueOrderNumber": "COD00000Test",
"invoice": "invoice test",
"masterTracking": "394222208340",
"totalPrice": 200,
"shippingService": {
"shippingServiceName": "FEDEX",
"specialServices": {
"cashOnDelivery": true
}
},
"consignee": {
"id": "24",
"type": "consignee",
"attributes": {
"id": 24,
"name": "Comprador 01",
"country": "Mexico",
"state": "San Luis Potosí",
"municipality": "San Luis Potosí",
"neighborhood": "Lomas 4ta sec",
"street": "Av Sierra Leona",
"externalNumber": "418",
"internalNumber": "A",
"zipcode": "78200",
"email": "test@email.com",
"phone": "5555555555",
"comments": "comentarios"
}
},
"products": [
{
"id": "25",
"type": "shipmentDetail",
"attributes": {
"quantity": 2,
"isKit": false,
"unitPrice": 100,
"subtotal": 200,
"product": {
"id": 2,
"sku": "THISISSKU2",
"description": "WINGSPAN OCEANIA EXPANTION"
}
}
}
],
"box": {
"id": "1",
"type": "box",
"attributes": {
"id": 1,
"name": "COD Default Box",
"length": 25,
"width": 20,
"height": 6,
"units": "CM"
}
},
"trackingGuides": [
{
"id": "1",
"type": "trackingGuide",
"attributes": {
"trackingNumber": "394222208340",
"charges": 0,
"currencyCode": "NMP"
}
}
],
"lastStatus": {
"data": {
"id": "25",
"type": "status",
"attributes": {
"status": "READY",
"current": true,
"date": null,
"time": null,
"createdAt": "2023-02-03T17:24:05.845-06:00"
}
}
}
}
}
}
401 - No autorizado
{
"code": 401,
"fault": {
"arguments": {
"Authorization": "invalid"
},
"type": "InvalidAuthorizationException",
"message": "La solicitud no está autorizada, el token de acceso es inválido."
}
}
404 - No encontrado
{
"code": 404,
"fault": {
"arguments": {
"unique_order_number": "invalid"
},
"type": "shipmentNotFound",
"message": "Envío no encontrado."
}
}
Estructura de la Respuesta
La respuesta sigue el formato JSON:API e incluye información completa de la orden:
Información Principal (attributes)
- uniqueOrderNumber: Número único de la orden
- invoice: Número de factura
- masterTracking: Número de rastreo principal
- totalPrice: Precio total de la orden
- shippingService: Información del servicio de envío
- shippingServiceName: Nombre del transportista
- specialServices: Servicios especiales (ej: COD)
Información del Destinatario (consignee)
Contiene todos los datos de entrega:
- Datos personales (nombre, email, teléfono)
- Dirección completa
- Comentarios especiales
Productos (products)
Array con los detalles de cada producto:
- quantity: Cantidad
- isKit: Si es un kit de productos
- unitPrice: Precio unitario
- subtotal: Subtotal por producto
- product: Información del producto (SKU y descripción)
Información de Empaque (box)
- name: Nombre/tipo de caja
- length, width, height: Dimensiones
- units: Unidad de medida (CM)
Guías de Rastreo (trackingGuides)
- trackingNumber: Número de guía
- charges: Cargos adicionales
- currencyCode: Código de moneda
Último Estado (lastStatus)
- status: Estado actual
- current: Siempre
truepara el último estado - date y time: Fecha y hora del estado
- createdAt: Timestamp de creación
Casos de Uso
1. Mostrar Resumen de la orden
function mostrarResumenOrden(orderData) {
const attrs = orderData.data.attributes;
console.log(`
Orden #${attrs.uniqueOrderNumber}
Estado: ${attrs.lastStatus.data.attributes.status}
Total: $${attrs.totalPrice}
Rastreo: ${attrs.masterTracking}
Cliente: ${attrs.consignee.attributes.name}
`);
}
2. Verificar Productos de la orden
function verificarInventario(orderData) {
const productos = orderData.data.attributes.products;
productos.forEach(item => {
const prod = item.attributes;
console.log(`
SKU: ${prod.product.sku}
Cantidad: ${prod.quantity}
Precio: $${prod.unitPrice}
Subtotal: $${prod.subtotal}
`);
});
}
3. Generar Etiqueta de Dirección
function generarEtiquetaDireccion(orderData) {
const dest = orderData.data.attributes.consignee.attributes;
return `
${dest.name}
${dest.street} ${dest.externalNumber}${dest.internalNumber ? ' ' + dest.internalNumber : ''}
${dest.neighborhood}
${dest.municipality}, ${dest.state}
C.P. ${dest.zipcode}
Tel: ${dest.phone}
`;
}
Diferencias con Order Status
Este endpoint proporciona información completa de la orden, mientras que /order-status solo muestra el historial de estados. Usa este endpoint cuando necesites:
- Datos del cliente
- Detalles de productos
- Información de empaque
- Números de rastreo
Límites de Consulta
- Este endpoint contiene más datos y puede ser más lento
- Úsalo solo cuando necesites la información completa
- Para solo verificar el estado, usa
/order-status