CEVA Logistics
Categories Ports Statuses Postal Codes Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

CEVA Logistics API Documentation

Introduction

Welcome to the CEVA Logistics API documentation! This comprehensive set of APIs has been meticulously crafted to empower seamless order creation and tracking for your e-commerce platforms. The API Collection is a suite of APIs specifically designed to cater to the needs of your businesses. Our APIs offer a robust and efficient solution for integrating order creation and tracking functionality into your platform. With a focus on simplicity, reliability, and real-time updates, our collection aims to elevate your order management capabilities.

Key Features

  • Order Creation API

The Order Creation API within the Merchant API Collection is your gateway to effortless order submissions. Seamlessly integrate this API into your platform to enable the swift and accurate creation of new orders. Simplify the customer experience and streamline the order placement process, all while maintaining data integrity and security.

  • Order Tracking API

Stay ahead of the curve with our Order Tracking API, an integral part of the CEVA Logistics API Collection. This API empowers your platform to provide real-time updates on order status, keeping both merchants and customers informed every step of the way. Enhance transparency, build trust, and elevate customer satisfaction with this powerful tracking solution.

Benefits

  • Seamless Integration

The Merchant API Collection has been designed with integration in mind. Our APIs are built to effortlessly integrate into your existing e-commerce platform, reducing development time and minimizing disruption.

  • Enhanced Efficiency

By utilizing the Order Creation API, you can optimize the order submission process, enabling faster transactions and improved operational efficiency. Meanwhile, the Order Tracking API ensures timely updates, reducing customer inquiries and enhancing overall satisfaction.

  • Streamlined Order Management

Experience a new level of order management efficiency. The Merchant API Collection is your toolkit for refining and streamlining the entire order lifecycle, from creation to tracking.

  • Real-Time Insights

With real-time updates provided by the Order Tracking API, you gain valuable insights into order status and delivery progress. Make informed decisions and proactively address any potential issues.

Endpoint Functionality

The endpoint serves as a crucial interface between your application and the CEVA Logistics API, facilitating the seamless exchange of data and functionality. In the context of the CEVA Logistics API Collection, there are two distinct endpoints: the Production endpoint, which mirrors the live operational environment for order creation and tracking, and the Sandbox endpoint, designed for controlled testing and refinement of these processes.

Production Endpoint

The Production endpoint is akin to the operational center of your platform. When your platform is live and ready to facilitate order placement and tracking for your customers, the Production endpoint is the interface you’ll engage with. It functions as the actual storefront where genuine transactions occur and real-time order updates take place:

Production Endpoint URL: https://api.v2.luwjistik.io/api/merchants

Sandbox Endpoint

Visualize the Sandbox endpoint as a controlled testing environment, much like a rehearsal space before a grand performance. Prior to exposing your platform to the users, the Sandbox endpoint offers the opportunity to meticulously trial order creation and tracking. Any anomalies or discrepancies can be addressed here, ensuring seamless functionality before deployment to the production environment:

Sandbox Endpoint URL: https://api.sandbox.luwjistik.io/api/merchants

It’s crucial to understand that activities performed within the Sandbox environment are isolated from live operations. This compartmentalization allows for thorough testing and troubleshooting without any impact on your actual store. Once your solutions are impeccably refined within the Sandbox, you can confidently transition to the Production endpoint for a flawless experience.

Authentication

End-point: Merchant Login

The authentication endpoint is used to authenticate a user and obtain an authorization token.

Send the token response under the Authorization header to authenticate a request.

Method: POST

{{BASE_URL}}/login

Request Parameters

Parameter Description Data Type Mandatory Example
email Email address of the user account string Y example@email.com
password User account password String Y safaFSd2R
clientSlug Client account identifier String Y posMy

Response Object

Property Description Data Type Example
client Client information Object See client object below
customerId ID of the customer String “492e1cc0-2f73-11ee-be56-0242ac120002”
customerName Name of the customer String “Lorem”
email Email address String lorem@lorem.com
name Name of the user String “Lorem”
token Authentication token String “123123123123123123123123123123123123213123”
userId ID of the user String “492e1cc0-2f73-11ee-be56-0242ac120002”

Client Object

Property Description Data Type Example
id ID of the client String “492e1cc0-2f73-11ee-be56-0242ac120002”
logo Logo of the client String “A.com/123123123123.jpg”
name Name of the client String “Lorem”
slug Slug of the client String “lorem”

Body (raw)

{
    "email": "dummy_email@example.com",
    "password": "dummy_password",
    "clientSlug": "dummy_clientSlug"
}

Response: 200

{
    "client": {
        "id": "492e1cc0-2f73-11ee-be56-0242ac120002",
        "logo": "",
        "name": "Lorem Ipsum",
        "slug": "lorem"
     },
    "customerId": "492e1cc0-2f73-11ee-be56-0242ac120002",
    "customerName": "Ipsum Lorem",
    "email": "ipsum@ipsum.com",
    "name": "Ipsum",
    "token": "123455678901233454567689789809123243252436354673567",
    "userId": "492e1cc0-2f73-11ee-be56-0242ac120002"
}

Collection: Orders

End-point: Get List of Orders

This endpoint allows users to retrieve list of orders.

Request Parameters

Parameter Description Data Type Mandatory Example
page Page number to retrieve integer Y 1
perPage Number of items to retrieve per page integer Y 300
orderCodes Order code(s) to filter the orders by string N ordercode0821, ordercode0827

Response Object

Property Description Data Type Example
page Current page number integer 1
totalPage Total number of pages integer 1
totalCount Total number of records integer 2
data Collection of uploaded orders array of object see below

data Object Properties

Property Description Data Type Example
id ID of the uploaded order, use this ID for merchant API Tracking UUID 11ebac3c-ff23-4a58-ba05-72cadefbd123
orderCode Order code provided by the client string ordercode0821
clientId ID of the client UUID 0c48140c-f3e2-4bc4-a629-2faeed2a69fc
consigneeName Name of the consignee string Don
consigneeNumber Contact number of the consignee string 123
consigneeAddress Address of the consignee string 123
consigneePostal Postal code of the consignee string 123
consigneeCountry Country code of the consignee string ID
consigneeCity City of the consignee string Don
consigneeState State of the consignee string Don
consigneeProvince Province of the consignee string Don
consigneeEmail Email address of the consignee string don@don.don
length Length of the package in cm float 0
width Width of the package in cm float 0
height Height of the package in cm float 0
weight Weight of the package in kg float 1
paymentType Type of payment string
pickupContactName Name of the pickup contact string
pickupContactNumber Contact number of the pickup contact string 12345
pickupState State where the package is picked up string Singapore
pickupCity City where the package is picked up string Singapore
pickupProvince Province where the package is picked up string Singapore
pickupPostal Postal code of the pickup location string 1
pickupCountry Country code of the pickup location string SG
pickupAddress Address where the package is picked up string Singapore St
refID Reference ID string (nullable) null
labelPath URL to the label PDF string https://url.com/ordercode0821.11ebac3c.pdf
requestedServices Services requested for the order array of string [“FIRST_MILE”,“FREIGHT_FORWARDER”,“CUSTOMS”,“LAST_MILE”]
batchId Batch ID string (nullable) null
batchCode Batch code string (nullable) null
senderName Name of the sender string John
senderNumber Contact number of the sender string 12345
senderState State of the sender string Singapore
senderCity City of the sender string Singapore
senderProvince Province of the sender string Singapore
senderPostal Postal code of the sender string 1
senderCountry Country code of the sender string SG
senderAddress Address of the sender string Singapore St
senderEmail Email address of the sender string john@mail.co
destPortId Destination port ID UUID d258a8cd-befc-4418-9993-ae28184ed934
senderPortId Sender port ID UUID 1cf83510-c353-4dfa-9b7b-08f4137ead66
createdAt Timestamp when the order was created string (ISO 8601) 2024-08-14T03:02:11.045697Z
items Collection of items within the order array of object see items object properties below
senderPort Sender port details object {“code”:“SIN”}
destPort Destination port details object {“code”:“CGK”}
customerId Customer ID UUID dd6facd9-dc6a-4d0f-ae3d-08c058958d8e
updates Status updates related to the order array of object see updates object properties below
mappedPartnerUpdates Mapped partner status updates array of object see mappedPartnerUpdates object properties below
dntCurrency Currency for duties and taxes string
dutiesFee Duties fee string 0
taxFee Tax fee string 0
customerOrderCode Customer’s order code string (nullable) null
terminalStatusId Terminal status ID UUID (nullable) null
insurance Whether insurance was applied boolean false

