Download OpenAPI specification:Download
Gotsurge Partnership API allows you to integrate our delivery services into your business workflow.
GotSurge is building an open & inclusive digital logistics platform to modernise supply logistics. Our objective is to enable end-to-end tracking & visibility of ship supplies logistics by consolidating the scattered delivery-relevant data onto a single dashboard by integrating with ports, ship management software, trucking data, and ship positioning information. More about us.
Gotsurge provides a collection of essential, lightweight and flexible endpoints allowing you to automate your fulfilment logistics workflow quickly and easily. It normally takes a developer for a week or two to complete an integration ready for our Go-Live Process.
For registering to our Partner list, please contact us at hello@gotsurge.co.
You can communicate with GotSurge API by sending HTTP(S) request. The request consists of Base URL and HTTP(S) Header. The Base URL specifies the resource to which the request is applied. The HTTP(S) Header carries the data type of the request, data type of the response, and the authentication information. GotSurge then sends a response back in JSON format.
GotSurge Partnership API use the OAuth 2.0 protocol for authentication and authorization.
OAuth 2.0 is the industry-standard protocol for authorization. OAuth 2.0 focuses on client developer simplicity while providing specific authorization flows for web applications, desktop applications, mobile phones, and living room devices. This specification and its extensions are being developed within the IETF OAuth Working Group.
This page gives an overview of the OAuth 2.0 authorization scenarios that GotSurge supports, and provides links to more detailed content.
To begin, obtain OAuth 2.0 client credentials from the GotSurge Team (hello@gotsurge.co). You will get client_key and secret_key to start the authorization proccess.
For more details, please see:
All applications follow a basic pattern when accessing a GotSurge API using OAuth 2.0.
At a high level, you follow five steps:
You can obtain OAuth 2.0 credentials from the GotSurge Team (hello@gotsurge.co). You will get client_key and secret_key and keep this information for now.
Before your application can access private data using a GotSurge API, it must obtain an access token that grants access to that API. A single access token can grant varying degrees of access to multiple APIs. A variable parameter called state can you used to controls which return of the authentication process belongs to.
To make this request, your application need to redirect the end-customer to gotsurge env with this parameters:
Params | Type | Description |
---|---|---|
client_key | Mandatory | your client key |
redirect_url | Mandatory | your page that will be used for the user to redirect after complete the Oauth process |
state | Optional | your unique id or reference id |
Environment | URL |
---|---|
Sandbox | staging.gotsurge.co |
Production | app.gotsurge.co |
Use those params to redirect to user to the GotSurge authentication page:
https://<environment_url>/oauth2/auth?
client_key=<your_client_key>
redirect_url=<your_redirect_url>
state=<your_state>
The requests require an authentication step where the user logs in with their GotSurge account. After logging in, the user is asked whether they are willing to grant one or more permissions that your application is requesting. This process is called user consent.
If the user grants the permission, the GotSurge Authorization Server will redirect back to your application with code and state. If the user does not grant the permission, the server returns an error.
After an application obtains the code, you can exchange it with access token via this exchange token API documentation.
After an application obtains an access token, you can sends the token to a GotSurge API in an HTTP Authorization request header.
Access tokens are valid only for the set of operations and resources described in this documentation that need to have a token request.
Access tokens have limited lifetimes. If your application needs access to a GotSurge API beyond the lifetime of a single access token, it can obtain a refresh token. A refresh token allows your application to obtain new access tokens.
For an interactive demonstration of using OAuth 2.0 with GotSurge, experiment with the OAuth 2.0 Playground.
Sandbox Demo: Demo playground link.
By the end of this demo, you will get the bearer_token
that you can use for create tasks.
Since the bearer token will expire in 30 days, you will also get
refresh_token
to refresh your token later.
Platform Partners are solution for platform businesses organization that work with third-party partners. You can onboard and create users, organizations behalf of them. As a platform partners you are extending your users from the GotSurge's users.
GotSurge provide single JWT to authenticate Platform Partners and GotSurge.
During the Session Single Sign On, when the authentication is valid, we will inject session_id
to your deeplink receive session page.
This endpoint allows platform partners to exchange a this time-limited session_id
for a bearer_token
and refresh_token
.
The bearer_token
is then used for subsequent API requests, same reference to OAuth2 access token and refresh token works.
User Login with input email and password
Send request to GotSurge to validate the user, once it's successful, GotSurge server will give short-lived session_id
When user is validated and session_id
is received, we inject it using window.postMessage()
with session_id
to Platform Partner's deeplink /receive-session
URL
Platform Partner hit the GotSurge service to exchange session_id
with the access token
When the session_id
is valid, we will return the access / bearer token and Platform Partners can use that for the future request with same standard OAuth2 behavior
Inform to GotSurge team (hello@gotsurge.co) to setup deeplink url redirection page after session sign in successful
session-receive
deeplink page urlClick here to see example snippet logic of /receive-session
page url
Detail Process |
Description |
---|---|
Oauth2.0 Process- Redirect to GS - User Consent - Exchange Token |
The mandatory process to obtain an access / bearer token from the GotSurge Authorization Server. See the Basic Oauth2 steps for more details. |
Task Creation | Create & Place the order. Your order will be automatically being broadcasted to drivers and is pending for response. See the task creation api documentation for more details. |
Dotted lines in the following diagram indicates possible status transition.
GS Status |
Description |
---|---|
broadcasting |
Order that created and placed by sender will be automatically being broadcasted to drivers and is pending for response. |
cancelled |
Order is cancelled by Merchant or Operator. This can transition from pending_broadcast or broadcasting . |
expired |
Order is expired by the system due some rules: - Squad - 30 minutes before pickup end time- Standard - Pickup end time or max broadcast time- Marine - No expired for now |
accepted |
Order has been confirmed and pickup will be as scheduled. |
pending_pickup |
Driver has accepted order and is on the way to pickup location. This can transition from accepted . |
pickup_arriving |
Driver is nearby pickup location and is attempting order takeover. This can transition from pending_pickup . |
unsuccessful_pickup |
Driver has attempted to pickup the order but has failed to takeover the parcel from sender. This can transition from pickup_arriving . |
pending_delivery |
Driver has picked up order and is on the way to delivery location. This can transition from pickup_arriving . |
delivery_arriving |
Driver is nearby delivery location and is attempting order handover. This can transition from pending_delivery . |
unsuccessful_delivery |
Driver has attempted to pickup the order but has failed to takeover the parcel from sender. This can transition from delivery_arriving . |
complete |
Order Completed This can transition from delivery_arriving . |
You can use the your client_key and secret_key to get detail of partner information.
SIGNATURE is in lowercase hex (base 64) encoding.
For detail signature, please ask hello@gotsurge.co
signature required | string Signature key of the partner to be read |
{- "id": "string",
- "client_key": "string",
- "secret_key": "string",
- "webhook_url": "string",
- "name": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_by": "string",
- "updated_at": "2019-08-24T14:15:22Z"
}
To get the Bearer Token
that can be used to access task sections, you need to sent your client_key, secret_key and code that your received from user authentication process.
client_key required | string partner client key |
secret_key required | string partner secret key |
code required | string user authentication code |
{- "client_key": "string",
- "secret_key": "string",
- "code": "string"
}
{- "bearer_token": "string",
- "refresh_token": "string",
- "server_time": "2019-08-24T14:15:22Z"
}
To get newer Bearer Token
you can use client_key and refresh_token that you get from user authentication process.
client_key required | string partner client key |
refresh_token required | string refresh token from authentication process |
{- "client_key": "string",
- "refresh_token": "string"
}
{- "bearer_token": "string"
}
Order API is intended for performing order task creation & broadcasting it to GotSurge Driver-Partner, depending on the broadcast & vehicle preference method selected.
You can create, view and cancel a transactions.
We named order as task and we provide multiple order/task creation up to 20 orders at the time.
All tasks created will be mark status as Broadcasting: Order is placed and broadcast to awaiting to be accepted by Driver.
Please be note that your order will be broadcasted directly to our driver-partner!
Attributes | Validation |
---|---|
from_time_window.start_time_utc | - before or equal to from_time_window.end_time_utcThe pickup start time must be earlier than the end time |
from_time_window.end_time_utc | - before or equal to to_time_window.start_time_utcThe pickup time must be earlier than the delivery time - before or equal to today's date-time The pickup start time must be earlier than the end time |
to_time_window.start_time_utc | - before or equal to to_time_window.end_time_utcThe pickup time must be earlier than the delivery time |
price | - minimum price start from SGD $2.00 (Format: 200000)Enter a minimum price from SGD 2.00 (Format: 200000) |
Array of objects (task_post_request) |
{- "tasks": [
- {
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "broadcast_preference": "marine",
- "service_type": "truck",
- "vehicle_preference": "lorry_40ft",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "xxxx-xxx-xxxx",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "1234567",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "pickup_note_to_driver": "Please pickup at 2pm",
- "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "xxxx-xxx-xxxx",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "1234567",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "delivery_note_to_driver": "Meet at the lobby",
- "from_location_type": "land",
- "to_location_type": "land",
- "cargo_details": [
- {
- "name": "cold_bin",
- "quantity": 1,
- "sku": "BXSA1234",
- "weight": 0.67,
- "remarks": "Custom-sized refrigerated container for perishable goods",
- "has_hazard_mat": true,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}
}
], - "cargo_net_quantity": 4,
- "officer_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309"
}, - "epod": {
- "recipient_email": "test@example.com"
}
}
]
}
{- "tasks": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "invoice_number": "INV0012XXXXX01",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "distance_in_meters": 7357,
- "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "is_urgent": true,
- "price": 120000,
- "currency": "SGD",
- "items": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "quantity_unit": "Pallet",
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}, - "weight_unit": "kg",
- "volume": 1000,
- "volume_unit": "cm3"
}
], - "cargo_net_quantity": 4,
- "task_creation_group": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "broadcast_preference": "squad",
- "client_time_utc": "2019-08-24T14:15:22Z",
- "client_timezone": "Asia/Singapore",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "org_transporter": {
- "id": "string",
- "name": "string",
- "org_driver": {
- "id": "string",
- "name": "string",
- "vehicle_plate_number": "string"
}
}, - "driver": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "John Doe",
- "vehicle_plate_number": "string"
}, - "current_status": "pending_broadcast",
- "statuses": [
- {
- "status": "string",
- "set_at_timezone": "string",
- "set_at_utc": "2019-08-24T14:15:22Z",
- "actual_contact_name": "string",
- "remarks": "string",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "custom_info": [
- {
- "question": "Why was the delivery failed?",
- "answer": "Customer not present"
}
]
}
], - "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "platform_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "vehicle_preference": "ltl",
- "vehicle_emissions_type": "ev",
- "vehicle_emissions": {
- "ice_fuel_consumption_rate": 0,
- "ice_co2_emissions_factor": 0,
- "ev_power_consumption_rate": 0,
- "ev_co2_emissions_factor": 0,
- "ice_carbon_emissions": 0,
- "ev_carbon_emissions": 0,
- "ice_carbon_emissions_per_km": 0,
- "ev_carbon_emissions_per_km": 0,
- "total_reductions_percent": 0
}, - "updated_at": "2019-08-24T14:15:22Z",
- "epod": {
- "recipient_email": "test@example.com"
}
}
], - "server_time": "2019-08-24T14:15:22Z"
}
You can view the details for an existing task using this endpoint.
taskID required | string task identifier |
{- "server_time": "2019-08-24T14:15:22Z",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "invoice_number": "INV0012XXXXX01",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "distance_in_meters": 7357,
- "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "is_urgent": true,
- "price": 120000,
- "currency": "SGD",
- "items": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "quantity_unit": "Pallet",
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}, - "weight_unit": "kg",
- "volume": 1000,
- "volume_unit": "cm3"
}
], - "cargo_net_quantity": 4,
- "task_creation_group": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "broadcast_preference": "squad",
- "client_time_utc": "2019-08-24T14:15:22Z",
- "client_timezone": "Asia/Singapore",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "org_transporter": {
- "id": "string",
- "name": "string",
- "org_driver": {
- "id": "string",
- "name": "string",
- "vehicle_plate_number": "string"
}
}, - "driver": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "John Doe",
- "vehicle_plate_number": "string"
}, - "current_status": "pending_broadcast",
- "statuses": [
- {
- "status": "string",
- "set_at_timezone": "string",
- "set_at_utc": "2019-08-24T14:15:22Z",
- "actual_contact_name": "string",
- "remarks": "string",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "custom_info": [
- {
- "question": "Why was the delivery failed?",
- "answer": "Customer not present"
}
]
}
], - "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "platform_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "vehicle_preference": "ltl",
- "vehicle_emissions_type": "ev",
- "vehicle_emissions": {
- "ice_fuel_consumption_rate": 0,
- "ice_co2_emissions_factor": 0,
- "ev_power_consumption_rate": 0,
- "ev_co2_emissions_factor": 0,
- "ice_carbon_emissions": 0,
- "ev_carbon_emissions": 0,
- "ice_carbon_emissions_per_km": 0,
- "ev_carbon_emissions_per_km": 0,
- "total_reductions_percent": 0
}, - "updated_at": "2019-08-24T14:15:22Z",
- "epod": {
- "recipient_email": "test@example.com"
}
}
You can cancel an existing task using this endpoint.
Note: You can only cancel the task that still in broadcasting
's status. Once the task pickup or being delivered by our driver-partner, it cannot be cancelled.
reason required | string Reason to cancel the task |
{- "reason": "Wrong information"
}
{- "message": "Successfully cancel the task"
}
Contains a collection of price related APIs
You can get the price recommendation for order creation
You can get price recommendation for 1 pickup location by using this API. It Will return an object containing the fee amount, currency, and distance based on information provided.
Note: First array of Stops
is the pickup location. If you have multiple delivery location, you can add another stops below the second array.
"stops": [ { ... }, // pickup location { ... }, // delivery location { ... } // another delivery location (multiple delivery) ]
You can add multiple delivery location up to 10 locations. For more than 10 locations, we will only calculate based on the 10's farthest delivery location.
service_type | string Enum: "motorcycle" "car" "mpv" "van_1.7m" "van_2.4m" "lorry_10ft" "lorry_14ft" "lorry_24ft" "lorry_40ft" |
Array of objects (stop) |
{- "service_type": "car",
- "stops": [
- {
- "location": {
- "lat": 1.33254387129336,
- "lng": 103.78762276165
}, - "addresses": {
- "en_SG": {
- "display_string": "31 wilby road wilby bukit timah singapore 276303",
- "market": "SG_SIN"
}
}
}, - {
- "location": {
- "lat": 1.38524391715407,
- "lng": 103.721963061312
}, - "addresses": {
- "en_SG": {
- "display_string": "71 jalan lekar wan hu fish farm singapore 698950",
- "market": "SG_SIN"
}
}
}
]
}
{- "average_fee": 2000000,
- "code": "success",
- "distance": {
- "text": "14.9 km",
- "value": 14876
}, - "total_fee": 2000000,
- "total_fee_currency": "SGD",
- "total_waypoint": 1
}
GotSurge can send webhook events that notify your other applications upon status triggers in GotSurge. This is useful when a two way integration is required, as the webhook will provide information on the change that has happened in GotSurge
Contact the GotSurge team at hello@gotsurge.co to register your webhook URL with your account.
When events occur, GotSurge will send the event object via HTTP POST request to the webhook URL. To acknowledge receipt of a webhook:
When status of task events changed, GotSurge will send the event object via HTTP POST request to the webhook URL.
Please read webhook rule first in this link.
For the list of possible statuses and status transitions, please follow this diagram.
Do note, webhooks events will be posted to your webhook API, you cannot POST to our endpoint to get webhook events! Current display is constrained by Redocly limitations.
type | string Event used for the webhook. |
model_name | string Model used for the webhook. |
object (webhook_task_post_data_payload) | |
object (webhook_task_post_update_payload) | |
timestamp | string <date-time> server date time |
{- "type": "update",
- "model_name": "Task",
- "data": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "driver": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "John Doe",
- "vehicle_plate_number": "string"
}
}, - "updates": {
- "status": [
- "string"
], - "status_updated_at": [
- "2019-08-24T14:15:22Z"
]
}, - "timestamp": "2019-08-24T14:15:22Z"
}
Platform Partners are solution for platform businesses organization that work with third-party partners. You can onboard and create users, organizations behalf of them.
During the Session Single Sign On, when the authentication is valid, we will inject session_id
to your deeplink receive session page.
This endpoint allows platform partners to exchange a this time-limited session_id
for a bearer_token
and refresh_token
.
The bearer_token
is then used for subsequent API requests, same reference to OAuth2 access token and refresh token works.
session_id | string |
{- "session_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
{- "bearer_token": "string",
- "refresh_token": "string",
- "user": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "email": "user@example.com",
- "name": "John Doe",
- "roles": [
- "SysAdmin"
], - "org_id": "VersaFleet"
}
}
Platform partners can create a new organization behalf of theirs.
business_name | string |
{- "business_name": "ABC Merchant"
}
{- "organization": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "business_name": "string",
- "platform_id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}
List partners organizations created by platform partners. Only Platform Partners Merchant is authorized.
page | integer <int64> >= 1 Default: 1 |
per_page | integer <int64> >= 1 Default: 200 |
{- "meta": {
- "page": 1,
- "per_page": 200
}, - "organizations": [ ]
}
The ID will be used as case sensitive and exact match filter of organization ID. Platform Partners can't get organization detail outside their managed organization
org_id required | string ID of the organization to be read |
{- "organization": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "business_name": "string",
- "platform_id": "string",
- "created_at": "2019-08-24T14:15:22Z",
- "updated_at": "2019-08-24T14:15:22Z"
}
}
Platform partners can create a new user by invitation to organization behalf of theirs. Only Platform Partner's OrgAdmin is authorized.
object |
{- "user": {
- "email": "example@email.com",
- "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "role_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
{- "message": "string"
}
Create a task from platform partners to associated organizations or own and broadcast. Only Platform Partner's OrgAdmin is authorized.
Array of objects |
{- "tasks": [
- {
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "broadcast_preference": "all",
- "service_type": "ftl",
- "vehicle_preference": "motorcycle",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "from_location_type": "land",
- "to_location_type": "land",
- "officer_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309"
}, - "items": [
- {
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}
}
], - "cargo_details": [
- {
- "name": "cold_bin",
- "quantity": 1,
- "sku": "X2BZ-01X",
- "weight": 0.67,
- "remarks": "Custom-sized refrigerated container for perishable goods",
- "has_hazard_mat": true,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}
}
], - "cargo_net_quantity": 4,
- "price": 1500000,
- "currency": "SGD",
- "vehicle_emissions_type": "ev",
- "epod": {
- "recipient_email": "test@example.com"
}, - "org_id": "string"
}
]
}
{- "total_tasks": 1,
- "tasks": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "invoice_number": "INV0012XXXXX01",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "distance_in_meters": 7357,
- "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "is_urgent": true,
- "price": 120000,
- "currency": "SGD",
- "items": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "quantity_unit": "Pallet",
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}, - "weight_unit": "kg",
- "volume": 1000,
- "volume_unit": "cm3"
}
], - "cargo_net_quantity": 4,
- "task_creation_group": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "broadcast_preference": "squad",
- "client_time_utc": "2019-08-24T14:15:22Z",
- "client_timezone": "Asia/Singapore",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "org_transporter": {
- "id": "string",
- "name": "string",
- "org_driver": {
- "id": "string",
- "name": "string",
- "vehicle_plate_number": "string"
}
}, - "driver": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "John Doe",
- "vehicle_plate_number": "string"
}, - "current_status": "pending_broadcast",
- "statuses": [
- {
- "status": "string",
- "set_at_timezone": "string",
- "set_at_utc": "2019-08-24T14:15:22Z",
- "actual_contact_name": "string",
- "remarks": "string",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "custom_info": [
- {
- "question": "Why was the delivery failed?",
- "answer": "Customer not present"
}
]
}
], - "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "platform_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "vehicle_preference": "ltl",
- "vehicle_emissions_type": "ev",
- "vehicle_emissions": {
- "ice_fuel_consumption_rate": 0,
- "ice_co2_emissions_factor": 0,
- "ev_power_consumption_rate": 0,
- "ev_co2_emissions_factor": 0,
- "ice_carbon_emissions": 0,
- "ev_carbon_emissions": 0,
- "ice_carbon_emissions_per_km": 0,
- "ev_carbon_emissions_per_km": 0,
- "total_reductions_percent": 0
}, - "updated_at": "2019-08-24T14:15:22Z",
- "epod": {
- "recipient_email": "test@example.com"
}
}
], - "server_time": "2019-08-24T14:15:22Z"
}
Read tasks from platform partner's associated organizations. Only Platform Partner's OrgAdmin is authorized.
page | integer <int64> >= 1 Default: 1 |
per_page | integer <int64> >= 1 Default: 200 |
order | string Default: "asc" Example: order=desc |
{- "meta": {
- "page": 0,
- "per_page": 0
}, - "tasks": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "invoice_number": "INV0012XXXXX01",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "distance_in_meters": 7357,
- "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "is_urgent": true,
- "price": 120000,
- "currency": "SGD",
- "items": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "quantity_unit": "Pallet",
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}, - "weight_unit": "kg",
- "volume": 1000,
- "volume_unit": "cm3"
}
], - "cargo_net_quantity": 4,
- "task_creation_group": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "broadcast_preference": "squad",
- "client_time_utc": "2019-08-24T14:15:22Z",
- "client_timezone": "Asia/Singapore",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "org_transporter": {
- "id": "string",
- "name": "string",
- "org_driver": {
- "id": "string",
- "name": "string",
- "vehicle_plate_number": "string"
}
}, - "driver": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "John Doe",
- "vehicle_plate_number": "string"
}, - "current_status": "pending_broadcast",
- "statuses": [
- {
- "status": "string",
- "set_at_timezone": "string",
- "set_at_utc": "2019-08-24T14:15:22Z",
- "actual_contact_name": "string",
- "remarks": "string",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "custom_info": [
- {
- "question": "Why was the delivery failed?",
- "answer": "Customer not present"
}
]
}
], - "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "platform_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "vehicle_preference": "ltl",
- "vehicle_emissions_type": "ev",
- "vehicle_emissions": {
- "ice_fuel_consumption_rate": 0,
- "ice_co2_emissions_factor": 0,
- "ev_power_consumption_rate": 0,
- "ev_co2_emissions_factor": 0,
- "ice_carbon_emissions": 0,
- "ev_carbon_emissions": 0,
- "ice_carbon_emissions_per_km": 0,
- "ev_carbon_emissions_per_km": 0,
- "total_reductions_percent": 0
}, - "updated_at": "2019-08-24T14:15:22Z",
- "epod": {
- "recipient_email": "test@example.com"
}
}
]
}
Read tasks in detail from platform partner's associated organizations. Only Platform Partner's OrgAdmin is authorized.
taskID required | string <uuid> ID of the task to get the detail |
{- "server_time": "2019-08-24T14:15:22Z",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "invoice_number": "INV0012XXXXX01",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "distance_in_meters": 7357,
- "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "is_urgent": true,
- "price": 120000,
- "currency": "SGD",
- "items": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "quantity_unit": "Pallet",
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}, - "weight_unit": "kg",
- "volume": 1000,
- "volume_unit": "cm3"
}
], - "cargo_net_quantity": 4,
- "task_creation_group": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "broadcast_preference": "squad",
- "client_time_utc": "2019-08-24T14:15:22Z",
- "client_timezone": "Asia/Singapore",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "org_transporter": {
- "id": "string",
- "name": "string",
- "org_driver": {
- "id": "string",
- "name": "string",
- "vehicle_plate_number": "string"
}
}, - "driver": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "John Doe",
- "vehicle_plate_number": "string"
}, - "current_status": "pending_broadcast",
- "statuses": [
- {
- "status": "string",
- "set_at_timezone": "string",
- "set_at_utc": "2019-08-24T14:15:22Z",
- "actual_contact_name": "string",
- "remarks": "string",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "custom_info": [
- {
- "question": "Why was the delivery failed?",
- "answer": "Customer not present"
}
]
}
], - "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "platform_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "vehicle_preference": "ltl",
- "vehicle_emissions_type": "ev",
- "vehicle_emissions": {
- "ice_fuel_consumption_rate": 0,
- "ice_co2_emissions_factor": 0,
- "ev_power_consumption_rate": 0,
- "ev_co2_emissions_factor": 0,
- "ice_carbon_emissions": 0,
- "ev_carbon_emissions": 0,
- "ice_carbon_emissions_per_km": 0,
- "ev_carbon_emissions_per_km": 0,
- "total_reductions_percent": 0
}, - "updated_at": "2019-08-24T14:15:22Z",
- "epod": {
- "recipient_email": "test@example.com"
}
}
Update task details for own and platform partner's associated organizations. Disallow addition, deletion, or update of the items and attachments. Disallow driver assignment or task completion. Only Platform Partner's OrgAdmin is authorized.
taskID required | string ID of the task to be modified |
tracking_id | string |
invoice_number | string |
object (address) | |
object (time_window) | |
object (contact) | |
object (address) | |
object (time_window) | |
object (contact) | |
object (officer_contact) | |
broadcast_preference | string Enum: "marine" "squad" "all" |
group_tag | string |
pickup_note_to_driver | string |
delivery_note_to_driver | string |
cargo_net_quantity | integer <int32> >= 0 |
price | integer <int64> >= 0 Unit used is 1/1000 cents, will be set as 0 if the currency is "". The example value (120000 = 120x1000) represents 120 cents. |
currency | string The currency should follow the ISO4217 format. |
Array of objects (item) | |
Array of objects (cargo_detail) | |
org_id | string |
total_item_weight | number <float> |
total_weight_unit | string |
total_item_volume | number <float> |
total_volume_unit | string |
total_item_quantity | number <int16> |
total_quantity_unit | string |
min_price | number <int16> Unit used is 1/1000 cents |
max_price | number <int16> Unit used is 1/1000 cents |
increment | number <int16> Unit used is 1/1000 cents |
admin_fee | number <int16> Unit used is 1/1000 cents |
client_time_utc | string <date-time> |
client_timezone | string |
vehicle_preference | string Enum: "ltl" "motorcycle" "car" "mpv" "van_1.7m" "van_2.4m" "lorry_10ft" "lorry_14ft" "lorry_20ft" "lorry_24ft" "lorry_40ft" |
service_type | string Enum: "ftl" "ltl" Charter a full truck (FTL) or Book only the truck space you need (LTL) |
version_rev required | string Revision value of the record version |
object (task_epod) |
{- "tracking_id": "string",
- "invoice_number": "string",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "officer_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309"
}, - "broadcast_preference": "marine",
- "group_tag": "Tag example",
- "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "string",
- "cargo_net_quantity": 4,
- "price": 120000,
- "currency": "SGD",
- "items": [
- {
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}
}
], - "cargo_details": [
- {
- "name": "cold_bin",
- "quantity": 1,
- "sku": "X2BZ-01X",
- "weight": 0.67,
- "remarks": "Custom-sized refrigerated container for perishable goods",
- "has_hazard_mat": true,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}
}
], - "org_id": "string",
- "total_item_weight": 0,
- "total_weight_unit": "string",
- "total_item_volume": 0,
- "total_volume_unit": "string",
- "total_item_quantity": 1,
- "total_quantity_unit": "lift",
- "min_price": 500000,
- "max_price": 1500000,
- "increment": 100000,
- "admin_fee": 20000,
- "client_time_utc": "2019-08-24T14:15:22Z",
- "client_timezone": "Asia/Singapore",
- "vehicle_preference": "ltl",
- "service_type": "ftl",
- "version_rev": "0-xxxxxxxx",
- "epod": {
- "recipient_email": "test@example.com"
}
}
{- "server_time": "2019-08-24T14:15:22Z",
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "invoice_number": "INV0012XXXXX01",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "distance_in_meters": 7357,
- "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "is_urgent": true,
- "price": 120000,
- "currency": "SGD",
- "items": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "quantity_unit": "Pallet",
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}, - "weight_unit": "kg",
- "volume": 1000,
- "volume_unit": "cm3"
}
], - "cargo_net_quantity": 4,
- "task_creation_group": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "broadcast_preference": "squad",
- "client_time_utc": "2019-08-24T14:15:22Z",
- "client_timezone": "Asia/Singapore",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "org_transporter": {
- "id": "string",
- "name": "string",
- "org_driver": {
- "id": "string",
- "name": "string",
- "vehicle_plate_number": "string"
}
}, - "driver": {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "John Doe",
- "vehicle_plate_number": "string"
}, - "current_status": "pending_broadcast",
- "statuses": [
- {
- "status": "string",
- "set_at_timezone": "string",
- "set_at_utc": "2019-08-24T14:15:22Z",
- "actual_contact_name": "string",
- "remarks": "string",
- "attachments": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "name": "filename.png",
- "url": "string"
}
], - "custom_info": [
- {
- "question": "Why was the delivery failed?",
- "answer": "Customer not present"
}
]
}
], - "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "platform_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "vehicle_preference": "ltl",
- "vehicle_emissions_type": "ev",
- "vehicle_emissions": {
- "ice_fuel_consumption_rate": 0,
- "ice_co2_emissions_factor": 0,
- "ev_power_consumption_rate": 0,
- "ev_co2_emissions_factor": 0,
- "ice_carbon_emissions": 0,
- "ev_carbon_emissions": 0,
- "ice_carbon_emissions_per_km": 0,
- "ev_carbon_emissions_per_km": 0,
- "total_reductions_percent": 0
}, - "updated_at": "2019-08-24T14:15:22Z",
- "epod": {
- "recipient_email": "test@example.com"
}
}
Create draft tasks from platform partners to associated organizations or own. Only Platform Partner's OrgAdmin is authorized.
Array of objects |
{- "tasks": [
- {
- "tracking_id": "TRACK01XXX56789",
- "group_tag": "GTRACK0123XXXX89",
- "broadcast_preference": "all",
- "service_type": "ftl",
- "vehicle_preference": "motorcycle",
- "from_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "from_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "from_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "to_address": {
- "street_address": "201 Henderson Road",
- "city": "Singapore",
- "state": "Singapore",
- "country": "Singapore",
- "zip_code": "159545",
- "building_name": "Apex @ Henderson",
- "latitude": 1.2827111,
- "longitude": 103.8204487,
- "altitude": 30
}, - "to_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "to_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309",
- "email": "test@example.com",
- "vessel_name": "ACX DIAMOND",
- "lighter_boat_name": "xxxx-xxx-xxxx",
- "lighter_company_name": "xxxx-xxx-xxxx",
- "company_name": "Company Name",
- "vehicle_name": "Vehicle Name",
- "berth_no": "JP 04",
- "vessel_imo": "9360609",
- "etb_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}, - "etu_time_window": {
- "start_time_utc": "2024-08-20T17:30:00Z",
- "start_timezone": "Asia/Singapore",
- "end_time_utc": "2024-08-21T19:00:00Z",
- "end_timezone": "Asia/Singapore"
}
}, - "pickup_note_to_driver": "Please pickup at 2pm",
- "delivery_note_to_driver": "Meet at the lobby",
- "from_location_type": "land",
- "to_location_type": "land",
- "officer_contact": {
- "name": "Rebecca Smith",
- "phone": "+6569965309"
}, - "items": [
- {
- "name": "Blue lunchbox",
- "sku": "X2BZ-01X",
- "quantity": 1,
- "weight": 0.67,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}
}
], - "cargo_details": [
- {
- "name": "cold_bin",
- "quantity": 1,
- "sku": "X2BZ-01X",
- "weight": 0.67,
- "remarks": "Custom-sized refrigerated container for perishable goods",
- "has_hazard_mat": true,
- "dimension": {
- "length": 10,
- "width": 20.5,
- "height": 20.5
}
}
], - "cargo_net_quantity": 4,
- "price": 1500000,
- "currency": "SGD",
- "vehicle_emissions_type": "ev",
- "epod": {
- "recipient_email": "test@example.com"
}, - "org_id": "string"
}
]
}
{- "total_tasks": 1,
- "tasks": {
- "org_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "...": "Other fields omitted",
- "platform_id": "MarineDigitalPlatform",
- "current_status": "draft"
}, - "server_time": "2019-08-24T14:15:22Z"
}
Broadcast tasks that is still in draft status. Only Platform Partner's OrgAdmin is authorized.
task_ids | Array of strings <uuid> |
{- "task_ids": [
- "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
]
}
{- "updated_tasks": [
- {
- "id": "string",
- "current_status": "string"
}
], - "server_time": "2019-08-24T14:15:22Z"
}
Batch broadcast draft task and patch task with tracking_id, this endpoint will only update tracking_id to draft task that successfully confirmed to broadcast. Only Platform Partners Merchant is authorized.
Array of objects |
{- "tasks": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "string"
}
]
}
{- "updated_tasks": [
- {
- "id": "string",
- "current_status": "string"
}
], - "server_time": "2019-08-24T14:15:22Z"
}
Patch multiple task tracking_id
Array of objects |
{- "tasks": [
- {
- "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
- "tracking_id": "string"
}
]
}
{- "updated_tasks": [
- {
- "id": "string",
- "tracking_id": "string"
}
], - "server_time": "2019-08-24T14:15:22Z"
}