Get Shipment Status

This REST API is used by Uniware to get the recent shipment status (after dispatch) from the shipping provider/aggregator. The list of AWB (waybill) Nos. whose tracking status needs to be determined is sent in request. The shipping provider in response shares the current status (with date) against each AWB No.

Tip

  • It is recommended to check out Notes for the reader. You might find this helpful as it contains Guidelines for using API references and Terminologies used here.
  • The shipping provider is required to share details of their supported shipment statuses with Unicommerce. These details shall mention the status definitions and forward/reverse flags.

Flow

Shipment_Status_Flow

Tip

Complete integration flow is available on Basic Overview page.

Basic Information

NAME DETAILS
Usage: Mandatory
Endpoint: /waybillDetails
Request Type: GET
Scheme: HTTPS
Header (Content-Type): application/json
Header (Authorization): token (got from SP Authentication)

Query Parameters

NOTE:

It is a mandate to send AWB No. inside quotes. Eg.: “3113210963421,5213410156781,…N”.

PARAMETERS TYPE DESCRIPTION MANDATORY NOTES
waybills string List of way bill numbers (inside quotes) Yes Max. 50 AWBs per request, Eg.: 3113210963421

Response Payload

{
  "Status": "SUCCESS",
  "waybillDetails": [
    {
      "waybill": "80224636450",
      "currentStatus": "PICKUP_PENDING",
      "current_sub_status": "out for pickup",
      "current_status_remark": "pickup is yet to be done",
      "statusDate": "05-Aug-2023 03:52:09",
      "shipping_provider": "LSP Name"
      "current_location": "Mumbai_Turbhe_C (Maharashtra)",
      "current_pincode": "400703",
      "current_city": "Navi Mumbai",
      "current_state": "Maharashtra",
      "current_country": "India",
      "latitude": "",
      "longitude": "",
      "expected_date_of_delivery": "07-Aug-2023 03:52:09",
      "promised_date_of_delivery": "08-Aug-2023 03:52:09",
      "payment_type": "COD",
      "weight": "500",
      "dimensions": {
        "l": "100",
        "b": "120",
        "h": "150"
      },
      "delivery_agent_name": "",
      "delivery_agent_number": "",
      "attempt_count": "1",
      "ndr_code": "",
      "ndr_reason": "REFUSAL CONFIRMATION CODE VERIFIED",
      "next_delivery_date": "09-Aug-2023 03:52:09",
      "cir_pickup_datetime": "",
      "tracking_history": [
        {
          "date_time": "Mumbai_Turbhe_C (Maharashtra)",
          "status": "InfoReceived",
          "sub_status": "OutForPickup",
          "remark": " shipment has been picked",
          "location": "Mumbai_Turbhe_C (Maharashtra)",
          "pincode": "400703",
          "city": "Navi Mumbai",
          "state": "Maharashtra",
          "country": "India"
        },
        {
          "date_time": "Mumbai_Turbhe_C (Maharashtra)",
          "status": "InfoReceived",
          "sub_status": "OutForPickup",
          "remark": " shipment has been picked",
          "location": "Mumbai_Turbhe_C (Maharashtra)",
          "pincode": "400703",
          "city": "Navi Mumbai",
          "state": "Maharashtra",
          "country": "India"
        }
      ],
      "parent_awb": "",
      "rto_awb": "",
      "rto_reason": "",

    }
  ],
  "message": "String"
}

Response Payload (Error)

{
   "status":"FAILED",
   "message":"failure reason",
   "waybillDetails":[]
}

Response Payload Details