items Object Properties

Property Description Data Type Example
id ID of the item UUID 6be6e05e-7f5c-4be8-b51f-1d1e8157d0e3
orderId ID of the order UUID 11ebac3c-ff23-4a58-ba05-72cadefbde31
description Description of the item string shoes
quantity Quantity of the item integer 1
productCode Product code string
sku Stock keeping unit (SKU) string
category Category of the item string Sports & Outdoors
price Price of the item string 0.00
currency Currency of the item string IDR
convertedDuty Converted duty string 0
convertedTax Converted tax string 0
convertedDntCurrency Converted DNT currency string
localDntCurrency Local DNT currency string
localTax Local tax string 0
localDuty Local duty string 0
dutiesFee Duties fee string 0
taxFee Tax fee string 0

updates Object Properties

Property Description Data Type Example
id ID of the update UUID 597ecaf4-cea2-466a-82e7-118460b67857
status Status of the order string Order Information Received
updateTimestamp Timestamp when the status update was received string (ISO 8601) 2024-08-14T03:02:11.045697Z
comments Additional comments string
podReceiverName Name of the person who received the proof of delivery (POD) string
podReceiverContact Contact information of the POD receiver string
podURI URI for the proof of delivery string
rawPayload Raw payload data string

mappedPartnerUpdates Object Properties

Property Description Data Type Example
status Status mapped from partner string Order Information Received
comments Additional comments string
updateTimestamp Timestamp when the mapped partner status update was received string (ISO 8601) 2024-08-14T03:02:11.045697Z

Method: GET

{{BASE_URL}}/orders?perPage=300&orderCodes=ordercode0821&orderCodes=ordercode0819

Response: 200

