Introducción
La API de Pakke está diseña sobre REST, por lo tanto, encontrarás que las URL de los servicios están orientadas a recursos generales e individuales, además de usar códigos de respuesta HTTP estandarizados para indicar posibles errores en las peticiones.
El formato de todas las respuestas de la API, incluyendo errores, es JSON. Además, ten en cuenta que todas las propiedades de los parámetros de entrada son case-sensitive.
Por el momento, la API REST de Pakke no tiene dispobnible un ambiente de pruebas, solo se puede accesar a ella en ambiente productivo.
API Endpoints
Las URLs de los recursos de la API Pakke están formadas por la URI base más el nombre de la entidad y la operación. En otros casos, además, se requerirá especificar el identificador individual del objeto que se quiera consultar en un formato tipo entidad/operacion/{OBJECT_ID}.
La URI base que debe ser utilizada en todos los servicios expuestos de la API de Pakke es https://seller.pakke.mx/api/v1/.
Por ejemplo, si queremos obtener los servicios de envío disponibles por courier, la URL que deberíamos utilizar sería el URI base más el recurso ‘CourierServices’:
https://seller.pakke.mx/api/v1/CourierServices |
---|
Por otro lado, si estamos tratando de obtener la información de una guía en particular, la URL que se debería utilizar sería la URI base más el recurso y el identificador individual de la guía:
https://seller.pakke.mx/api/v1/Shipments/{SHIPMENT_ID} |
---|
Todas las peticiones requieren que se envíen las cabeceras HTTP adecuadas, el token de autenticación y el resto de los parámetros que cada recurso requiera en formato de objeto JSON.
Autenticación
Ejemplo de petición con autorización de llamadas de la API con la cabecera Authorization
curl -X POST
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
https://seller.pakke.mx/api/v1/CourierServices
A excepción de los recursos públicos, todos los endpoints de la API Pakke requieren de una llave de API (o token de autenticación) que identifique la cuenta de usuario que se usará para realizar las operaciones. El token de autenticación tiene que enviarse como parte de la petición HTTP como valor de la cabecera ‘Authorization’.
Existen 2 tipos de llaves de API o tokens de autenticación:
- Token temporal
- API Key.
Ambos difieren entre sí por el periodo de tiempo en el que el token es vigente: Los tokens temporales tienen un periodo de vigencia corto y las API Keys se pueden utilizar indefinidamente (al menos mientras no se solicite el cambio de la llave o se haga un reseteo de las mismas).
La decisión de usar uno u otro tipo de autenticación dependerá de las necesidades de cada integración.
Autenticación temporal
Ejemplo de petición:
curl -X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"email": "usuario@email.com", "password": "demo.1234" }' \
https://seller.pakke.mx/api/v1/Users/login
Ejemplo de respuesta:
{
"token": "cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK",
"userId": "338fere-n32wdqk4k3l-4we7-a6e49-nkte2naak4",
"ttl": 1209600,
"created": "2018-12-07T19:31:53.554Z",
"roles": ["END_USER"]
}
Para obtener un token temporal se necesita utilizar el endpoint /Users/login. Este servicio requiere que se envíen por POST las mismas credenciales de acceso que se utilizan para iniciar sesión en Pakke. El token generado como respuesta solo será válido por un tiempo limitado y una vez caducado ya no podrá utilizarse. Si después de eso necesitas volver a utilizar algún otro endpoint será necesario que vuelvas a generar otro token temporal válid utilizando el mismo procedimiento.
Para determinar la vigencia del token temporal puedes utilizar la información de los campos de respuesta ‘ttl’ y ‘created’.
Endpoint
POST | /Users/login |
---|---|
No requiere autenticación |
Parámetros
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
String | Si | Correo electrónico de la cuenta de usuario | |
Password | String | Si | Contraseña de acceso de la cuenta de usuario |
Respuesta
Propiedad | Tipo | Descripción |
---|---|---|
userId | String | Identificador de la cuenta de usuario |
token | String | Token temporal |
ttl | Number | Número de segundos de vigencia del token temporal |
created | String | Fecha (en formato UTC) en la que se generó el token temporal |
roles | Array | Listado de roles aplicables a la cuenta de usuario |
Autenticación por API Key
Para generar un API Key sin vigencia definida solo hay que iniciar sesión en Pakke, entrar a la página ‘Mi Perfil’ ir a la sección ‘API Key’ y después dar clic en el botón ‘Regenerar’:
Este proceso lo puedes hacer las veces que sea necesario, cuando quieras cambiar tu API Key. Por favor toma en cuenta que al regenerar tu llave de API también tendrás que cambiarla en tu integración.
Errores
Ejemplo de petición errónea (sin token de autenticación) al servicio de servicios de courier
curl -X POST
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
https://seller.pakke.mx/api/v1/CourierServices
Respuesta de error
{
"error": {
"statusCode": 401,
"name": "Error",
"message": "Authorization Required",
"code": "AUTHORIZATION_REQUIRED"
}
}
En caso de que haya algún problema con las peticiones hechas al API de Pakke, ésta devolverá objetos de JSON cuando exista un error.
Respuesta de error
Campo | Tipo | Descripción |
---|---|---|
statusCode | String | Código HTTP de la causa del error |
message | String | Tipificación de la excepción (uso interno) |
Code | String | Código interno de la excepción |
details | String | Mensajes de error con las excepciones |
Couriers y Servicios
Dentro de este apartado se incluyen los endpoints para consultar los couriers/carriers disponibles en Pakke, sus servicios y los equivalentes en la nomenclatura del API.
Couriers
Ejemplo de petición
curl -X GET \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
https://seller.pakke.mx/api/v1/Couriers
Respuesta
{
[
{
"CourierCode": "99M",
"Name": "99M",
"Status": 1,
"VolumetricWeightFactor": 5000,
"HasPickupActive": false
},
{
"CourierCode": "STF",
"Name": "Estafeta",
"Status": 1,
"VolumetricWeightFactor": 5000,
"HasPickupActive": true
}
]
}
Para obtener el listado de couriers activos en la plataforma, se debe utilizar el siguiente endpoint:
Endpoint
GET | /Couriers |
---|
Respuesta
Un Array de objetos con información del courier
Propiedad | Tipo | Descripción |
---|---|---|
CourierCode | String | Identificador corto del courier |
Name | String | Nombre completo del courier |
Status | Number | Bandera para indicar si el courier está o no activo |
VolumetricWeightFactor | Number | Factor para calcular el peso volumétrico de los paquetes |
HasPickupActive | Boolean | Bandera para indicar si el courier permite o no recolecciones |
Servicios
Ejemplo de petición
curl -X GET
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
https://seller.pakke.mx/api/v1/CourierServices
Respuesta - HTTP Success 200
[
{
"CourierServiceId": "bicycle",
"CourierCode": "99M",
"Description": "Mismo dia bicycle",
"DeliveryDays": "1 día hab."
},
{
"CourierServiceId": "bicycle99",
"CourierCode": "99M",
"Description": "Express bicycle",
"DeliveryDays": "1 día hab."
},
{
"CourierServiceId": "ESTAFETA_DIA_SIGUIENTE",
"CourierCode": "STF",
"Description": "Dia Siguiente",
"DeliveryDays": "1 día hab."
},
{
"CourierServiceId": "ESTAFETA_TERRESTRE_CONSUMO",
"CourierCode": "STF",
"Description": "Terrestre Consumo",
"DeliveryDays": "2 - 5 dias hab."
}
]
Para obtener el listado de los servicios homologados en la plataforma, se debe utilizar el siguiente endpoint:
Endpoint
GET | /CourierServices |
---|
Respuesta
Un Array de objetos con información del courier
Propiedad | Tipo | Descripción |
---|---|---|
CourierServiceId | String | Identificador de servicio de courier |
CourierCode | String | Identificador corto del courier |
Description | String | Descripción larga del servicio de courier |
DeliveryDays | String | Descripción de la fecha de entrega esperada |
Envíos
Dentro de esta sección se listan los endpoints para crear y consultar envíos, obtener su detalle y hacer búsquedas.
Cotización de guías
Ejemplo de petición
curl -X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
-d '{
"ZipCodeFrom": "64000",
"ZipCodeTo": "06000",
"Parcel": {
"Weight": 1,
"Width": 10,
"Height": 10,
"Length": 10
},
"CouponCode": null,
"InsuredAmount": 1000
}' \
https://seller.pakke.mx/api/v1/Shipments
Respuesta
{
"Pakke": [
{
"CourierCode": "STF",
"CourierName": "Estafeta",
"CourierServiceId": "ESTAFETA_TERRESTRE_CONSUMO",
"CourierServiceName": "Terrestre Consumo",
"DeliveryDays": "2-5 días hab.",
"CouponCode": null,
"DiscountAmount": 0,
"TotalPrice": 85.83,
"EstimatedDeliveryDate": "2019-07-04",
"BestOption": true
},
{
"CourierCode": "STF",
"CourierName": "Estafeta",
"CourierServiceId": "ESTAFETA_DIA_SIGUIENTE",
"CourierServiceName": "Dia Siguiente",
"DeliveryDays": "1 día hab.",
"CouponCode": null,
"DiscountAmount": 0,
"TotalPrice": 117.67,
"EstimatedDeliveryDate": "2019-07-04",
"BestOption": false
},
{
"CourierCode": "FDX",
"CourierName": "FedEx",
"CourierServiceId": "FEDEX_EXPRESS_SAVER",
"CourierServiceName": "Express Saver",
"DeliveryDays": "3 días hab.",
"CouponCode": null,
"DiscountAmount": 0,
"TotalPrice": 134.75,
"EstimatedDeliveryDate": "2019-07-04",
"BestOption": false
},
{
"CourierCode": "FDX",
"CourierName": "FedEx",
"CourierServiceId": "FEDEX_STANDARD_OVERNIGHT",
"CourierServiceName": "Standard Overnight",
"DeliveryDays": "1 día hab.",
"CouponCode": null,
"DiscountAmount": 0,
"TotalPrice": 184.51,
"EstimatedDeliveryDate": "2019-07-04",
"BestOption": false
}
]
}
Con este endpoint podrás obtener la cotización del envío de los couriers/carriers disponibles en la plataforma:
Endpoint
POST | /Shipments/rates |
---|
Parámetros
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
ZipCodeFrom | String | Si | Código postal origen del paquete |
ZipCodeTo | String | Si | Código postal destino del paquete |
Parcel | ShipmentParcel | Si | Información del dimensiones y peso del paquete |
CouponCode | String | No | Código de cupón que se aplicaría a la generación de la guía |
InsuredAmount | Number | No | Valor declarado del paquete que servirá para determinar el costo del seguro de entrega |
Respuesta
Campo | Tipo | Descripción |
---|---|---|
Pakke | Array |
Lista de servicios ofrecidos por Pakke |
ShipmentParcel
Campo | Tipo | Descripción |
---|---|---|
CourierCode | String | Identificador corto del courier |
CourierName | String | Nombre del courier |
CourierServiceId | String | Identificador de servicio del courier |
CourierServiceName | String | Nombre del servicio |
DeliveryDays | String | Descripción de los días de entrega |
CouponCode | String | Código del cupón aplicado al costo |
DiscountAmount | Number | Total del descuento aplicado al costo |
TotalPrice | Number | Total del costo (ya con descuento aplicado) |
BestOption | Boolean | Bandera que indica si el costo es el mejor (el menos costoso) |
ShipmentParcel
Este objeto se utiliza para especificar las dimensiones y peso del paquete.
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
Length | Number | Si | Longitud del paquete expresada en cms. |
Width | Number | Si | Ancho del paquete expresado en cms. |
Height | Number | Si | Alto del paquete expresado en cms. |
Weight | Number | Si | Peso simple del paquete expresado en cms. |
Creación de guías
Ejemplo de petición
curl -X POST \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
-d '{
"CourierCode": "FDX",
"CourierServiceId": "ECO",
"ResellerReference": "TCPIP-0817-23",
"Content": "Producto",
"AddressFrom": {
"ZipCode": "87120",
"State": "MX-TAM",
"City": "Victoria",
"Neighborhood": "Hacienda del Santuario",
"Address1": "3301 Gamboa Ferrocarril",
"Address2": "Apt. 149",
"Residential": false
},
"AddressTo": {
"ZipCode": "34040",
"State": "MX-DUR",
"City": "Durango",
"Neighborhood": "Villa de Guadalupe",
"Address1": "48787 Alejandro Arrabal",
"Address2": "Apt. 845",
"Residential": true
},
"Parcel": {
"Length": 73,
"Width": 77,
"Height": 33,
"Weight": 2
},
"Sender": {
"Name": "Hugo Domínguez",
"Phone1": "5627-452-122",
"Phone2": "5621-911-389",
"Email": "Matas_Roybal@corpfolder.com"
},
"Recipient": {
"Name": "Benjamín Grijalva",
"CompanyName": "Espinoza - Colunga",
"Phone1": "5124-468-864",
"Email": "Antonio.Sanabria54@nearbpo.com"
}
}' \
https://seller.pakke.mx/api/v1/Shipments
Respuesta
{
"ShipmentId": "efa1fab0-9934-11e9-829b-51a5cf8a966e",
"ResellerId": "f9de4742-29fc-4c18-a66e-f56b8e82cd09",
"OwnerId": "c8d1f584-ae79-4fb5-b8a4-d68bfca3c2e3",
"OrderId": null,
"CreatedAt": "2019-06-27T18:40:26.069-05:00",
"ExpiresAt": "2019-07-02T18:40:26.069-05:00",
"CourierName": "FedEx",
"CourierCode": "FDX",
"CourierServiceId": "FEDEX_STANDARD_OVERNIGHT",
"CourierService": "Standard Overnight",
"ResellerReference": "",
"HasExceptions": false,
"HasChangeZipCode": false,
"SendRecipientNotifications": false,
"InsuredAmount": 0,
"Parcel": {
"Length": 73,
"Width": 77,
"Height": 33,
"Weight": 2
},
"QuotedWeight": 5,
"RealWeight": 5,
"RealOverWeight": 0,
"CoveredWeight": 5,
"OverWeight": 0,
"OverWeightPrice": 15,
"CoveredAmount": 225.43,
"ExtrasAmount": 0,
"QuotedAmount": 225.43,
"DiscountAmount": 0,
"CouponCode": null,
"InsuranceAmount": 0,
"InsurancePercentFactor": 1.2,
"TotalAmount": 225.43,
"OriginalWeight": 5,
"OriginalWidth": 30,
"OriginalLength": 40,
"OriginalHeight": 20,
"OriginalVolumetricWeight": 5,
"AddressFrom": {
"ZipCode": "87120",
"State": "MX-TAM",
"City": "Victoria",
"Neighborhood": "Hacienda del Santuario",
"Address1": "3301 Gamboa Ferrocarril",
"Address2": "Apt. 149",
"Residential": false
},
"AddressTo": {
"ZipCode": "34040",
"State": "MX-DUR",
"City": "Durango",
"Neighborhood": "Villa de Guadalupe",
"Address1": "48787 Alejandro Arrabal",
"Address2": "Apt. 845",
"Residential": true
},
"Sender": {
"Name": "Hugo Domínguez",
"Phone1": "5627-452-122",
"Phone2": "5621-911-389",
"Email": "Matas_Roybal@corpfolder.com"
},
"Recipient": {
"Name": "Benjamín Grijalva",
"CompanyName": "Espinoza - Colunga",
"Phone1": "5124-468-864",
"Email": "Antonio.Sanabria54@nearbpo.com"
},
"Owner": "pospago@pakke.mx",
"DaysInTransit": null,
"EnableRefund": 1,
"ChangeZipCode": null,
"Content": "Accesorios",
"transactions": [],
"Credentials": null,
"TrackingNumberReplaced": null,
"Folio": null,
"EstimatedDeliveryDate": "2019-06-28",
"TrackingNumber": "794622745362",
"WaybillNumber": null,
"Label": "JVBERi0xLjQKMSA[...]FydHhyZWYKNzIyMQolJUVPRgo=",
"Status": "SUCCESS",
"TrackingStatus": "WAITING"
}
Este endpoint realiza el trabajo de validar los datos de entrada y enviar dichos datos al courier seleccionado para generar la etiqueta de la guía:
Endpoint
POST | /Shipments |
---|
Parámetros
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
CourierCode | String | No | Identificador corto de courier |
CourierServiceId | String | No | Identificador de servicio de courier |
ResellerReference | String | No | Referencia personalizada del paquete |
Parcel | ShipmentParcel | Si | Información del dimensiones y peso del paquete |
AddressFrom | ShipmentAddress | Si | Dirección de Envío |
AddressTo | ShipmentAddress | Si | Dirección de Entrega |
Sender | ShipmentContact | Si | Información del remitente |
Recipient | ShipmentContact | Si | Información del destinatario |
Respuesta
Campo | Tipo | Descripción |
---|---|---|
ShipmentId | String | Identificador único del envío |
ResellerId | String | Identificador de la cuenta de reseller que creó la guía |
OwnerId | String | Identificador del reseller |
CreatedAt | date | Fecha/hora de la creación del envío |
ExpiresAt | date | Fecha/hora de expiración de la etiqueta de envío |
CourierName | String | Nombre del courier |
CourierCode | String | Identificador corto del courier |
CourierServiceId | String | Identificador de servicio del courier |
CourierService | String | Nombre del servicio |
ResellerReference | String | Referencia personalizada del paquete |
HasExceptions | Boolean | Bandera que indica si el envío tiene excepciones de entrega |
HasChangeZipCode | Boolean | Bandera que indica si se detectó si el envío cambió de códigos postales de entrega |
SendRecipientNotifications | Boolean | Bandera que indica si la guía tiene activado el envío de notificaciones |
InsuredAmount | Number | Monto del seguro de envío |
Parcel | ShipmentParcel | Información del Paquete |
AddressFrom | ShipmentAddress | Dirección de Envío |
AddressTo | ShipmentAddress | Dirección de Entrega |
Sender | ShipmentContact | Información del remitente |
Recipient | ShipmentContact | Información del destinatario |
QuotedAmount | Number | Precio cotizado |
DiscountAmount | Number | Descuento |
InsuranceAmount | Number | Costo del seguro |
TotalAmount | Number | Costo total del paquete |
OverWeightPrice | Number | Precio por kilo de sobrepeso |
OriginalWeight | Number | Peso simple del paquete cotizado |
OriginalWidth | Number | Ancho del paquete cotizado |
OriginalLength | Number | Longitud del paquete cotizado |
OriginalHeight | Number | Altura del paquete cotizado |
OriginalVolumetricWeight | Number | Peso volumétrico del paquete cotizado |
RealWeight | Number | Peso real del paquete |
RealOverWeight | Number | Sobrepeso real del paquete |
Owner | String | Correo electrónico del reseller |
DaysInTransit | Number | Días en tránsito del paquete |
Content | String | Contenido del paquete |
transactions | Array | Array con las transacciones generadas por la guía |
Status | String | Estatus de la guía:
|
TrackingNumber | String | Número de guía del courier |
TrackingStatus | String | Estatus del rastreo:
|
Label | String | Etiqueta de la guía de envío PDF en formato base64 |
ShipmentParcel
Este objeto se utiliza para especificar las dimensiones y peso del paquete.
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
Length | Number | Si | Longitud del paquete expresada en cms. |
Width | Number | Si | Ancho del paquete expresado en cms. |
Height | Number | Si | Alto del paquete expresado en cms. |
Weight | Number | Si | Peso simple del paquete expresado en cms. |
ShipmentAddress
Este objeto representa una la dirección de envío o de entrega.
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
ZipCode | String | Si | Código postal |
State | String | Si | Entidad Federativa (texto libre) |
City | String | Si | Municipio/Ciudad |
Neighborhood | String | Si | Colonia |
Address1 | String | Si | Calle y número |
Address2 | String | Si | Datos adicionales |
Residential | Boolean | No | Indica si la dirección necesita un trato especial por el courier (solo tiene efecto en la entrega) |
ShipmentContact
Este objeto se usa para pare los datos de contacto del remitente o destinatario.
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
Name | String | Si | Nombre del contacto |
String | No | Correo electrónico | |
Phone1 | String | No | Teléfono de contacto 1 |
Phone2 | String | No | Teléfono de contacto 2 |
CompanyName | String | Si, solo para el destinatario | Nombre de la empresa |
Consulta de guías
Ejemplo de petición
curl -X GET \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
https://seller.pakke.mx/api/v1/Shipments/{SHIPMENT_ID}/
Respuesta - Success 200
{
{
"ShipmentId": "efa1fab0-9934-11e9-829b-51a5cf8a966e",
"ResellerId": "f9de4742-29fc-4c18-a66e-f56b8e82cd09",
"OwnerId": "c8d1f584-ae79-4fb5-b8a4-d68bfca3c2e3",
"OrderId": null,
"CreatedAt": "2019-06-27T18:40:26.069-05:00",
"ExpiresAt": "2019-07-02T18:40:26.069-05:00",
"TransitAt": "2019-07-02T18:40:26.069-05:00",
"DeliveredAt": "2019-07-02T18:40:26.069-05:00",
"CourierName": "FedEx",
"CourierCode": "FDX",
"CourierServiceId": "FEDEX_STANDARD_OVERNIGHT",
"CourierService": "Standard Overnight",
"ResellerReference": "",
"HasExceptions": false,
"HasLost": false,
"HasChangeZipCode": false,
"SendRecipientNotifications": false,
"InsuredAmount": 0,
"Parcel": {
"Length": 73,
"Width": 77,
"Height": 33,
"Weight": 2
},
"QuotedWeight": 5,
"RealWeight": 5,
"RealOverWeight": 0,
"CoveredWeight": 5,
"OverWeight": 0,
"OverWeightPrice": 15,
"CoveredAmount": 225.43,
"ExtrasAmount": 0,
"QuotedAmount": 225.43,
"DiscountAmount": 0,
"CouponCode": null,
"InsuranceAmount": 0,
"InsurancePercentFactor": 1.2,
"TotalAmount": 225.43,
"OriginalWeight": 5,
"OriginalWidth": 30,
"OriginalLength": 40,
"OriginalHeight": 20,
"OriginalVolumetricWeight": 5,
"CourierWeight": 5,
"CourierWidth": 30,
"CourierLength": 40,
"CourierHeight": 20,
"CourierVolumetricWeight": 5,
"AddressFrom": {
"ZipCode": "87120",
"State": "MX-TAM",
"City": "Victoria",
"Neighborhood": "Hacienda del Santuario",
"Address1": "3301 Gamboa Ferrocarril",
"Address2": "Apt. 149",
"Residential": false
},
"AddressTo": {
"ZipCode": "34040",
"State": "MX-DUR",
"City": "Durango",
"Neighborhood": "Villa de Guadalupe",
"Address1": "48787 Alejandro Arrabal",
"Address2": "Apt. 845",
"Residential": true
},
"Sender": {
"Name": "Hugo Domínguez",
"Phone1": "5627-452-122",
"Phone2": "5621-911-389",
"Email": "Matas_Roybal@corpfolder.com"
},
"Recipient": {
"Name": "Benjamín Grijalva",
"CompanyName": "Espinoza - Colunga",
"Phone1": "5124-468-864",
"Email": "Antonio.Sanabria54@nearbpo.com"
},
"ReceivedAt": null,
"ReceivedAt": null,
"Owner": "pospago@pakke.mx",
"DaysInTransit": null,
"EnableRefund": 1,
"ChangeZipCode": null,
"Content": "Accesorios",
"transactions": [],
"Credentials": null,
"TrackingNumberReplaced": null,
"Folio": null,
"EstimatedDeliveryDate": "2019-06-28",
"TrackingNumber": "794622745362",
"WaybillNumber": null,
"Status": "SUCCESS",
"TrackingStatus": "WAITING"
}
Este endpoint devuelve la información detallada de un envío.
Endpoint
GET | /Shipments/{SHIPMENT_ID}/ |
---|
Parámetros
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
ShipmentId | String | Si | Identificador único del envío |
Respuesta
Campo | Tipo | Descripción |
---|---|---|
ShipmentId | String | Identificador único del envío |
ResellerId | String | Identificador de la cuenta de reseller que creó la guía |
OwnerId | String | Identificador del reseller |
CreatedAt | date | Fecha/hora de la creación del envío |
ExpiresAt | date | Fecha/hora de expiración de la etiqueta de envío |
TransitAt | date | Fecha/hora de puesta en tránsito del paquete |
DeliveredAt | date | Fecha/hora de entrega del paquete |
CourierName | String | Nombre del courier |
CourierCode | String | Identificador corto del courier |
CourierServiceId | String | Identificador de servicio del courier |
CourierService | String | Nombre del servicio |
ResellerReference | String | Referencia personalizada del paquete |
HasExceptions | Boolean | Bandera que indica si el envío tiene excepciones de entrega |
HasChangeZipCode | Boolean | Bandera que indica si se detectó si el envío cambió de códigos postales de entrega |
SendRecipientNotifications | Boolean | Bandera que indica si la guía tiene activado el envío de notificaciones |
InsuredAmount | Number | Monto del seguro de envío |
Parcel | ShipmentParcel | Información del Paquete |
AddressFrom | ShipmentAddress | Dirección de Envío |
AddressTo | ShipmentAddress | Dirección de Entrega |
Sender | ShipmentContact | Información del remitente |
Recipient | ShipmentContact | Información del destinatario |
QuotedAmount | Number | Precio cotizado |
DiscountAmount | Number | Descuento |
InsuranceAmount | Number | Costo del seguro |
TotalAmount | Number | Costo total del paquete |
OverWeightPrice | Number | Precio por kilo de sobrepeso |
OriginalWeight | Number | Peso simple del paquete cotizado |
OriginalWidth | Number | Ancho del paquete cotizado |
OriginalLength | Number | Longitud del paquete cotizado |
OriginalHeight | Number | Altura del paquete cotizado |
OriginalVolumetricWeight | Number | Peso volumétrico del paquete cotizado |
CourierWeight | Number | Peso simple del paquete reportado por el courier |
CourierWidth | Number | Ancho del paquete reportado por el courier |
CourierLength | Number | Longitud del paquete reportado por el courier |
CourierHeight | Number | Altura del paquete reportado por el courier |
CourierVolumetricWeight | Number | Peso volumétrico del paquete reportado por el courier |
RealWeight | Number | Peso real del paquete |
RealOverWeight | Number | Sobrepeso real del paquete |
Owner | String | Correo electrónico del reseller |
DaysInTransit | Number | Días en tránsito del paquete |
Content | String | Contenido del paquete |
transactions | Array | Array con las transacciones generadas por la guía |
Status | String | Estatus de la guía:
|
TrackingNumber | String | Número de guía del courier |
TrackingStatus | String | Estatus del rastreo:
|
Consulta de etiquetas
Ejemplo de petición
curl -X GET \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
https://seller.pakke.mx/api/v1/Shipments/25444660-3fb6-11e9-b3ab-a30edf078497/label
Respuesta - Success 200
{
"data": "<pdf_base64>",
"TrackingNumber": "794610703145"
"WaybillNumber": null
}
Este endpoint sirve para obtener la etiqueta de un envío en particular.
Endpoint
GET | /Shipments/{SHIPMENT_ID}/label |
---|
Parámetros
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
ShipmentId | String | Si | Identificador único del envío |
Respuesta
Campo | Tipo | Descripción |
---|---|---|
data | String | PDF en base64 |
TrackingNumber | String | Número de guía del courier |
WaybillNumber | String | Número de guía largo del courier (aplica solo para algunos couriers) |
Consulta de historial
Ejemplo de petición
curl -X GET \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: cHZHeERWFDFQWE434325FFF5DDG768D4B33MwTT4oFpQnyYwm00SxECK' \
https://seller.pakke.mx/api/v1/Shipments/{SHIPMENT_ID}/history
Respuesta - Success 200
[
{
"Date": "2019-01-03T14:23:01.000-06:00",
"Details": "Envío entregado - Firmado por USUARIO",
"Location": null
},
{
"Date": "2019-01-03T10:05:00.000-06:00",
"Details": "Envío en ruta de entrega.",
"Location": null
},
{
"Date": "2018-12-29T10:29:00.000-06:00",
"Details": "Llegado a oficinas de FDX",
"Location": null
},
{
"Date": "2018-12-28T18:23:01.000-06:00",
"Details": "Envío retirado/recolectado.",
"Location": null
},
{
"Date": "2018-12-28T17:57:00.000-06:00",
"Details": "Retiro programado",
"Location": {
"ZipCode": "07800",
"State": "MX-CMX",
"City": "Del. Gustavo A. Madero",
"Coordinates": {
"lat": 19.4795678,
"lng": -99.1418031
}
}
]
Este endpoint regresa el histórico de los movimientos realizados desde el API, además de los movimientos que realice el courier.
Endpoint
GET | /Shipments/{SHIPMENT_ID}/history |
---|
Parámetros
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
ShipmentId | String | Si | Identificador único del envío |
Respuesta
Campo | Tipo | Descripción |
---|---|---|
- | Array |
Arreglo con eventos del historial |
Parámetros
Campo | Tipo | Requerido | Descripción |
---|---|---|---|
CourierCode | String | Si | Código del Courier/Carrier |
TrackingNumber | String | Si | Número de guía del courier |
HistoryEvent
Campo | Tipo | Descripción |
---|---|---|
Date | Fecha | Fecha en la que se generó el evento |
Details | String | Deescripción del evento |
Location | EventLocationInfo | Objeto con información del evento |
EventLocationInfo
Campo | Tipo | Descripción |
---|---|---|
ZipCode | String | Código postal donde se generó el evento |
State | String | Estado de la República donde se generó el evento |
City | String | Ciudad de la República donde se generó el evento |
Coordinates | Objeto | Longitud y latitud donde se generó el evento |
Apéndices
A - Entidades Federativas
Para los códigos de los estados/subdivisiones, se pueden utilizar los valores del estándar ISO 3166-2:MX. A continuación se muestra el listado:
Código ISO | Nombre del Estado |
---|---|
MX-AGU | Aguascalientes |
MX-BCN | Baja California |
MX-BCS | Baja California Sur |
MX-CAM | Campeche |
MX-COA | Coahuila |
MX-COL | Colima |
MX-CHP | Chiapas |
MX-CHH | Chihuahua |
MX-CMX | Ciudad de México |
MX-DUR | Durango |
MX-GUA | Guanajuato |
MX-GRO | Guerrero |
MX-HID | Hidalgo |
MX-JAL | Jalisco |
MX-MEX | México |
MX-MIC | Michoacán |
MX-MOR | Morelos |
MX-NAY | Nayarit |
MX-NLE | Nuevo León |
MX-OAX | Oaxaca |
MX-PUE | Puebla |
MX-QUE | Querétaro |
MX-ROO | Quintana Roo |
MX-SLP | San Luis Potosí |
MX-SIN | Sinaloa |
MX-SON | Sonora |
MX-TAB | Tabasco |
MX-TAM | Tamaulipas |
MX-TLA | Tlaxcala |
MX-VER | Veracruz |
MX-YUC | Yucatán |
MX-ZAC | Zacatecas |