PARAMETER TYPE DESCRIPTION NOTES MANDATORY
status string Status of the API request Allowable: SUCCESS, FAILED Yes
waybillDetails string Details of waybill(AWB) - Yes
waybill string Shipment tracking number Max. 50 AWBs per response, Eg.: “3113210963421” Yes
shipping_provider string Name of actual courier allocated (LSP Name) - Opt.
statusDate string Last status date Eg: 21-Feb-2023 19:23:00 Yes
currentStatus string Most recent tracking status Most recent courier status of AWB, statuscode or status Yes
current_sub_status string status title or substatus(child) asscociated with parent status Keep it as blank "" until you have discussed this with the UC team. Else, current integration will be broken. Opt, If you opt to transmit both the statues current_sub_status and currentStatus to Uniware, it’s essential to update the status mapping. We will concatenate both the values received in these two fields with a hyphen (-). Otherwise, the current tracking mechanism will break down.
current_status_remark string Definition of the current status or Remark or description of the current activity if data not available keep it as blank "" Opt.
current_location string Current location of the shipment if data not available keep it as blank "" Opt.
current_pincode string Current location if data not available keep it as blank "" Opt.
current_city string Current city if data not available keep it as blank "" Opt.
current_state string Current state if data not available keep it as blank "" Opt.
current_country string Current countyy if data not available keep it as blank "" Opt.
latitude string Current latitude if data not available keep it as blank "" Opt.
longitude string Current longitude if data not available keep it as blank "" Opt.
expected_date_of_delivery string Expected date of shipment delivery Eg: 21-Feb-2024 19:23:00, if data not available keep it as blank "" Opt.
promised_date_of_delivery string Promised date of shipment delivery Eg: 21-Feb-2023 19:23:00, if data not available keep it as blank "" Opt.
payment_type string Mode of payment E.g. COD, PREPAID, if data not available keep it as blank "" Opt.
weight string Shipment weight (in gms) if data not available keep it as blank "" Opt.
dimensions Object Shipment dimenison details - Opt.
l string Shipment length (in mm) if data not available keep it as blank "" Opt.
b string Shipment width (in mm) if data not available keep it as blank "" Opt.
h string Shipment hight (in mm) if data not available keep it as blank "" Opt.
delivery_agent_name string delivery agent name if data not available keep it as blank "" Opt.
delivery_agent_number string delivery agent number if data not available keep it as blank "" Opt.
attempt_count string delivery attempt count if data not available keep it as blank "" Opt.
ndr_code string NDR reason code if data not available keep it as blank "" Opt.
ndr_reason string NDR reason details if data not available keep it as blank "" Opt.
next_delivery_date string Next date of delivery Eg: 21-Feb-2023 19:23:00, if data not available keep it as blank "" Opt.
cir_pickup_datetime string Return Pickup datetime Eg: 21-Feb-2023 19:23:00, When the customer initiated return(CIR/RVP) is picked up by the courier Opt.
tracking_history Object Tracking history of awb Latest history should be on the top Opt.
date_time string Tracking date time Eg: 21-Feb-2023 19:23:00, if data not available keep it as blank "" Opt.
status string Parent tracking status code if data not available keep it as blank "" Opt.
sub_status string Sub-status code in ref to parent status code if data not available keep it as blank "" Opt.
remark string Remark or description of the activity if data not available keep it as blank "" Opt.
location string Location for ref tracking status if data not available keep it as blank "" Opt.
pincode string Pincode for ref tracking status if data not available keep it as blank "" Opt.
city string City for ref tracking status if data not available keep it as blank "" Opt.
state string State for ref tracking status if data not available keep it as blank "" Opt.
country string Country for ref tracking status if data not available keep it as blank "" Opt.
parent_awb string It will hold parent awb with which RTO shipment is associated. In case tracking request is for forward awb then parent_awb will remain blanka but in case tracking request is for RTO awb then parent_awb will hold its associated parent awb , if data not available keep it as blank "" Opt.
rto_awb string It will hold RTO awb associated with parent (Forward) awb. In case tracking request is for parent(forward) awb then rto_awb will have new RTO awb, when separate tracking request for RTO shipment need to be sent. In case tracking request is for parent(forward) awb and RTO is NOT created or new RTO awb is NOT assigned then rtoawb will remain blank. In case tracking request is for RTO awb then rto\awb will remain blank, if data not available keep it as blank "" Opt.
rto_reason string RTO reason for reference shipper if data not available keep it as blank "" Opt.
message string error message Failure reason if Status (Failed) Eg: Connect to Shipping Provider Yes

NOTE:

The charges and price details can be provided either at order level or order item level (charges which are common), but not in both. However, it is recommended to send price at order item level for better handling.

Error Codes

Refer Response Codes section to know about specific errors codes.

FAQs/Notes

Q1. What is call frequency for tracking status API? Is it possible to call it every 60 minutes?
Ans. Tracking status API is called 4 times a day. No, it cannot be called every 60 mins.

Q2. How does UC manage tracking statuses, or what method should we (the shipping provider) use to transmit status milestones?
Ans. Initially, we require a comprehensive list of tracking statuses (milestones) from the shipper partner’s side. Within UC, we’ll conduct mapping against all tracking statuses using the provided list.. If a shipping provider has only parent status construct then we need all such status codes only against the field “currentStatus” on the other hand if shipping has Parent-Child construct then we need both statuses in the respective field currentStatus and current_sub_status and we will concatenate both the values received in these two fields  with a hyphen (-).
Note: current_sub_status : Keep it as blank "" until you have discussed this with the UC team. Else, current integration will be broken.

For example:
“currentStatus”:“Delivered”,
“current_sub_status”:“Delivered to CX”

And in mapping sheet we received both the statuses. In UC, we handle this Courier Status as DELIVERED-Delivered to CX and for this proper status mapping must be done with UC.

Q3. If the shipping partner doesn’t have any specific parameter handling on their end, what do they need to pass the value?
Ans. At shipping partner end any specific parameter handling or data is not available then they need to pass blank "" or skip such parameters in the response payload. Avoid to pass Null.
Example:
Sample 1:
“currentcountry”: “India”,
“latitude”: "",
“longitude”: "",
Sample 2:
or just skip last two params:
“current
country”: “India”,

Unicommerce Website

Copyright © 2024 Unicommerce eSolutions Pvt. Ltd.