{
    "page": 1,
    "totalPage": 1,
    "totalCount": 2,
    "data": [
        {
            "id": "11ebac3c-ff23-4a58-ba05-72cadefbde31",
            "orderCode": "ordercode0821",
            "clientId": "0c48140c-f3e2-4bc4-a629-2faeed2a69fc",
            "consigneeName": "Don",
            "consigneeNumber": "123",
            "consigneeAddress": "123",
            "consigneePostal": "123",
            "consigneeCountry": "ID",
            "consigneeCity": "Don",
            "consigneeState": "Don",
            "consigneeProvince": "Don",
            "consigneeEmail": "don@don.don",
            "length": 0,
            "width": 0,
            "height": 0,
            "weight": 1,
            "paymentType": "",
            "pickupContactName": "",
            "pickupContactNumber": "12345",
            "pickupState": "Singapore",
            "pickupCity": "Singapore",
            "pickupProvince": "Singapore",
            "pickupPostal": "1",
            "pickupCountry": "SG",
            "pickupAddress": "Singapore St",
            "refID": null,
            "labelPath": "https://url.com/ordercode0821.11ebac3c.pdf",
            "requestedServices": [
                "FIRST_MILE",
                "FREIGHT_FORWARDER",
                "CUSTOMS",
                "LAST_MILE"
            ],
            "batchId": null,
            "batchCode": null,
            "senderName": "John",
            "senderNumber": "12345",
            "senderState": "Singapore",
            "senderCity": "Singapore",
            "senderProvince": "Singapore",
            "senderPostal": "1",
            "senderCountry": "SG",
            "senderAddress": "Singapore St",
            "senderEmail": "john@mail.co",
            "destPortId": "d258a8cd-befc-4418-9993-ae28184ed934",
            "senderPortId": "1cf83510-c353-4dfa-9b7b-08f4137ead66",
            "createdAt": "2024-08-14T03:02:11.045697Z",
            "items": [
                {
                    "id": "6be6e05e-7f5c-4be8-b51f-1d1e8157d0e3",
                    "orderId": "11ebac3c-ff23-4a58-ba05-72cadefbde31",
                    "description": "shoes",
                    "quantity": 1,
                    "productCode": "",
                    "sku": "",
                    "category": "Sports & Outdoors",
                    "price": "0.00",
                    "currency": "IDR",
                    "convertedDuty": "0",
                    "convertedTax": "0",
                    "convertedDntCurrency": "",
                    "localDntCurrency": "",
                    "localTax": "0",
                    "localDuty": "0",
                    "dutiesFee": "0",
                    "taxFee": "0"
                }
            ],
            "senderPort": {
                "code": "SIN"
            },
            "destPort": {
                "code": "CGK"
            },
            "customerId": "dd6facd9-dc6a-4d0f-ae3d-08c058958d8e",
            "updates": [
                {
                    "id": "597ecaf4-cea2-466a-82e7-118460b67857",
                    "status": "Order Information Received",
                    "updateTimestamp": "2024-08-14T03:02:11.045697Z",
                    "comments": "",
                    "podReceiverName": "",
                    "podReceiverContact": "",
                    "podURI": "",
                    "rawPayload": ""
                }
            ],
            "mappedPartnerUpdates": [
                {
                    "status": "Order Information Received",
                    "comments": "",
                    "updateTimestamp": "2024-08-14T03:02:11.045697Z"
                }
            ],
            "dntCurrency": "",
            "dutiesFee": "0",
            "taxFee": "0",
            "customerOrderCode": null,
            "terminalStatusId": null,
            "insurance": false
        },
        {
            "id": "def37eca-b36d-44fa-b150-2c9f3e76f81a",
            "orderCode": "ordercode0819",
            "clientId": "0c48140c-f3e2-4bc4-a629-2faeed2a69fc",
            "consigneeName": "John",
            "consigneeNumber": "12345",
            "consigneeAddress": "Singapore St",
            "consigneePostal": "1",
            "consigneeCountry": "SG",
            "consigneeCity": "Singapore",
            "consigneeState": "Singapore",
            "consigneeProvince": "Singapore",
            "consigneeEmail": "john@mail.co",
            "length": 0,
            "width": 0,
            "height": 0,
            "weight": 400,
            "paymentType": "",
            "pickupContactName": "",
            "pickupContactNumber": "12345",
            "pickupState": "",
            "pickupCity": "asd",
            "pickupProvince": "",
            "pickupPostal": "12312",
            "pickupCountry": "MY",
            "pickupAddress": "asdasd",
            "refID": null,
            "labelPath": "https://url.com/ordercode0819.def37eca.pdf",
            "requestedServices": [
                "FIRST_MILE",
                "FREIGHT_FORWARDER",
                "CUSTOMS",
                "LAST_MILE"
            ],
            "batchId": null,
            "batchCode": null,
            "senderName": "Dong",
            "senderNumber": "12345",
            "senderState": "",
            "senderCity": "asd",
            "senderProvince": "",
            "senderPostal": "12312",
            "senderCountry": "MY",
            "senderAddress": "asdasd",
            "senderEmail": "dong@mail.co",
            "destPortId": null,
            "senderPortId": null,
            "createdAt": "2024-08-13T10:25:55.462309Z",
            "items": [
                {
                    "id": "f6958c0d-eea4-47a9-9434-5872e6a95a3f",
                    "orderId": "def37eca-b36d-44fa-b150-2c9f3e76f81a",
                    "description": "Gift Box & Paper Bag",
                    "quantity": 1,
                    "productCode": "",
                    "sku": "",
                    "category": "Stationery & Craft",
                    "price": "0.00",
                    "currency": "SGD",
                    "convertedDuty": "0",
                    "convertedTax": "0",
                    "convertedDntCurrency": "",
                    "localDntCurrency": "",
                    "localTax": "0",
                    "localDuty": "0",
                    "dutiesFee": "0",
                    "taxFee": "0"
                },
                {
                    "id": "c39dc3e4-61e9-4e81-87ac-50f6ea5a4d6c",
                    "orderId": "def37eca-b36d-44fa-b150-2c9f3e76f81a",
                    "description": "Gift Box & Paper Bag",
                    "quantity": 1,
                    "productCode": "",
                    "sku": "",
                    "category": "Stationery & Craft",
                    "price": "0.00",
                    "currency": "SGD",
                    "convertedDuty": "0",
                    "convertedTax": "0",
                    "convertedDntCurrency": "",
                    "localDntCurrency": "",
                    "localTax": "0",
                    "localDuty": "0",
                    "dutiesFee": "0",
                    "taxFee": "0"
                },
                {
                    "id": "383ebf39-72ce-47d8-93c9-15d7830f2d31",
                    "orderId": "def37eca-b36d-44fa-b150-2c9f3e76f81a",
                    "description": "Gift Box & Paper Bag",
                    "quantity": 1,
                    "productCode": "",
                    "sku": "",
                    "category": "Stationery & Craft",
                    "price": "0.00",
                    "currency": "SGD",
                    "convertedDuty": "0",
                    "convertedTax": "0",
                    "convertedDntCurrency": "",
                    "localDntCurrency": "",
                    "localTax": "0",
                    "localDuty": "0",
                    "dutiesFee": "0",
                    "taxFee": "0"
                },
                {
                    "id": "1b76ebc4-71c9-4f6b-b85d-89fc4378b97c",
                    "orderId": "def37eca-b36d-44fa-b150-2c9f3e76f81a",
                    "description": "Gift Box & Paper Bag",
                    "quantity": 1,
                    "productCode": "",
                    "sku": "",
                    "category": "Stationery & Craft",
                    "price": "0.00",
                    "currency": "SGD",
                    "convertedDuty": "0",
                    "convertedTax": "0",
                    "convertedDntCurrency": "",
                    "localDntCurrency": "",
                    "localTax": "0",
                    "localDuty": "0",
                    "dutiesFee": "0",
                    "taxFee": "0"
                }
            ],
            "senderPort": {
                "code": ""
            },
            "destPort": {
                "code": ""
            },
            "customerId": "dd6facd9-dc6a-4d0f-ae3d-08c058958d8e",
            "updates": [
                {
                    "id": "d918c055-de5c-430d-9e33-68934ec8052b",
                    "status": "Order Information Received",
                    "updateTimestamp": "2024-08-13T10:25:55.462309Z",
                    "comments": "",
                    "podReceiverName": "",
                    "podReceiverContact": "",
                    "podURI": "",
                    "rawPayload": ""
                }
            ],
            "mappedPartnerUpdates": [
                {
                    "status": "Order Information Received",
                    "comments": "",
                    "updateTimestamp": "2024-08-13T10:25:55.462309Z"
                }
            ],
            "dntCurrency": "",
            "dutiesFee": "0",
            "taxFee": "0",
            "customerOrderCode": null,
            "terminalStatusId": null,
            "insurance": false
        }
    ]
}

End-point: Get Order Detail

This endpoint allows users to retrieve order detail.

JSON Response

Property Description Data Type Example
id ID of the shipment String “5c2b0136-2f72-11ee-be56-0242ac120002”
orderCode Order code for the shipment String “lorm123”
clientId ID of the client String “5c2b0136-2f72-11ee-be56-0242ac120002”
consigneeName Name of the consignee String “John”
consigneeNumber Contact number of the consignee String “1137399575”
consigneeAddress Address of the consignee String “123 Main Street, Anytown, USA”
consigneePostal Postal code of the consignee String “68000”
consigneeCountry Country code of the consignee String “MY”
consigneeCity City of the consignee String “JOHOR”
consigneeState State of the consignee (nullable) String ""
consigneeProvince Province/State of the consignee String “JOHOR”
consigneeEmail Email address of the consignee String lorem@yahoo.com
length Length of the shipment in centimeters Number 17
width Width of the shipment in centimeters Number 22
height Height of the shipment in centimeters Number 6
weight Weight of the shipment in kilograms Number 1
paymentType Payment type (‘prepaid’ or ‘cod’) String “prepaid”
pickupContactName Name of the pickup contact person String “Oliver”
pickupContactNumber Contact number of the pickup person String “+84990993841”
pickupState State of the pickup location (nullable) String ""
pickupCity City of the pickup location String “Jakarta”
pickupProvince Province/State of the pickup location String “Indonesia”
pickupPostal Postal code of the pickup location String “13440”
pickupCountry Country code of the pickup location String “ID”
pickupAddress Address of the pickup location String “123 Main Street, Anytown, USA”
refID Reference ID (nullable) String null
labelPath URL path to the shipment label String “lorem.com/bb321.pdf”
requestedServices Array of requested services for the shipment Array [“FIRST_MILE”, “LAST_MILE”, “FREIGHT_FORWARDER”, “DOMESTIC”, “B2B”]
batchId ID of the shipment batch String “5c2b0136-2f72-11ee-be56-0242ac120002”
batchCode Batch code for the shipment String “LUW123”
senderName Name of the sender String “Oliver”
senderNumber Contact number of the sender String “+849123123”
senderState State of the sender (nullable) String ""
senderCity City of the sender String “Jakarta”
senderProvince Province/State of the sender String “Indonesia”
senderPostal Postal code of the sender String “13440”
senderCountry Country code of the sender String “ID”
senderAddress Address of the sender String “123 Main Street, Anytown, USA”
senderEmail Email address of the sender String ""
destPortId ID of the destination port String “5c2b0136-2f72-11ee-be56-0242ac120002”
senderPortId ID of the sender port String “5c2b0136-2f72-11ee-be56-0242ac120002”
createdAt Timestamp of the shipment creation String “2023-06-02T05:25:10.773913Z”
items Array of items in the shipment Array Array of item objects (see Item Table below)
senderPort Object containing the sender port information Object { “code”: “CGK” }
destPort Object containing the destination port information Object { “code”: “KUL” }
customerId ID of the customer String “5c2b0136-2f72-11ee-be56-0242ac120002”
updates Array of updates for the shipment (nullable) Array null
mappedPartnerUpdates Array of mapped partner updates for the shipment (nullable) Array null
dntCurrency Currency code for duties and taxes String “USD”
dutiesFee Duties fee in the specified currency String “0”
taxFee Tax fee in the specified currency String “20.24”
customerOrderCode Customer order code String “FCCLM16123123”
terminalStatusId ID of the terminal status (nullable) String null
insurance Indicates whether insurance is included Boolean false

