SPL Documentation - LIVE ## Sections • [Get Started](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/get-started-1.md): This Application Programming Interface (API) document is aimed at helping you connect your software & online services to SPL’s shipping & tracking platform. By using these APIs, you will be able to get the information that you need to get started with the integration. • [Authentication](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/authentication-copy-1.md): To ensure we maintain high standards of security and provide additional protection for users and accounts, our API services use a combination of technology and software protocols that impose API authentication. Users will require to get a bearer key token that requires frequent renewal. • [Get Tokens](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/authentication-copy-1/get-tokens-oms.md): This API is used to authenticate the client and generate an access token required to access the available APIs. The token must be included in subsequent API requests for authentication. Token Lifetime: The generated access token is valid for One Hour from the time of issuance. Once expired, a new token must be generated. Refresh Token: Refresh Token isn't available , you have to manually generetae a new token each time it expires. Concurrency : Requesting a new token invalidates the previous one. • [Shipments](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1.md): These APIs allow authorized users to: Create a shipment or multiple on SPL's platform and t rack shipments by AWB Number or by Reference Number. • [Create Shipment](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/create-shipment-oms.md): Prerequisites : Before creating a shipment, ensure that you have an active account , a valid Customer Code , a registered Branch Code , and a registered Branch Address Code . These details are required to successfully create a shipment and can be obtained through the relevant onboarding or account setup process. Idempotency : An identical repeated request creates a duplicate shipment under a new Waybill number, idempotency is only applied on the AWB number , but not on reference numbers. • [Create Shipment - Pick Up](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/create-shipment-pick-up.md): Prerequisites : Before creating a shipment, ensure that you have an active account , a valid Customer Code , a registered Branch Code , and a registered Branch Address Code . These details are required to successfully create a shipment and can be obtained through the relevant onboarding or account setup process. Idempotency : An identical repeated request creates a duplicate shipment under a new Waybill number, idempotency is only applied on the AWB number , but not on reference numbers. • [Create Shipment - Drop Off](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/create-shipment-drop-off.md): Prerequisites : Before creating a shipment, ensure that you have an active account , a valid Customer Code , a registered Branch Code , and a registered Branch Address Code . These details are required to successfully create a shipment and can be obtained through the relevant onboarding or account setup process. Idempotency : An identical repeated request creates a duplicate shipment under a new Waybill number, idempotency is only applied on the AWB number , but not on reference numbers. Drop-Off (Nearest SPL Office or Parcel Location): • [Shipment Tracking](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/shipment-tracking.md) • [Tracking Events](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/shipment-tracking/tracking-events.md): This section provides a comprehensive list of tracking events that may be returned by the Tracking API. Each event consists of an event code and event description representing a specific shipment status, operational milestone, or exception condition encountered during the shipment lifecycle. The events have been categorized to facilitate easier integration, status mapping, and business process implementation. Shipment Processing & Transit Title Description Tracking Event Code Tracking event Name GN019 New Shipment Created GN007 Shipment Inbound Scanned GN023 Shipment Arrived GN030 Shipment Forwarded GN046 Out of sorting centre GN065 Under Distribution GN074 Handover to supervisor 2. Delivery Events Title Description Tracking Event Code Tracking event Name GN011 Shipment out for delivery GN012 Shipment Delivered 3. Pickup & Collection Events Title Description Tracking Event Code Tracking event Name GN033 Held for Pickup GN184 Shipment is available for customer pickup GN192 Your shipment is ready for pickup 4. Customs & Clearance Events Title Description Tracking Event Code Tracking event Name GN008 Shipment Under Clearance GN100 ReleaseShipment GN124 Customs Clearance end 5. Delivery Exceptions Title Description Tracking Event Code Tracking event Name GN013 Shipment delivery exception GNS003 Courier route overload GNS010 Pending Better Address Details GNS034 Incorrect address - address not found GNS060 The customer did not answer the call GNS061 The customer's phone line is busy GNS062 The customer declined the call GNS084 Consignee requested future delivery GNS085 Phone number is incorrect GNS143 Address Correction GNS037 Refused - due 'other' GNS043 Reschedule to another date 6. Returns & Cancellations Title Description Tracking Event Code Tracking event Name GN031 Returned to Shipper GN089 Return to Office GN101 ShipmentCancelation 7. Notifications & Customer Communication Title Description Tracking Event Code Tracking event Name GN015 Text notification sent GNS063 Customer call connected 8. Shipment Updates & Modifications Title Description Tracking Event Code Tracking event Name GN104 Shipment Reweight GN105 Shipment Address Updated 9. Critical Events Title Description Tracking Event Code Tracking event Name GN018 Shipment Lost • [Bulk Shipment Tracking](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/bulk-shipment-tracking.md) • [Label print](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/label-print.md) • [Shipment Cancelation](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/shipments-copy-1/shipment-tracking-ttba-shhnh-copy.md) • [Webhook](https://portal.developers.gnteq.app/partners-platform-api-documentation-live-new-en/webhook.md): to setup the webhook please note the following: Authorization: The webhook events will be sent using either Basic Authorization or X-API-Key, with a set of credentials of your choosing. Payload: Payload structure is listed bellow. Kindly ensure that your endpoint can accept this structure . Events: A list of the most commonly sent events is listed under the “Tacking events” Tab for your reference and mapping. Webhook Endpoint : You need to provide us with your Webhook Endpoint so we can configure it to your account. NOTE : The API needs to return a structured response in order for us to confirm whether the update was processed successfully. The expected response model is: public class DynamicTrackingShipmentResponse Plain text { public bool IsSuccess { get; set; } public string? Exception { get; set; } } { public bool IsSuccess { get; set; } public string? Exception { get; set; } } public class DynamicTrackingShipmentResponse Without this response, our system cannot validate if the webhook call was accepted or failed. Kindly ensure the response is implemented accordingly. ————————————————-———————————————————————————————————————————————————————————————— Webhook Payload Kindly ensure that your endpoint can accept this structure . Please note that our Webhook Payload is in Camel Case , and it's not Case Sensitive, kindly ensure that your Webhook is not case sensitive and can accept any format (Camel case or Pascal Case) , also keep it flexible in case any new fields were added from our side. Plain text { "airwaybill": "***************", "eventCode": "GN012", "event": "Shipment Delivered", "eventName": "Shipment Delivered", "supplier": null, "userName": "admin", "notes": null, "actionDate": "2024-10-29T17:30:00+00:00", "eventCountry": "AMMAN", "eventCity": "AMMAN", "eventSubCode": null, "eventSubName": null } { "airwaybill": "***************", "eventCode": "GN012", "event": "Shipment Delivered", "eventName": "Shipment Delivered", "supplier": null, "userName": "admin", "notes": null, "actionDate": "2024-10-29T17:30:00+00:00", "eventCountry": "AMMAN", "eventCity": "AMMAN", "eventSubCode": null, "eventSubName": null }