Saltar al contenido principal

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

HeaderTipoRequeridoDescripción
AuthorizationstringToken Bearer obtenido del endpoint /token/generate
Content-TypestringDebe ser application/json
AcceptstringDebe 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 true para 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