Item Table

Property Description Data Type Example
id ID of the item String “5c2b0136-2f72-11ee-be56-0242ac120002”
orderId ID of the order containing the item String “5c2b0136-2f72-11ee-be56-0242ac120002”
description Description of the item String “Logitech MX2 Anywhere Bluetooth mouse”
quantity Quantity of the item Number 2
productCode Product code of the item String “446”
sku Stock Keeping Unit (SKU) of the item String “PO-918242213418”
category Category of the item String “Gadget”
price Price of the item in the specified currency String “200.00”
currency Currency code for the item price String “USD”
convertedDuty Duties fee for the item in the specified currency String “0”
convertedTax Tax fee for the item in the specified currency String “20.24”
convertedDntCurrency Currency code for duties and taxes for the item String “USD”
localDntCurrency Local currency code for duties and taxes for the item String “MYR”
localTax Local tax fee for the item in the local currency String “92”
localDuty Local duties fee for the item in the local currency String “0”
dutiesFee Duties fee for the item in the specified currency String “0”
taxFee Tax fee for the item in the specified currency String “20.24”

Method: GET

{{BASE_URL}}/orders/:orderID

Response: 200

{
    "id": "5c2b0136-2f72-11ee-be56-0242ac120002",
    "orderCode": "NEWORDER1234567890",
    "clientId": "12345678-abcd-efgh-ijkl-9876543210ab",
    "consigneeName": "John Doe",
    "consigneeNumber": "555-123-4567",
    "consigneeAddress": "123 Main Street, Anytown, USA",
    "consigneePostal": "12345",
    "consigneeCountry": "US",
    "consigneeCity": "Anytown",
    "consigneeState": "CA",
    "consigneeProvince": "California",
    "consigneeEmail": "john.doe@example.com",
    "length": 25,
    "width": 30,
    "height": 10,
    "weight": 3,
    "paymentType": "credit_card",
    "pickupContactName": "Jane Smith",
    "pickupContactNumber": "+15551234567",
    "pickupState": "NY",
    "pickupCity": "New York City",
    "pickupProvince": "New York",
    "pickupPostal": "10001",
    "pickupCountry": "US",
    "pickupAddress": "456 Oak Avenue, New York City, NY 10001, USA",
    "refID": null,
    "labelPath": "https://example-labels.s3.amazonaws.com/abcdef12-3456-7890-efgh-ijklmnopqrst.pdf",
    "requestedServices": [
        "LAST_MILE",
        "AIR_FREIGHT",
        "INSURANCE"
    ],
    "batchId": "batch1234-abcd-efgh-5678-ijklmnopqrst",
    "batchCode": "BATCH9876543210",
    "senderName": "Jane Smith",
    "senderNumber": "+15551234567",
    "senderState": "NY",
    "senderCity": "New York City",
    "senderProvince": "New York",
    "senderPostal": "10001",
    "senderCountry": "US",
    "senderAddress": "456 Oak Avenue, New York City, NY 10001, USA",
    "senderEmail": "jane.smith@example.com",
    "destPortId": "port5678-efgh-abcd-ijkl-9012mnopqrst",
    "senderPortId": "port9012-ijkl-5678-efgh-abcdmnopqrst",
    "createdAt": "2023-07-31T12:34:56.789Z",
    "items": [
        {
            "id": "item1234-5678-efgh-abcd-ijklmnopqrst",
            "orderId": "abcdef12-3456-7890-efgh-ijklmnopqrst",
            "description": "Widget X1",
            "quantity": 5,
            "productCode": "WIDGET_X1",
            "sku": "WX1-987654321",
            "category": "Widgets",
            "price": "19.99",
            "currency": "USD",
            "convertedDuty": "0",
            "convertedTax": "2.50",
            "convertedDntCurrency": "USD",
            "localDntCurrency": "EUR",
            "localTax": "2.12",
            "localDuty": "0",
            "dutiesFee": "0",
            "taxFee": "2.50"
        }
    ],
    "senderPort": {
    "code": "JFK"
    },
    "destPort": {
    "code": "LAX"
    },
    "customerId": "customer9876-abcd-1234-5678-efghijklmnopqrst",
    "updates": null,
    "mappedPartnerUpdates": null,
    "dntCurrency": "USD",
    "dutiesFee": "0",
    "taxFee": "2.50",
    "customerOrderCode": "ORDER9876543210",
    "terminalStatusId": null,
    "insurance": true
}

End-point: Get Order Label

This endpoint is used to query for the label of a given order.

Method: GET

{{BASE_URL}}/orders/:orderID/label

Response Object

Property Description Data Type Example
id ID of the shipment String “5c2b0136-2f72-11ee-be56-0242ac120002”
orderCode Order code String “ABC123”
orderCode CUstomer provided order code String “ABC123”
labelUrl URL to the label String or null https://www.example.com/abc123.pdf"
createdAt Order creation timestamp Timestamp “2023-11-17T12:20:00.025367+02:00”

Response: 200

{
    "id": "0cb5edb2-9f82-4b83-84b2-b34b48f03047",
    "orderCode": "RED001SIN1116202300000003KUL",
    "customerOrderCode": "ABC123",
    "labelUrl": "http://example.io/label.pdf",
    "createdAt": "2023-11-17T12:20:00.025367+02:00"
}

End-point: Get Order Statuses

This endpoint allows users to retrieve the statuses of their order, both CEVA Logistics Status (Partner Update) & Client Mapped Status (Mapped Partner Update).

Response Object

Property Description Data Type Example
data List of data objects Array of objects -
â”” id Unique identifier for the entry String “b44b0178-c544-4cd5-805f-26946dcc5864”
â”” statusCode Status code String “10002”
â”” status Status description String “Pickup Requested”
â”” internalStatus Internal status description String “Pickup Requested”
â”” updatedAt Date and time of last update String (ISO 8601 format) “2023-11-20T08:24:16.731187+02:00”
â”” createdAt Date and time of creation String (ISO 8601 format) “2023-11-20T13:24:16.738594+02:00”
â”” podReceiverName Name of the Proof of Delivery receiver String “John” (Can be empty string)
â”” podUri URI for Proof of Delivery document String http://luwjistik.io/pod.pdf" (Can be empty)

Method: GET

{{BASE_URL}}/orders/:orderID/status

Response: 200

{
    "data": [
        {
            "id": "b44b0178-c544-4cd5-805f-26946dcc5864",
            "statusCode": "10002",
            "status": "Pickup Requested",
            "internalStatus": "Pickup Requested",
            "updatedAt": "2023-11-20T08:24:16.731187+02:00",
            "createdAt": "2023-11-20T13:24:16.738594+02:00",
            "podReceiverName": "",
            "podUri": ""
        },
        {
            "id": "8ac269f3-455c-4cd1-9f7d-f2243aba8096",
            "statusCode": "10001",
            "status": "Test Client Mapping",
            "internalStatus": "Order Information Received",
            "updatedAt": "2023-11-20T13:24:16.731186+02:00",
            "createdAt": "2023-11-20T13:24:16.738594+02:00",
            "podReceiverName": "John Doe",
            "podUri": "http://luwjistik.io/pod.pdf"
        }
    ]
}

End-point: Get Order Statuses by Order Code

This endpoint allows users to retrieve the statuses of their order, both CEVA Logistics Status (Partner Update) & Client Mapped Status (Mapped Partner Update). THe query is done by order code instead of the id.

Response Object

Property Description Data Type Example
data List of data objects Array of objects -
â”” id Unique identifier for the entry String “b44b0178-c544-4cd5-805f-26946dcc5864”
â”” statusCode Status code String “10002”
â”” status Status description String “Pickup Requested”
â”” internalStatus Internal status description String “Pickup Requested”
â”” updatedAt Date and time of last update String (ISO 8601 format) “2023-11-20T08:24:16.731187+02:00”
â”” createdAt Date and time of creation String (ISO 8601 format) “2023-11-20T13:24:16.738594+02:00”
â”” podReceiverName Name of the Proof of Delivery receiver String “John” (Can be empty string)
â”” podUri URI for Proof of Delivery document String http://luwjistik.io/pod.pdf" (Can be empty)

Method: GET

{{BASE_URL}}/orders/:orderCode/statusByOrderCode

Response: 200

{
    "data": [
        {
            "id": "b44b0178-c544-4cd5-805f-26946dcc5864",
            "statusCode": "10002",
            "status": "Pickup Requested",
            "internalStatus": "Pickup Requested",
            "updatedAt": "2023-11-20T08:24:16.731187+02:00",
            "createdAt": "2023-11-20T13:24:16.738594+02:00",
            "podReceiverName": "",
            "podUri": ""
        },
        {
            "id": "8ac269f3-455c-4cd1-9f7d-f2243aba8096",
            "statusCode": "10001",
            "status": "Test Client Mapping",
            "internalStatus": "Order Information Received",
            "updatedAt": "2023-11-20T13:24:16.731186+02:00",
            "createdAt": "2023-11-20T13:24:16.738594+02:00",
            "podReceiverName": "John Doe",
            "podUri": "http://luwjistik.io/pod.pdf"
        }
    ]
}

End-point: Get Order Updates

This endpoint allows users to retrieve the updates of their order, both CEVA Logistics Status (Partner Update) & Client Mapped Status (Mapped Partner Update).

Property Description Data Type Example
data Array of shipment data Array Array of shipment objects (see Shipment Table below)

Shipment Table

Property Description Data Type Example
id ID of the shipment String “5c2b0136-2f72-11ee-be56-0242ac120002”
orderID ID of the order String “c157238e-af74-48c3-8f2b-3642c93ab7c9”
orderCode Order code String "”
partnerID ID of the partner String “5c2b0136-2f72-11ee-be56-0242ac120002”
partnerName Name of the partner String “Pos Laju”
serviceType Type of service String “LAST_MILE”
externalTrackingNumber External tracking number String “lorm123”
externalTracking Object containing external tracking data Object External Tracking Object (see below)

External Tracking Object

Property Description Data Type Example
id ID of the external tracking String “5c2b0136-2f72-11ee-be56-0242ac120002”
partnerUpdates Array of partner updates Array Array of partner update objects (see below)
mappedPartnerUpdates Array of mapped partner updates Array Array of mapped partner update objects (see below)

Partner Update Object

Property Description Data Type Example
id ID of the partner update String “5c2b0136-2f72-11ee-be56-0242ac120002”
status Status of the partner update String “Shipment Delivered”
updateTimestamp Timestamp of the partner update String “2023-06-06T07:19:00Z”
comments Comments about the partner update String "”
podReceiverName Name of the Proof of Delivery receiver String "”
podReceiverContact Contact of the Proof of Delivery receiver String ""
podURI URI of the Proof of Delivery String ""
rawPayload Raw payload of the partner update String ""

Mapped Partner Update Object

Property Description Data Type Example
status Status of the mapped partner update String “Successfully Delivered”
comments Comments about the mapped partner update String ""
updateTimestamp Timestamp of the mapped partner update String “2023-06-06T07:19:00Z”
comments Comments about the mapped partner update String ""

Method: GET

{{BASE_URL}}/orders/:orderID/updates

Response: 200

{
    "data": [
        {
            "id": "5c2b0136-2f72-11ee-be56-0242ac120002",
            "orderID": "5c2b0136-2f72-11ee-be56-0242ac120002",
            "orderCode": "ORD20230731",
            "partnerID": "5c2b0136-2f72-11ee-be56-0242ac120002",
            "partnerName": "SwiftPost",
            "serviceType": "LAST_MILE",
            "externalTrackingNumber": "SWF12345EXP20230731",
            "externalTracking": {
                "id": "5c2b0136-2f72-11ee-be56-0242ac120002",
                "partnerUpdates": [
                    {
                        "id": "5c2b0136-2f72-11ee-be56-0242ac120002",
                        "status": "Shipment Delivered",
                        "updateTimestamp": "2023-07-31T14:30:00Z",
                        "comments": "",
                        "podReceiverName": "John Doe",
                        "podReceiverContact": "+123456789",
                        "podURI": "https://example.com/pod/123",
                        "rawPayload": ""
                    },
                    {
                        "id": "5c2b0136-2f72-11ee-be56-0242ac120002",
                        "status": "Out for Delivery",
                        "updateTimestamp": "2023-07-31T08:45:00Z",
                        "comments": "Please deliver to front door.",
                        "podReceiverName": "Jane Smith",
                        "podReceiverContact": "+987654321",
                        "podURI": "https://example.com/pod/456",
                        "rawPayload": ""
                    },
                    {
                        "id": "5c2b0136-2f72-11ee-be56-0242ac120002",
                        "status": "Arrived at Local Hub",
                        "updateTimestamp": "2023-07-31T04:20:00Z",
                        "comments": "",
                        "podReceiverName": "",
                        "podReceiverContact": "",
                        "podURI": "",
                        "rawPayload": ""
                    }
                ],
                "mappedPartnerUpdates": [
                    {
                        "status": "Successfully Delivered :checkered_flag:",
                        "comments": "",
                        "updateTimestamp": "2023-07-31T14:30:00Z"
                    },
                    {
                        "status": "Out for Delivery",
                        "comments": "Please deliver to back door.",
                        "updateTimestamp": "2023-07-31T08:45:00Z"
                    },
                    {
                        "status": "Arrival at Local Distribution Center",
                        "comments": "",
                        "updateTimestamp": "2023-07-31T04:20:00Z"
                    }
                ]
            }
        },
        {
            "id": "7a9f4a16-7a44-49c1-92d2-67f566dc40c8",
            "orderID": "f4b699fc-9d45-4e69-aeea-cc0f868c6b37",
            "orderCode": "ORD20230731",
            "partnerID": "33d41f2a-c2cd-407f-80e4-0a4e90c61e1a",
            "partnerName": "FastCargo",
            "serviceType": "FREIGHT_FORWARDER",
            "externalTrackingNumber": "FC20230731001",
            "externalTracking": {
                "id": "9190bfb5-ccee-4711-82e2-34569a64ef11",
                "partnerUpdates": [
                    {
                        "id": "2b3d82af-b8f5-41e7-b9f5-4c46e7e1c946",
                        "status": "In Transit",
                        "updateTimestamp": "2023-07-31T11:00:00Z",
                        "comments": "",
                        "podReceiverName": "",
                        "podReceiverContact": "",
                        "podURI": "",
                        "rawPayload": ""
                    },
                    {
                        "id": "77a87b1d-1a45-4726-9b1e-85e39f1a3667",
                        "status": "Arrived at Destination Airport",
                        "updateTimestamp": "2023-07-31T05:40:00Z",
                        "comments": "",
                        "podReceiverName": "",
                        "podReceiverContact": "",
                        "podURI": "",
                        "rawPayload": ""
                    },
                    {
                        "id": "e68a2d71-34da-4776-95e0-50be5aa8500c",
                        "status": "Departed from Origin Airport",
                        "updateTimestamp": "2023-07-30T22:15:00Z",
                        "comments": "",
                        "podReceiverName": "",
                        "podReceiverContact": "",
                        "podURI": "",
                        "rawPayload": ""
                    }
                ],
                "mappedPartnerUpdates": [
                    {
                        "status": "In Transit",
                        "comments": "",
                        "updateTimestamp": "2023-07-31T11:00:00Z"
                    },
                    {
                        "status": "Arrival at Destination Airport",
                        "comments": "",
                        "updateTimestamp": "2023-07-31T05:40:00Z"
                    },
                    {
                        "status": "Departure from Origin Airport",
                        "comments": "",
                        "updateTimestamp": "2023-07-30T22:15:00Z"
                    }
                ]
            }
        },
        {
            "id": "c63a8e97-5ca2-43d3-b45b-d570159b29c6",
            "orderID": "4d39d12c-5114-4eb5-8b74-1706ef358cb3",
            "orderCode": "ORD20230731",
            "partnerID": "eefc09b8-74f5-427f-99f9-2d1583a389f2",
            "partnerName": "TransGlobal",
            "serviceType": "FIRST_MILE",
            "externalTrackingNumber": "TGOCEAN20230731002",
            "externalTracking": {
                "id": "2bf825b9-2b32-4f03-8354-06aa6eab73d0",
                "partnerUpdates": [
                    {
                        "id": "b72ad510-59f8-4537-bc3a-616db0e1c613",
                        "status": "Shipment Loaded onto Vessel",
                        "updateTimestamp": "2023-07-30T18:45:00Z",
                        "comments": "",
                        "podReceiverName": "",
                        "podReceiverContact": "",
                        "podURI": "",
                        "rawPayload": ""
                    },
                    {
                        "id": "651bb6f5-0a1a-426f-905f-798dedb524a3",
                        "status": "Departure from Port",
                        "updateTimestamp": "2023-07-30T12:30:00Z",
                        "comments": "",
                        "podReceiverName": "",
                        "podReceiverContact": "",
                        "podURI": "",
                        "rawPayload": ""
                    },
                    {
                        "id": "25b892eb-4b52-49b6-a8b1-b096b26f33ea",
                        "status": "Arrival at Destination Port",
                        "updateTimestamp": "2023-07-28T23:59:00Z",
                        "comments": "",
                        "podReceiverName": "",
                        "podReceiverContact": "",
                        "podURI": "",
                        "rawPayload": ""
                    }
                ],
                "mappedPartnerUpdates": [
                    {
                        "status": "Shipment Loaded onto Vessel",
                        "comments": "",
                        "updateTimestamp": "2023-07-30T18:45:00Z"
                    },
                    {
                        "status": "Departure from Port",
                        "comments": "",
                        "updateTimestamp": "2023-07-30T12:30:00Z"
                    },
                    {
                        "status": "Arrival at Destination Port",
                        "comments": "",
                        "updateTimestamp": "2023-07-28T23:59:00Z"
                    }
                ]
            }
        }
    ]
}

End-point: Upload Order Cross Border

Size limit: 10 orders per API-call

Method: POST

{{BASE_URL}}/orders/crossBorder

Request Parameters

Property Description Data Type Mandatory Example
orderCode Order code String Y “ORD123456”
consigneeName Consignee’s name String Y “Alice Johnson”
consigneeNumber Consignee’s contact number String Y “+1 (555) 123-4567”
consigneeEmail Consignee’s email String Y alice@example.com
consigneeAddress Consignee’s address String Y “123 Main Street”
consigneePostal Consignee’s postal code String Y “12345”
consigneeCity Consignee’s city String Y “New York”
consigneeCountry Consignee’s country String Y “US”
consigneeProvince Consignee’s province/state String Y “NY”
destinationPort Destination port String Y “NYC”
consigneeTaxId Consignee’s tax ID String N “ID12345”
length Length of the package in CM Integer Y 100
width Width of the package in CM Integer Y 50
height Height of the package in CM Integer Y 80
weight Weight of the package in KG Float Y 25
paymentType Payment type String(“prepaid” or “cod”) Y “prepaid”
codValue Cash on delivery value Float (null if paymentType “prepaid”) Yes if COD null
codCurrency Cash on delivery currency String (null if paymentType “prepaid”) Yes if COD “USD”
senderContactName Sender’s contact name String Y “John Smith”
senderContactNumber Sender’s contact number String Y “+1 (555) 987-6543”
senderCity Sender’s city String Y “Los Angeles”
senderCountry Sender’s country String Y “US”
senderProvince Sender’s province/state String Y “CA”
senderPort Sender’s port String Y “LAX”
senderPostal Sender’s postal code String Y “54321”
senderAddress Sender’s address String Y “456 Oak Avenue”
note Additional note Null N null
incoterm Incoterm String (“DDU”, “DDP”) Y “DDU”
items Array of items Array Y Array of item objects (see Item Table below)
pickupDate Pickup date in the format of DD/MM/YYYY String N 06/12/2024
serviceLevel service level string Y “ECONOMY”

Item Table

Property Description Data Type Mandatory Example
description Description of the item String N “Premium Quality Leather Backpack”
quantity Quantity of the item Integer Y 2
productCode Product code String N “SKU123456”
sku SKU of the item String N “PD-98765”
category Category of the item String Y “Fashion Accessories”
price Price of the item Float Y 79.99
currency Currency of the item String Y “USD”

Response object

Property Description Data Type Example
data collection of uploaded order code, tracking number, and id array of object see below
Property Description Data Type Example
id ID of the Uploaded Order , use this ID for merchant API Tracking UUID 24e4b796-5947-4312-b9c3-76f6c410b41f
trackingNumber Code that is used for tracking, use this code for Public Tracking Endpoint string ASDKRIID0914202300000002ID
customerOrderCode Order code that’s inputted by user string ORDER123

Body (raw)

[
    {
        "orderCode": "TESTOMSABC00001",
        "consigneeName": "Alice Johnson",
        "consigneeNumber": "+1 (555) 123-4567",
        "consigneeEmail": "alice@example.com",
        "consigneeAddress": "123 Main Street",
        "consigneePostal": "12345",
        "consigneeCity": "Shah ALam",
        "consigneeCountry": "MY",
        "consigneeProvince": "Selangor",
        "destinationPort": "KUL",
        "length": 100,
        "width": 50,
        "height": 80,
        "weight": 25,
        "paymentType": "prepaid",
        "codValue": null,
        "codCurrency": null,
        "senderContactName": "John Smith",
        "senderContactNumber": "+1 (555) 987-6543",
        "senderCity": "Singapore",
        "senderCountry": "SG",
        "senderProvince": "Singapore",
        "senderPort": "SIN",
        "senderPostal": "54321",
        "senderAddress": "456 Oak Avenue",
        "note": null,
        "incoterm": "DDP",
        "items": [
            {
                "description": "Premium Quality Leather Backpack",
                "quantity": 2,
                "productCode": "SKU123456",
                "sku": "PD-98765",
                "category": "Fashion Accessories",
                "price": 79.99,
                "currency": "USD"
            }
        ]
    }
]

Response: 200

{
	"data": [
		{
			"id": "4104a1de-9038-4d65-9a74-4cc1a45a48d5",
			"customerOrderCode": "TESTOMSABC00001",
			"trackingNumber": "RED001SIN1116202300000003KUL"
		}
	]
}

End-point: Upload Order Domestic

Batch size limit: 10 orders per API call

Method: POST

{{BASE_URL}}/orders/domestic

Request Parameters

Property Description Data Type Mandatory Example
orderCode Order code String Y “ORD20231234”
consigneeName Consignee’s name String Y “John Doe”
consigneeNumber Consignee’s contact number String Y “+1 (555) 123-4567”
consigneeAddress Consignee’s address String Y “456 Elm Street”
consigneePostal Consignee’s postal code String Y “98765”
consigneeCountry Consignee’s country String Y “US”
consigneeProvince Consignee’s province/state String Y “California”
consigneeCity Consignee’s city String Y “Los Angeles”
consigneeDistrict Consignee’s district String Y “Downtown”
consigneeEmail Consignee’s email String Y john.doe@example.com
length Length of the package in CM Float Y 15.0
width Width of the package in CM Float Y 20.0
height Height of the package in CM Float Y 10.0
weight Weight of the package in KG Float Y 5.0
paymentType Payment type String Y “prepaid”, “cod”
codValue Cash on delivery value Float (null if payment “prepaid”) Y if COD 1.5
codCurrency Cash on delivery currency String (null if payment “prepaid”) Y if COD “USD”
senderContactName Sender’s contact name String Y “Jane Smith”
senderContactNumber Sender’s contact number String Y “+1 (555) 987-6543”
senderPostal Sender’s postal code String Y “54321”
senderCountry Sender’s country String Y “US”
senderProvince Sender’s province/state String Y “New York”
senderCity Sender’s city String Y “New York City”
senderDistrict Sender’s district String N “Midtown”
senderAddress Sender’s address String Y “123 Oak Avenue”
note Additional note String N “Handle with care”
pickupDate pickup date String N “20/01/2024”
items Array of items Array Y Array of item objects (see Item Table below)
serviceLevel service level string Y “REGULAR”

Item Table

Property Description Data Type Mandatory Example
description Description of the item String N “Classic Leather Watch”
quantity Quantity of the item Integer Y 3
productCode Product code String N “PROD9876”
sku SKU of the item String N “SKU-123456”
category Category of the item String Y “Fashion & Accessories”
price Price of the item Float Y 99.99
currency Currency of the item String Y “USD”

Response object

Property Description Data Type Example
data collection of uploaded order code, tracking number, and id array of object see below
Property Description Data Type Example
id ID of the Uploaded Order , use this ID for merchant API Tracking UUID 24e4b796-5947-4312-b9c3-76f6c410b41f
trackingNumber Code that is used for tracking, use this code for Public Tracking Endpoint string ASDKRIID0914202300000002ID
customerOrderCode Order code that’s inputted by user string ORDER123

Body (raw)

[
    {
        "orderCode": "Luw20211101-501",
        "consigneeName": "Nam",
        "consigneeNumber": "+8490999878",
        "consigneeAddress": "Ho Chi Minh City",
        "consigneePostal": "10000.0",
        "consigneeCountry": "SG",
        "consigneeProvince": "Singapore",
        "consigneeCity": "Singapore",
        "consigneeDistrict": "Tanjong Pagar",
        "consigneeEmail": "smith@mailinator.com",
        "length": 10,
        "width": 50,
        "height": 40,
        "weight": 30,
        "paymentType": "prepaid",
        "codValue": null,
        "codCurrency": null,
        "senderContactName": "Oliver Nguyen",
        "senderContactNumber": "+84990993841",
        "senderPostal": "5753.0",
        "senderCountry": "SG",
        "senderProvince": "Singapore",
        "senderCity": "Singapore",
        "senderDistrict": null,
        "senderAddress": "Ho Chi Minh City",
        "note": null,
        "partnerCode": null,
        "items": [
            {
                "description": "Logitech MX2 Anywhere Bluetooth mouse",
                "quantity": 5,
                "productCode": "446.0",
                "sku": "PO-918242213418",
                "category": "Fashion & Accessories",
                "price": 65.5,
                "currency": "SGD"
            },
            {
                "description": "High Quality 1.6L Removable Water Tank 20Bar Semi-Automatic Espresso Coffee Machine With Milk Frother",
                "quantity": 2,
                "productCode": "558.0",
                "sku": "PO-918242213417",
                "category": "Fashion & Accessories",
                "price": 750,
                "currency": "SGD"
            }
        ]
    }
]

Response: 200

{
    "data": [
        {
            "id": "24e4b796-5947-4312-b9c3-76f6c410b41f",
            "customerOrderCode": "ORDER123",
            "trackingNumber": "ASDKRIID0914202300000002ID"
        }
    ]
}

Collection: Event Subscriptions

End-point: Create Event Subscription

This endpoint will register url and its event type

Method: POST

URL: {{BASE_URL}}/event-subscriptions

Request Parameters

Parameter Description Data Type Mandatory Example
url The endpoint to receive the events string Y https://google.com
eventType The type of event to subscribe to string Y CUSTOMER_STATUS

Body (raw)

{
    "url": "https://google.com",
    "eventType": "CUSTOMER_STATUS"
}

Response

Status Code Description
200 Success, no response body

End-point: Get List of Event Subscription

This endpoint will retrieves event subscriptions

Method: GET

URL: {{BASE_URL}}/event-subscriptions

Request Parameters

Parameter Description Data Type Mandatory Example
page Page number to retrieve integer Y 1
perPage Number of items to retrieve per page integer Y 100

Response

Field Description Data Type Example
page The current page number integer 1
totalPage The total number of pages available integer 1
totalCount The total number of event subscriptions integer 3
data List of event subscriptions array See below for details

Data Array Fields

Field Description Data Type Example
id Unique identifier for the subscription string dcf0fb0c-2300-44a7-8ccf-a2b3b1627a44
clientId Unique identifier for the client string 0c48140c-f3e2-4bc4-a629-2faeed2a69fc
customerId Unique identifier for the customer string dd6facd9-dc6a-4d0f-ae3d-08c058958d8e
eventType Type of event the subscription is for string CUSTOMER_STATUS
endpoint URL where the event is sent string https://google.com
appKey Unique application key associated with the subscription string 55e37c03-177d-4f10-87dd-1097a5ac98d0
createdAt Timestamp of when the subscription was created string 2024-08-14T09:38:14.862219Z
updatedAt Timestamp of the last update to the subscription string 2024-08-14T09:38:14.862219Z

Example Response (raw)

{
    "page": 1,
    "totalPage": 1,
    "totalCount": 3,
    "data": [
        {
            "id": "dcf0fb0c-2300-44a7-8ccf-a2b3b1627a44",
            "clientId": "0c48140c-f3e2-4bc4-a629-2faeed2a69fc",
            "customerId": "dd6facd9-dc6a-4d0f-ae3d-08c058958d8e",
            "eventType": "",
            "endpoint": "",
            "appKey": "55e37c03-177d-4f10-87dd-1097a5ac98d0",
            "createdAt": "2024-08-14T09:38:14.862219Z",
            "updatedAt": "2024-08-14T09:38:14.862219Z"
        },
        {
            "id": "67125d4c-d5b1-4c3e-bd9a-018ca0ad4dc5",
            "clientId": "0c48140c-f3e2-4bc4-a629-2faeed2a69fc",
            "customerId": "dd6facd9-dc6a-4d0f-ae3d-08c058958d8e",
            "eventType": "CUSTOMER_STATUS",
            "endpoint": "https://google.com",
            "appKey": "62398fc6-7682-49b7-aefc-3c6eb84503c7",
            "createdAt": "2024-08-14T09:21:57.661728Z",
            "updatedAt": "2024-08-14T09:21:57.661728Z"
        },
        {
            "id": "1c0b0e7b-361f-4c6c-aab6-978bbb28f43f",
            "clientId": "0c48140c-f3e2-4bc4-a629-2faeed2a69fc",
            "customerId": "dd6facd9-dc6a-4d0f-ae3d-08c058958d8e",
            "eventType": "CUSTOMER_STATUS",
            "endpoint": "https://webhook.site/d5e67bb2-5272-40b9-9b09-24744cb32326",
            "appKey": "e14b3f3f-35c7-4493-a5ff-52d5b87c9098",
            "createdAt": "2024-02-15T09:58:58.310983Z",
            "updatedAt": "2024-02-15T09:58:58.310983Z"
        }
    ]
}

End-point: Delete Event Subscription

This endpoint will delete the event subscription

Method: DELETE

URL: {{BASE_URL}}/event-subscriptions/:eventSubscriptionID

Path Parameters

Parameter Description Data Type Mandatory Example
eventSubscriptionID The unique ID of the event subscription to delete string Y 477cb4bb-3cca-4e7b-8d5a-5fcdb34f6c5d

Response

The API call returns a 200 OK response, indicating that the event subscription was successfully deleted. There is no response body.

Collection: Service Level Mapping

End-point: Get merchant service level mappings

This endpoint retrieves service level mappings for a given shipment type, origin country, and destination country.

Request

Method: GET

URL: {{BASE_URL}}/service-level-mappings

Query Parameters:

  • shipmentType (string, required): The type of shipment, either CROSSBORDER or DOMESTIC
  • originCountry (string): The origin country code (e.g. SG), this param is required when the shipment type is CROSSBORDER
  • destinationCountry (string): The destination country code (e.g. AZ), this param is required when the shipment type is CROSSBORDER

Response: 200

The response is in JSON format and follows the schema below:

{
    "data": [
        {
            "serviceLevel": "ECONOMY",
            "customName": "Basic",
            "shipmentType": "CROSSBORDER"
        },
        {
            "serviceLevel": "EXPRESS",
            "customName": "Premium",
            "shipmentType": "CROSSBORDER"
        }
    ]
}

The response body contains an array of objects, where each object represents a service level mapping with the following properties:

  • serviceLevel (string): The service level associated with the mapping.
  • customName (string): A custom name for the mapping.
  • shipmentType (string): The type of shipment associated with the mapping.

Webhook

In addition to the endpoints above that can be used to pull the status updates on an order, we also provide the ability to subscribe to a webhook when certain events happens on our systems.

To subscribe to be notified to when an event happens, go to the Profile -> Settings page of the portal, and find the Event Subscriptions section.

event subscriptions

On your profile page, you will find a section for Event Subscriptions where you can see your existing subscription and add new ones. To create a new subscription, click on the “Assign New Subscription” button.

new subscription

Enter the webhook endpoint to handle the subscription and select the type of the event to subscribe to, and click “Subscribe” to create the subscription.

From now on, when an event happens that match the subscribed event type, a notification will be sent to the provided URL endpoint. Refer to the section below on how to process the information that is sent with the notification.

Handling Webhook

The system will send a POST request to the registered endpoint with a JSON payload containing the following information:

{
  "eventType": "TYPE OF EVENT",
  "eventPayload": { // event-type specific information // }
}

The endpoint should return a 200 status code to signify a successful response. We highly recommend to return a response as soon as possible and offload the heavier processing to a background process. The header of the request will include a clientId header that correspond to the subscription key that you have created on the client portal. This can be used to verify that the request is coming from Luwjistik. If the endpoint does not return a 200 status code in time, the system will retry up-to 5 times with exponential backoff.

Currently there are the following event types that can be subscribed to:

  • CUSTOMER_STATUS. Happens when a status update is created on an order.

Customer Status

The event will be fired when an update is created on an order your account.

{
  "eventType": "CUSTOMER_STATUS",
  "eventPayload": {
    "orderCode": "ABC123",
    "update": {
       "status": "Pickup Scheduled",
       "statusCode": "10003",
       "updateTimestamp": "2020-12-09T16:09:53+00:00",
       "location": "Warehouse X",
       "comments": ""
    },
    "serviceType": "LAST_MILE"
  }
}

eof