- Created by Jayson Catacutan , last modified by Christopher Bryan Rabang on Feb 10, 2023
You are viewing an old version of this page. View the current version.
Compare with Current View Version History
« Previous Version 69 Next »
Endpoint URL
Staging | |
---|---|
Production | will be provided after SIT |
Login and Get Session Token BUSINESS PROVIDER
Description | To acquire authorization token |
---|---|
Endpoint | /login |
Method | POST |
Request Headers
{ "Content-Type": "application/json" }
Request Body
Field | Data type | Required | Description |
---|---|---|---|
string | yes | email credential | |
password | string | yes | password |
Sample Request Body
{ "email": "sandbox_dev@gmail.com", "password": "password" }
Sample Response
Status: 200 OK! { "success": true, "results": { "apiKey": "fb77c9653bf5e736d191b46bbfed7c2bd", "clientId": "SANDBOX_DEV", "sessionToken": "b45e2fb77c9653bf5e736d19e1fd18ebbffd0f6d3dd25af118e5eb38851bf4d" } }
Field | Description |
---|---|
apiKey | Generated hash on client-side to be used on succeeding API request |
clientId | Reference Client ID |
sessionToken | Generated hash on every API login to be used on succeeding API requests. |
Session token expires after 20 minutes of use.
Session duration refreshes every login or on API (createPost, getPost, etc.) calls given that the token is still valid.
QUOTA_EXCEEDED error message occurs when you reach a certain number of login API request per second. For bulk API calls, please use the login API once and reuse the session token. You may also retry the operation after 1-2 seconds.
Error Messages:
Invalid Email
Status: 401 Unauthorized { "success": false, "results": "EMAIL_NOT_FOUND" }
Invalid Password
Status: 401 Unauthorized { "success": false, "results": "INVALID_PASSWORD" }
Quota Limit Exceeded Error
Status: 401 Unauthorized { "success": false, "results": "QUOTA_EXCEEDED : Exceeded quota for verifying passwords." }
Login v2 BUSINESSPROVIDER
Description | Login V2 that uses JWT Auth |
---|---|
Endpoint | /loginV2 |
Method | POST |
Request Headers
KEY | VALUE |
---|---|
Content-Type | application/json |
Request Body
Field | Data type | Required | Description |
---|---|---|---|
string | yes | email credential | |
password | string | yes | password |
{ "email": "sample@email.com", "password": "1234456" }
Sample Response
{ "success": true, "results": { "accessTokenExpiresAt": 1650941635051, "refreshTokenExpiresAt": 1653532435052, "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnQiOiJTQU5EQk9YX0RFViIsImxtaUF1dGhLZXkiOiIyRjlCNTdGQTlDNzRGOEUwQ0YyM0NCMDUyQjJDNDM4RTBBRDhEOTUxREE5QzczQkM1QjZEQUYxOEZDMDNFMjVBIiwiZW1haWwiOiJjaHJpc0BkZXYuZmxlZXQucGgiLCJpYXQiOjE2NTA5NDA0MzUsImV4cCI6MTY1MDk0MTYzNX0.5ulcbOQkNP5ESFmf8xVvGhdEi_U7tPb32Uvyqpevp_I", "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnQiOiJTQU5EQk9YX0RFViIsImxtaUF1dGhLZXkiOiIyRjlCNTdGQTlDNzRGOEUwQ0YyM0NCMDUyQjJDNDM4RTBBRDhEOTUxREE5QzczQkM1QjZEQUYxOEZDMDNFMjVBIiwiZW1haWwiOiJjaHJpc0BkZXYuZmxlZXQucGgiLCJjbGllbnRBcGlLZXkiOiJiMmY1YzVhNi1hZGIwLTQ5MTktODZkMy1mMzIwNTdlN2RlZGMiLCJpYXQiOjE2NTA5NDA0MzUsImV4cCI6MTY1MzUzMjQzNX0.eKG-NTpoApJ314nQ2Vgj8mZF8QrwV7oUuEmZLif3JrI" } }
To use Login API v2 on our existing endpoints (e.g. /getpost), “
x-access-token
" must be defined in the HEADERS instead of the"Auth-token"
and value for it should be “Bearer {{accessToken}}”.apiKey is no longer required to be defined in the Parameters on our existing endpoints
(e.g. /getpost) if “x-access-token"
is defined in the Headers.
For LoginV2 bulk API calls, please use the Refresh token API (/refreshToken). https://ctoglobal.atlassian.net/wiki/spaces/ITX/pages/600834269/v3#Refresh-Token-BUSINESSProvider
Error Messages:
Invalid Email
Status: 401 Unauthorized { "success": false, "results": "INVALID_EMAIL" }
Invalid Password
Status: 401 Unauthorized { "success": false, "results": "INVALID_PASSWORD" }
Get Partners BUSINESS PROVIDER
Description | To get the list of your preferred partners |
---|---|
Endpoint | /getPartners |
Method | GET |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" }
To use "x-access-token"
for our Login V2 successfully, “auth-token” must no longer be defined in the headers.
Query parameters (URL)
Login V1
{ "apiKey": "<apiKey will be acquired on login API>" }
Login V2
There is no need to define the apiKey in the parameters for our LoginV2.
Sample Response
Status: 200 OK! { "success": true, "results": [ { "id": "SANDBOX_BUSINESS", "name": "Sandbox Business", "serviceType": "onDemand" }, { "id": "SANDBOX_QA", "name": "Sandbox_QA", "serviceType": "scheduled" } ] }
Get List of Areas BUSINESS
Description | To get the list of areas |
---|---|
Endpoint | /getListOfAreas |
Method | GET |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" }
To use "x-access-token"
for our Login V2 successfully, “auth-token” must no longer be defined in the headers.
Query parameters (URL)
Login V1
{ "apiKey": "<apiKey will be acquired on login API>" }
Login V2
There is no need to define the apiKey in the parameters for our LoginV2.
Sample Response
Status: 200 OK! { "success": true, "results": [ { "id": "-KnmC5Y0pFYBquoDL1zo", "info": { "code": "A1", "name": "Area 1", "stores": [ "-LDnYzs1xbK-FeQ0VPFr" ] } } ] }
Get List of Stores/Hubs BUSINESS
Description | To get the list of stores/hubs |
---|---|
Endpoint | /getListOfStores |
Method | GET |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" }
To use "x-access-token"
for our Login V2 successfully, “auth-token” must no longer be defined in the headers.
Query parameters (URL)
Login V1
{ "apiKey": "<apiKey will be acquired on login API>", "areaCode": "<area code acquired from getListOfAreas API>" }
Login V2
There is no need to define the apiKey in the parameters for our LoginV2.
{ "areaCode": "<area code acquired from getListOfAreas API>" }
Sample URL
https://us-central1-fleet-staging-2333a.cloudfunctions.net /getListOfStores?apiKey=7c5dd55738b964944f9357bcc7f45ce6d857ff18&areaCode=A1
Sample Response
Status: 200 OK! { "success": true, "results": [ { "id": "-LDnYzs1xbK-FeQ0VPFr", "info": { "address": "7391 Building 9 Bakawan St. Corner Mayapis St., San Antonio Village, Makati, 1203 Metro Manila", "advanceStart": false, "code": "main_store", "default": true, "latitude": 14.5601823, "longitude": 121.00680469999998, "name": "Main Store", "province": "Metro Manila", "provinceKey": "MM" } } ], "total": 1 }
Get Provider's Create Post v3 Template BUSINESS
Description | Get provider’s create post template and meta fields schema for createPost v3 API. |
---|---|
Endpoint | /v3/getCreatePostTemplate |
Method | GET |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" }
To use "x-access-token"
for our Login V2 successfully, “auth-token” must no longer be defined in the headers.
Query parameters (URL)
Field | Required | Description |
---|---|---|
apiKey | yes | API key from login API There is no need to define the apiKey in the parameters for our LoginV2. |
partnerId | yes | Client id of desired partner’s create post template and meta fields schema. Can be acquired through getPartners API |
isAutoReattempt | no | Set to true to get create post template of your configured auto reattempt providers. This will disregard the value of your partnerId if set to true. |
Sample Request
https://us-central1-fleet-dev-ph.cloudfunctions.net/v3/getCreatePostTemplate?apiKey=7c5dd55738b964944f9357bcc7f45ce6d857ff18&partnerId=SANDBOX_DX
Sample Response
status: 200 OK! { "success": true, "result": { "requestBody": { "refNo": "", "pickupDetails": { "customerName": "", "contactNumber": "", "emailAddress": "", "lat": 0, "long": 0, "tags": [], "remarks": "", "barangay": "", "province": "", "postalCode": "", "pickupDateTime": "", "pickupAddress": "", "pickupCity": "" }, "deliveryDetails": { "customerName": "", "contactNumber": "", "emailAddress": "", "lat": 0, "long": 0, "tags": [], "remarks": "", "barangay": "", "province": "", "postalCode": "", "deliveryDateTime": "", "deliveryAddress": "", "deliveryCity": "", "itemDescription": "", "itemPrice": 0, "codAmount": 0, "productSize": "", "length": 0, "width": 0, "height": 0, "weight": 0, "metaFields": { "shipment": "" } } }, "metaFieldSchema": { "shipment": { "required": true, "type": "string", "description": "Shipment/Parcel Size", "values": [ "big-pouch", "box" ], "details": [ { "value": "big-pouch", "description": "Big Pouch (100 pesos within metro manila)" }, { "value": "box", "description": "Box" } ] } } } }
Meta fields schema
Field | Data type | Description |
---|---|---|
type | string | data type of a meta field. Can either be object or string |
required | boolean | indicator if meta field is required |
description | string | description of a meta field |
values | array | options/values for the specified meta field |
details | array | in depth description of options/values |
properties | object | details for object type meta fields |
Get Quotation BUSINESS
Description | To get the list of available product’s information and rates based on location per provider. |
---|---|
Endpoint | /getQuotation |
Method | POST |
Price quotation is not available for partners with “on demand” service type.
Inches is used as a unit of measurement for length, width and height. (Please see sample request response).
Kg is used as a unit of measurement for weight. (Please see sample request response).
Request Headers
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" }
To use "x-access-token"
for our Login V2 successfully, “auth-token” must no longer be defined in the headers.
Request Params
{ "apiKey": "<apiKey will be acquired on login API>", "partnerId": "<provider’s id, can be acquired on getPartners API >" }
There is no need to define the apiKey in the parameters for our LoginV2.
Request Body
Field | Data type | Required | Description |
---|---|---|---|
pickup | object | yes | object for pickup address |
delivery | object | yes | object for delivery address |
Fields of pickup and delivery:
Field | Data Type | Required | Max Length | Description |
---|---|---|---|---|
province | string | yes | 60 | province |
city | string | yes | 60 | city |
barangay | string | no | 60 | barangay |
Sample Request Body
{ "pickup": { "province": "metro manila", "city": "pasig city", "barangay": "pinagbuhatan" }, "delivery": { "province": "rizal", "city": "cainta", "barangay": "san andres" } }
Sample Response (Serviceable area)
Status: 200 OK! { "success": true, "result": { "destinations": [ "REGION 4-A" "NCR" ], "estimatedPickupDays": 3, "estimatedDeliveryDays": 6, "products": [ { "size": "L", "price": 165, "description": "12 x 18 x 2", "name": "Large Pouch", "length": 12, "width": 18, "height": 2, "weight": 3 }, { "size": "XL", "price": 310, "description": "18 x 12 x 9", "name": "Box", "length": 18, "width": 12, "height": 9, "weight": 6 } ] } }
Sample Response (Not serviceable area)
Status: 400 Bad Request { "success": false, "result": "Pickup/delivery location is not serviceable by the selected provider." }
Error Messages:
Missing Partner Id
Status: 400 Bad Request { "success": false, "message": "Missing partnerId. Please check your dashboard documentation." }
Invalid Partner Id
Status: 400 Bad Request { "success": false, "message": "Invalid partner id. Either it's not existing or you don't have rights to post to the partner." }
Service type “On Demand”
Status: 400 Bad Request { "success": false, "message": "Price quotation is not yet available for on demand providers." }
Create Post v3 BUSINESS
Description | To create a post based on providers serviceable area. |
---|---|
Endpoint | /v3/createPost |
Method | POST |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" "Content-Type": "application/json" }
To use "x-access-token"
for our Login V2 successfully, “Auth-Token
” must no longer be defined in the headers.
Query parameters (URL)
{ "apiKey": "<REQUIRED, apiKey will be acquired on login API>", "partnerId": "<REQUIRED, preferred partner/provider, can be acquired on getPartners API>" }
There is no need to define the apiKey in the parameters for our LoginV2.
To view the Deliveries PH address library, kindly refer to this pages:
Lat/long fields is required for on demand providers.
Barangay field is not required but will affect the accuracy of identifying if the pickup/delivery location is serviceable by the provider or not.
Availability of product sizes varies to each providers and pickup/delivery location.
To be able to get the available sizes and price of a provider, see /getQuotation API.
productSize field is currently not available for on demand providers. Leave an empty string instead.
metaFields:
Meta fields are special fields requested by the provider that needs input from the customer.
To to get provider’s meta fields schema, see /getCreatePostTemplate API.
Request Body Fields:
Field | Data Type | Required | Max Length | Description |
---|---|---|---|---|
refNo | string | yes | 30 | reference number of post |
isDraft | boolean | no | n/a | set true to save post as draft. |
source | string | no | origin/source of post, can be one of the ff:
| |
isAutoReattempt | boolean | no | Set to true to assign as auto reattempt post. This will disregard the value of your partnerId on params if set to true. | |
businessStoreId | string | no | create a post by store/hub, empty string or null will assign to default store. see /getListOfStores API for the id. | |
pickupDetails | object | yes | object for pickup details | |
deliveryDetails | object | yes | object for delivery details | |
isPSGC | boolean | no |
| Set to true to receive PSGC address format |
Fields of pickupDetails
Field | Data Type | Required | Max Length | Description |
---|---|---|---|---|
senderName | string | yes | 80 | name of sender |
contactNumber | string | yes | 20 | contact number of sender. Must be a valid contact number |
emailAddress | string | no | 60 | email address of sender |
pickupDateTime | string | yes | n/a | date and time of pickup
|
pickupAddress | string | yes | 350 | pickup address |
pickupCity | string | yes | 60 | pickup city |
province | string | yes | 60 | pickup province |
barangay | string | no | 60 | pickup barangay note: not required but will affect the accuracy of identifying if the location is serviceable by the provider. |
postalCode | string | no | 10 | pickup postal code |
lat | number | yes (for onDemand providers) | n/a | latitude of pickup location |
long | number | yes (for onDemand providers) | longitude of pickup location | |
tags | array | no | list of tag id, can be get through getTags API | |
remarks | string | no | 350 | pickup remarks |
Fields of deliveryDetails
Field | Data Type | Required | Max Length | Description |
---|---|---|---|---|
recipientName | string | yes | 80 | name of recipient |
contactNumber | string | yes | 20 | contact number of receiver. Must be a valid number |
emailAddress | string | no | 60 | email address of receiver |
deliveryDateTime | string | yes | n/a | date and time of deliver. |
deliveryAddress | string | yes | 350 | delivery address |
deliveryCity | string | yes | 60 | delivery city |
province | string | yes | 60 | delivery province |
barangay | string | no | 60 | delivery barangay note: not required but will affect the accuracy of identifying if the location is serviceable by the provider. |
postalCode | string | no | 10 | delivery postal code |
lat | number | yes (for onDemand providers) | n/a | latitude of delivery location |
long | number | yes (for onDemand providers) | longitude of delivery location | |
tags | array | no | list of tag id, can be get through getTags API. | |
itemDescription | string | no | 350 | Details about the item/product. e.g. Item name, quantity etc. |
remarks | string | no | 350 | delivery remarks |
productSize | string | yes (for scheduled providers) | n/a | product/parcel size can be one of the following: |
length | number | no | length measurement of an item in inches | |
width | number | no | length measurement of an item in inches | |
height | number | no | length measurement of an item in inches | |
weight | number | no | weight measurement of an item in kilograms | |
metaFields | object | no | metaFields to fulfill provider’s required fields | |
quantity | number | no | 5 | quantity |
items | array | no |
| list of item details. |
declaredValue | number | no | 15 | declared item price |
codAmount | number | no | 15 | cash on delivery amount |
Fields of items
Field | Data Type | Required | Max Length | Description |
---|---|---|---|---|
name | string | yes | 350 | item name |
quantity | number | no | 5 | item quantity |
unitPrice | number | no | 8 | item unit price |
declaredValue | number | no | 15 | item declared unit price |
dimensions | object | no | n/a | item dimensions |
Fields of dimensions
Field | Data Type | Required | Description |
---|---|---|---|
length | number | no | item length in inches |
width | number | no | item width in inches |
height | number | no | item height in inches |
breadth | number | no | item breadth in inches |
depth | number | no | item depth in inches |
weight | number | no | item weight in kilograms |
Sample Request Body
{ "refNo": "order-001", "businessStoreID": "", "isPSGC": false, "isAutoReattempt": false, "pickupDetails": { "senderName": "Christian Pick up", "contactNumber": "09123456789", "emailAddress": "a@gmail.com", "pickupDateTime": "2020-09-29T21:05", "pickupAddress": "536 Calbayog St. Highway Hills Mandaluyong City", "pickupCity": "Mandaluyong City", "province": "Metro Manila", "barangay": "Highway Hills", "postalCode": "1556", "lat": 14.5776292, "long": 121.0463673, "tags": [], "remarks": "my remarks" }, "deliveryDetails": { "recipientName": "Christian Delivery", "contactNumber": "09123456789", "emailAddress": "a@email.com", "deliveryDateTime": "2020-09-29T22:06", "deliveryAddress": "Vermont Royale, Antipolo", "deliveryCity": "Antipolo", "province": "Rizal", "barangay": "San Roque", "postalCode": "1870", "declaredValue": 200, "productSize": "L", "width": 0, "height": 0, "length": 10, "weight": 0, "codAmount": 250, "lat": 14.5776292, "long": 121.0463673, "tags": [], "itemDescription": "Brand New Phone X", "remarks": "Please handle with care. Ask the guards for direction.", "metaFields": {}, "quantity": 50, "items": [{ "name": "Sample item 1", "quantity": 10, "unitPrice":20.00, "declaredValue":5, "dimensions":{ "length":2.55, "width":1.56, "height":1.28, "breadth":5.29, "depth":2.41, "weight":1.51 } }, { "name": "Sample item 2", "quantity": 15, "unitPrice":140.34, "declaredValue":500.55, "dimensions":{ "length":2.55, "width":1.56, "height":1.28, "breadth":5.29, "depth":2.41, "weight":1.51 } }, { "name": "Sample item 3", "quantity": 100, "unitPrice":120.23, "declaredValue":500.55, "dimensions":{ "length":2.55, "width":1.56, "height":1.28, "breadth":5.29, "depth":2.41, "weight":1.51 } } ] } }
Sample Response
Status: 200 OK! { "success": true, "message": "Job posted on marketplace", "result": { "postId": "3nHfPLXUGWYhlQ5TcNva", "customerName": "Christian Pick up", "contactNumber": "09123456789", "emailAddress": "a@gmail.com", "completionDateTime": 1601384700000, "pickupAddress": "536 Calbayog St. Highway Hills Mandaluyong City", "pickupCity": "Mandaluyong City", "province": "Metro Manila", "barangay": "Highway Hills", "postalCode": "1556", "lat": 14.5776292, "long": 121.0463673, "tags": [ "-LI4Qgef9HIHhb2AzGzW", "-LK5fMS1u-Qsv-G1tc9l" ], "metaTags": "{\"-LI4Qgef9HIHhb2AzGzW\":{\"colorIndex\":1,\"label\":\"API\"},\"-LK5fMS1u-Qsv-G1tc9l\":{\"colorIndex\":4,\"label\":\"Pick-up\"}}", "storeName": "", "details": "", "remarks": "my remarks", "transactions": [], "attempts": {}, "approximateShippingFee": 115, "billableShippingFee": 0, "actualShippingFee": 0, "finalShippingFee": 0, "metaState": "", "lastUpdateRemarks": "", "businessId": "DRINKKA", "businessName": "Drinkka_DEMO", "businessStoreId": null, "storeId": null, "courierName": "Sandbox_DX", "createdAt": 1601372523479, "partnerId": "SANDBOX_DX", "refNo": "order-001", "status": "ASSIGNED", "meta": "{\"customerName\":\"Christian Delivery\",\"contactNumber\":\"09123456789\",\"emailAddress\":\"a@email.com\",\"completionDateTime\":1601388360000,\"deliveryAddress\":\"Vermont Royale, Antipolo\",\"deliveryCity\":\"Antipolo\",\"province\":\"Rizal\",\"barangay\":\"San Roque\",\"postalCode\":\"1870\",\"itemPrice\":200,\"dimension\":{\"length\":10,\"width\":0,\"height\":0},\"codAmount\":250,\"lat\":14.5776292,\"long\":121.0463673,\"tags\":[\"-LI4Qgef9HIHhb2AzGzW\",\"-LK5fK2Pq--uEhN4T9UG\"],\"metaTags\":\"{\\\"-LI4Qgef9HIHhb2AzGzW\\\":{\\\"colorIndex\\\":1,\\\"label\\\":\\\"API\\\"},\\\"-LK5fK2Pq--uEhN4T9UG\\\":{\\\"colorIndex\\\":3,\\\"label\\\":\\\"Delivery\\\"}}\",\"details\":\"Brand New Phone X\",\"remarks\":\"Please handle with care. Ask the guards for direction.\",\"trackingNumber\":\"\",\"trackingUrl\":\"\",\"weight\":0}", "metaFields": {}, "items": [ { "name": "Sample item 1", "quantity": 10, "unitPrice": 20, "declaredValue": 5, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } }, { "name": "Sample item 2", "quantity": 15, "unitPrice": 140.34, "declaredValue": 500.55, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } }, { "name": "Sample item 3", "quantity": 100, "unitPrice": 120.23, "declaredValue": 500.55, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } } ] } }
Sample Request Body
{ "refNo": "order-001", "businessStoreID": "", "isPSGC": true, "isAutoReattempt": false, "pickupDetails": { "senderName": "Christian Pick up", "contactNumber": "09123456789", "emailAddress": "a@gmail.com", "pickupDateTime": "2020-09-29T21:05", "pickupAddress": "536 Calbayog St. Highway Hills Mandaluyong City", "pickupCity": "Mandaluyong City", "province": "Metro Manila", "barangay": "Highway Hills", "postalCode": "1556", "lat": 14.5776292, "long": 121.0463673, "tags": [], "remarks": "my remarks" }, "deliveryDetails": { "recipientName": "Christian Delivery", "contactNumber": "09123456789", "emailAddress": "a@email.com", "deliveryDateTime": "2020-09-29T22:06", "deliveryAddress": "Vermont Royale, Antipolo", "deliveryCity": "Antipolo", "province": "Rizal", "barangay": "San Roque", "postalCode": "1870", "declaredValue": 200, "productSize": "L", "width": 0, "height": 0, "length": 10, "weight": 0, "codAmount": 250, "lat": 14.5776292, "long": 121.0463673, "tags": [], "itemDescription": "Brand New Phone X", "remarks": "Please handle with care. Ask the guards for direction.", "metaFields": {}, "items": [{ "name": "Sample item 1", "quantity": 10, "unitPrice":20.00, "declaredValue":5, "dimensions":{ "length":2.55, "width":1.56, "height":1.28, "breadth":5.29, "depth":2.41, "weight":1.51 } }, { "name": "Sample item 2", "quantity": 15, "unitPrice":140.34, "declaredValue":500.55, "dimensions":{ "length":2.55, "width":1.56, "height":1.28, "breadth":5.29, "depth":2.41, "weight":1.51 } }, { "name": "Sample item 3", "quantity": 100, "unitPrice":120.23, "declaredValue":500.55, "dimensions":{ "length":2.55, "width":1.56, "height":1.28, "breadth":5.29, "depth":2.41, "weight":1.51 } } ] } }
Sample Response
Status: 200 OK! { "success": true, "message": "Job posted on marketplace", "result": { "postId": "3nHfPLXUGWYhlQ5TcNva", "customerName": "Christian Pick up", "contactNumber": "09123456789", "emailAddress": "a@gmail.com", "completionDateTime": 1601384700000, "pickupAddress": "536 Calbayog St. Highway Hills Mandaluyong City", "pickupCity": "CITY OF MANDALUYONG", "province": "SECOND DISTRICT", "barangay": "HIGHWAY HILLS", "postalCode": "1556", "lat": 14.5776292, "long": 121.0463673, "tags": [ "-LI4Qgef9HIHhb2AzGzW", "-LK5fMS1u-Qsv-G1tc9l" ], "metaTags": "{\"-LI4Qgef9HIHhb2AzGzW\":{\"colorIndex\":1,\"label\":\"API\"},\"-LK5fMS1u-Qsv-G1tc9l\":{\"colorIndex\":4,\"label\":\"Pick-up\"}}", "storeName": "", "details": "", "remarks": "my remarks", "transactions": [], "attempts": {}, "approximateShippingFee": 115, "billableShippingFee": 0, "actualShippingFee": 0, "finalShippingFee": 0, "metaState": "", "lastUpdateRemarks": "", "businessId": "DRINKKA", "businessName": "Drinkka_DEMO", "businessStoreId": null, "storeId": null, "courierName": "Sandbox_DX", "createdAt": 1601372523479, "partnerId": "SANDBOX_DX", "refNo": "order-001", "status": "ASSIGNED", "meta": "{\"customerName\":\"Christian Delivery\",\"contactNumber\":\"09123456789\",\"emailAddress\":\"a@email.com\",\"completionDateTime\":1601388360000,\"deliveryAddress\":\"Vermont Royale, Antipolo\",\"deliveryCity\":\"CITY OF ANTIPOLO\",\"province\":\"RIZAL\",\"barangay\":\"SAN ROQUE\",\"postalCode\":\"1870\",\"itemPrice\":200,\"dimension\":{\"length\":10,\"width\":0,\"height\":0},\"codAmount\":250,\"lat\":14.5776292,\"long\":121.0463673,\"tags\":[\"-LI4Qgef9HIHhb2AzGzW\",\"-LK5fK2Pq--uEhN4T9UG\"],\"metaTags\":\"{\\\"-LI4Qgef9HIHhb2AzGzW\\\":{\\\"colorIndex\\\":1,\\\"label\\\":\\\"API\\\"},\\\"-LK5fK2Pq--uEhN4T9UG\\\":{\\\"colorIndex\\\":3,\\\"label\\\":\\\"Delivery\\\"}}\",\"details\":\"Brand New Phone X\",\"remarks\":\"Please handle with care. Ask the guards for direction.\",\"trackingNumber\":\"\",\"trackingUrl\":\"\",\"weight\":0}", "metaFields": {}, "items": [ { "name": "Sample item 1", "quantity": 10, "unitPrice": 20, "declaredValue": 5, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } }, { "name": "Sample item 2", "quantity": 15, "unitPrice": 140.34, "declaredValue": 500.55, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } }, { "name": "Sample item 3", "quantity": 100, "unitPrice": 120.23, "declaredValue": 500.55, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } } ] } }
Error Messages:
Invalid Request Parameter
Status: 400 Bad Request { "success": false, "message": "Invalid Request Parameter. Check your dashboard documentation", "result": { "pickupDetails": { "customerName": "Required field.", "contactNumber": "Required field.", "province": "Required field.", "pickupDateTime": "Invalid data type. Must be in string", "pickupAddress": "Required field.", "pickupCity": "Required field." }, "deliveryDetails": { "customerName": "Required field.", "contactNumber": "Required field.", "province": "Required field.", "deliveryDateTime": "Invalid data type. Must be in string", "deliveryAddress": "Required field.", "deliveryCity": "Required field.", "itemDescription": "Invalid data type. Must be in string", "productSize": "Invalid data type. Must be in string", "width": "Invalid data type. Must be in number", "height": "Invalid data type. Must be in number", "length": "Invalid data type. Must be in number", "weight": "Invalid data type. Must be in number", "metaFields": { "shipment": "Required field." } } } } Status: 400 Bad Request { "success": false, "message": "Invalid Request Parameter. Check your dashboard documentation", "result": { "pickupDetails": { "customerName": "Maximum length exceeded.", "contactNumber": "Invalid format.", "emailAddress": "Maximum length exceeded.", "remarks": "Maximum length exceeded.", "barangay": "Maximum length exceeded.", "province": "Maximum length exceeded.", "postalCode": "Maximum length exceeded.", "pickupAddress": "Maximum length exceeded.", "pickupCity": "Maximum length exceeded." }, "deliveryDetails": { "customerName": "Maximum length exceeded.", "contactNumber": "Invalid format.", "emailAddress": "Maximum length exceeded.", "remarks": "Maximum length exceeded.", "barangay": "Maximum length exceeded.", "province": "Maximum length exceeded.", "postalCode": "Maximum length exceeded.", "deliveryAddress": "Maximum length exceeded.", "deliveryCity": "Maximum length exceeded.", "itemDescription": "Maximum length exceeded." } } }
Missing Partner ID
Status: 400 Bad Request { "success": false, "message": "Missing partnerId. Please check your dashboard documentation." }
Invalid Partner ID
Status: 400 Bad Request { "success": false, "message": "Invalid partner id. Either it's not existing or you don't have rights to post to the partner." }
Invalid business store id
Status: 400 Bad Request { "success": false, "message": "Invalid store ID. Check your storeId. Remove storeId to use default store." }
Invalid pickup/delivery date and time.
Status: 400 Bad Request { "success": false, "message": "Pickup/delivery date and time must be greater than the current time." } Status: 400 Bad Request { "success": false, "message": "Delivery date and time must be greater than the pickup time." }
Missing coordinates for on demand providers.
{ "success": false, "message": "Pickup/delivery latitude and longitude is required for on demand providers." }
Invalid pickup/delivery location.
Status: 400 Bad Request { "success": false, "message": "Invalid pickup location." } Status: 400 Bad Request { "success": false, "message": "Invalid delivery location." }
Not Serviceable
Status: 400 Bad Request { "success": false, "message": "Pickup location is not serviceable by the provider." } Status: 400 Bad Request { "success": false, "message": "Delivery location is not serviceable by the provider." } Status: 400 Bad Request { "success": false, "message": "Pickup and delivery location is not serviceable by the provider." }
If isPSGC is false and field pickup/delivery address is in PSGC format
Status: 400 Bad Request { "success": false, "message": "Invalid pickup location." } Status: 400 Bad Request { "success": false, "message": "Invalid delivery location." }
Product
Status: 400 Bad Request { "success": false, "message": "Product size not available for the designated service area." }
Auto Reattempt
Status: 400 Bad Request { "success": false, "message": "No auto re-attempt settings configured in your Deliveries PH Web account." }
Update Post Status PROVIDER
Description | To Update post status |
---|---|
Endpoint | /updatePostStatus |
Method | POST |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" "Content-Type": "application/json" }
To use "x-access-token"
for our Login V2 successfully, “Auth-Token
” must no longer be defined in the headers.
URL Query parameters
{ "apiKey": "<apiKey will be acquired on login API>" }
There is no need to define the apiKey in the parameters for our LoginV2.
Request Body Fields
Field | Data Type | Required | Description |
---|---|---|---|
postId | string | yes | ID of post to update. |
status | string | yes | status to update |
remarks | string | no | update remarks from provider |
timeStamp | number | no | timestamp in milliseconds. Leave 0, null or empty string to use current server timestamp. |
metaState | string | no | custom status/state from provider |
Sample Request Body
{ "postId": "uuNzkYoOy1VI373BoKY9", "status": "START_DELIVERY", "remarks": "Rider is on his way", "timeStamp": 1575890011178, "metaState": "" }
Sample Response
Status: 200 OK! { "success": true, "message": "Post successfully updated." }
Status Updates:
Status | Is substatus? | Description |
| No | this can only be triggered in web if business or customers assign a post/an opportunity to provider |
| No | this can only be triggered through manual accept in their DPH account or |
| if AUTO ACCEPT is toggled on, post will automatically be accepted | |
| No | this can only be triggered through manual reject in their DPH account and is returned in /getpost as “MPREJECTED” |
| No | Provider is assigning a rider for the order. For on-demand providers only. |
| Yes, under “STARTED” main status | Order is for pickup |
| Yes, under “STARTED” main status | Order has been picked up |
| Yes, under “STARTED” main status | Courier has successfully delivered order to hub. For scheduled providers only. |
| Yes, under “STARTED” main status | Order is out for delivery |
| No | Order has been delivered |
| No | Failed to pickup order |
| No | Failed to deliver order |
| No | Failed to return order |
| No | Cancel order |
| No | Order is out for return |
| No | Order has been returned to sender |
| No | Push an event update on job history without updating the status of the post. Please fill up the remarks field. |
Get Post BUSINESS PROVIDER
Description | To get a specific post or all post |
---|---|
Endpoint | /getPost |
Method | GET |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" "Content-Type": "application/json" }
To use "x-access-token"
for our Login V2 successfully, “Auth-Token
” must no longer be defined in the headers.
URL Parameters (Query Parameters)
Parameter | Required | Description |
---|---|---|
apiKey | yes | API key from Login API There is no need to define the apiKey in the parameters for our LoginV2. |
postId | no | Filter by post id, leave empty or remove postId parameter to query all |
partnerId | no | Filter by partner id, leave empty or remove partnerId parameter to query all |
type | no | Post type which can be either of the following:
Defaults to opportunity if empty or undefined. |
status | no | Filter by status. Set to |
businessStoreId | no | Filter by store/hub. |
isPSGC | no | Set to true to receive PSGC address format |
Sample URL Parameters
{ "apiKey": "fb77c9653bf5e736d191b46bbfed7c2bd", "postId": "uuNzkYoOy1VI373BoKY9", "partnerId": "SANDBOX_DX", "isPSGC": false }
Sample Response:
Status: 200 OK! { "success": true, "result": [ { "postId": "uuNzkYoOy1VI373BoKY9", "customerName": "Christian Pick up", "contactNumber": "09123456789", "emailAddress": "a@gmail.com", "completionDateTime": 1583836200000, "pickupAddress": "Sitio barrio, Angeles Pampanga Philippines", "pickupCity": "Mandaluyong City", "province": "Metro Manila", "lat": 14.5776292, "long": 121.0463673, "tags": [ "-LI4Qgef9HIHhb2AzGzW", "-LK5fMS1u-Qsv-G1tc9l" ], "metaTags": "{\"-LI4Qgef9HIHhb2AzGzW\":{\"colorIndex\":1,\"label\":\"API\"},\"-LK5fMS1u-Qsv-G1tc9l\":{\"colorIndex\":4,\"label\":\"Pick-up\"}}", "storeName": "", "remarks": "my remarks", "businessId": "SANDBOX_DEV", "businessName": "Sandbox_Dev", "businessStoreId": null, "storeId": null, "courierName": "Sandbox_DX", "createdAt": 1583381948826, "partnerId": "SANDBOX_DX", "refNo": "order-001", "status": "STARTED", "isAutoReattempt": true, "subStatus": "DONE_PICKUP", "meta": "{\"customerName\":\"Christian Delivery\",\"contactNumber\":\"09123456789\",\"emailAddress\":\"a@gmail.com\",\"completionDateTime\":1583928900000,\"deliveryAddress\":\"Vermont Royale, Antipolo\",\"deliveryCity\":\"Antipolo\",\"province\":\"Rizal\",\"itemPrice\":200,\"dimension\":\"fff\",\"actualShippingCost\":50,\"codAmount\":250,\"lat\":14.5776292,\"long\":121.0463673,\"tags\":[\"-LI4Qgef9HIHhb2AzGzW\",\"-LK5fK2Pq--uEhN4T9UG\"],\"details\":\"my details\",\"remarks\":\"my remarks\",\"metaTags\":\"{\\\"-LI4Qgef9HIHhb2AzGzW\\\":{\\\"colorIndex\\\":1,\\\"label\\\":\\\"API\\\"},\\\"-LK5fK2Pq--uEhN4T9UG\\\":{\\\"colorIndex\\\":3,\\\"label\\\":\\\"Delivery\\\"}}\"}", "metaFields": {}, "items": [ { "name": "Sample item1", "quantity": 10, "unitPrice": 20, "declaredValue": 5, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } }, { "name": "Sample item2", "quantity": 15, "unitPrice": 140.34, "declaredValue": 500.55, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } }, { "name": "Sample item3", "quantity": 100, "unitPrice": 120.23, "declaredValue": 500.55, "dimensions": { "length": 2.55, "width": 1.56, "height": 1.28, "breadth": 5.29, "depth": 2.41, "weight": 1.51 } } ] } ] }
Sample URL Parameters:
{ "apiKey": "fb77c9653bf5e736d191b46bbfed7c2bd", "postId": "uuNzkYoOy1VI373BoKY9", "partnerId": "SANDBOX_DX" "isPSGC": true }
Sample Response:
Status: 200 OK! { "success": true, "result": [ { "postId": "uuNzkYoOy1VI373BoKY9", "customerName": "Christian Pick up", "contactNumber": "09123456789", "emailAddress": "a@gmail.com", "completionDateTime": 1583836200000, "pickupAddress": "Sitio barrio, Angeles Pampanga Philippines", "pickupCity": "CITY OF MANDALUYONG", "province": "SECOND DISTRICT", "lat": 14.5776292, "long": 121.0463673, "tags": [ "-LI4Qgef9HIHhb2AzGzW", "-LK5fMS1u-Qsv-G1tc9l" ], "metaTags": "{\"-LI4Qgef9HIHhb2AzGzW\":{\"colorIndex\":1,\"label\":\"API\"},\"-LK5fMS1u-Qsv-G1tc9l\":{\"colorIndex\":4,\"label\":\"Pick-up\"}}", "storeName": "", "remarks": "my remarks", "businessId": "SANDBOX_DEV", "businessName": "Sandbox_Dev", "businessStoreId": null, "storeId": null, "courierName": "Sandbox_DX", "createdAt": 1583381948826, "partnerId": "SANDBOX_DX", "refNo": "order-001", "status": "ACCEPTED", "isAutoReattempt": true, "subStatus":, "meta": "{\"customerName\":\"Christian Delivery\",\"contactNumber\":\"09123456789\",\"emailAddress\":\"a@gmail.com\",\"completionDateTime\":1583928900000,\"deliveryAddress\":\"Vermont Royale, Antipolo\",\"deliveryCity\":\"CITY OF ANTIPOLO\",\"province\":\"RIZAL\",\"itemPrice\":200,\"dimension\":\"fff\",\"actualShippingCost\":50,\"codAmount\":250,\"lat\":14.5776292,\"long\":121.0463673,\"tags\":[\"-LI4Qgef9HIHhb2AzGzW\",\"-LK5fK2Pq--uEhN4T9UG\"],\"details\":\"my details\",\"remarks\":\"my remarks\",\"metaTags\":\"{\\\"-LI4Qgef9HIHhb2AzGzW\\\":{\\\"colorIndex\\\":1,\\\"label\\\":\\\"API\\\"},\\\"-LK5fK2Pq--uEhN4T9UG\\\":{\\\"colorIndex\\\":3,\\\"label\\\":\\\"Delivery\\\"}}\"}", "metaFields": {} }, ] }
Update Fee PROVIDER
Description | To pass or update fees of a post. For providers only |
---|---|
Endpoint | /updateFee |
Method | POST |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" "Content-Type": "application/json" }
To use "x-access-token"
for our Login V2 successfully, “Auth-Token
” must no longer be defined in the headers.
Query parameters (URL)
{ "apiKey": "<apiKey will be acquired on login API>" }
There is no need to define the apiKey in the parameters for our LoginV2.
Request Body Fields
Field | Data Type | Required | Description |
---|---|---|---|
postId | string | yes | ID of post to be updated. |
remarks | string | no | short description or remarks of the update |
fees | array | yes | breakdown of fees |
Fees object fields
Field | Data Type | Required | Description |
---|---|---|---|
value | number | yes | amount of fee |
type | string | yes | type of fee, must be of the following:
|
List of fees must contain at least one value with fee type of shipping or return.
Type of fee must be unique to other fees within the list.
Sample Request Body
{ "postId": "Wq9FPWxCYVxNgrPrn08D", "remarks": "Shipping fee from upon booking.", "fees": [ { "value": 100, "type": "shipping" }, { "value": 20, "type": "insurance" } ] }
Sample Response
status: 200 OK! { "success": true, "result": "Post successfully updated." }
Update Meta Fields v2 PROVIDER
Description | To update tracking number and tracking url of pickup or delivery of a post. For providers only |
---|---|
Endpoint | /v2/updateMetaFields |
Method | POST |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" "Content-Type": "application/json" }
To use "x-access-token"
for our Login V2 successfully, “Auth-Token
” must no longer be defined in the headers.
Query parameters (URL)
{ "apiKey": "<apiKey will be acquired on login API>" }
There is no need to define the apiKey in the parameters for our LoginV2.
Request Body Fields
Field | Data Type | Required | Description |
---|---|---|---|
postId | string | yes | id of post to update. |
trackingNumber | string | no | tracking number |
trackingUrl | string | no | tracking URL |
Fields under pickup/delivery requires at least one field to update.
You may update the tracking of both or pickup/delivery only.
Undefined tracking number/url fields will not be updated.
Sample Request Body
{ "postId": "uuNzkYoOy1VI373BoKY9", "pickup": { "trackingNumber": "ORDER-001-PIC-ASV", "trackingUrl": "https://trackmyorder.com/track?id=ORDER-001-PIC-ASV" }, "delivery": { "trackingNumber": "ORDER-001-DEL-ASV", "trackingUrl": "https://trackmyorder.com/track?id=ORDER-001-DEL-ASV" } }
Sample Response
Status: 200 OK! { "success": true, "message": "Post successfully updated." }
Get Available Partners BUSINESS
Description | To get the list of available scheduled providers and its product information and rates based on location and dimensions. |
---|---|
Endpoint | /v3/getAvailablePartners |
Method | POST |
Get Available Partners is not yet available for partners with “on demand” service type.
Inches is used as a unit of measurement for length, width and height. (Please see sample request response).
Kg is used as a unit of measurement for weight. (Please see sample request response).
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" "Content-Type": "application/json" }
To use "x-access-token"
for our Login V2 successfully, “Auth-Token
” must no longer be defined in the headers.
Request Params
{ "apiKey": "<apiKey will be acquired on login API>", }
There is no need to define the apiKey in the parameters for our LoginV2.
Request Body
Field | Data type | Required | Description |
---|---|---|---|
serviceType | string | yes | can be any of the following: |
pickup | object | yes | object for pickup address |
delivery | object | yes | object for delivery address |
dimensions | object | no | object for dimensions |
weight | number | no | weight measurement of an item in kilograms |
Fields of pickup and delivery:
Field | Data Type | Required | Max Length | Description |
---|---|---|---|---|
province | string | yes | 60 | province |
city | string | yes | 60 | city |
barangay | string | no | 60 | barangay |
Fields of dimensions:
Field | Data Type | Required | Description |
---|---|---|---|
length | number | no | length measurement of an item in inches |
width | number | no | length measurement of an item in inches |
height | number | no | length measurement of an item in inches |
Sample Request Body
{ "serviceType": "Scheduled", "pickup": { "province": "metro manila", "city": "quezon city", "barangay": "Katipunan" }, "delivery": { "province": "rizal", "city": "antipolo city", "barangay": "san juan" }, "dimensions": { "length": 100, "width": 18, "height": 6 }, "weight": 5 }
Sample Response (Serviceable area)
Status: 200 OK! { "success": true, "result": [ { "id": "SANDBOX_DX", "serviceType": "scheduled", "serviceableAreas": [ { "pickup": { "province": "METRO MANILA", "city": "QUEZON CITY", "barangay": "KATIPUNAN" } }, { "delivery": { "province": "RIZAL", "city": "ANTIPOLO CITY", "barangay": "SAN JUAN" } } ], "estimatedDeliveryDays": 5, "destinations": [ "NCR", "REGION 4-A" ], "products": [ { "size": "L", "price": 200, "weight": 20 } ] }, { "id": "SANDBOX_PROVIDER", "serviceType": "scheduled", "serviceableAreas": [ { "pickup": { "province": "METRO MANILA", "city": "QUEZON CITY", "barangay": "KATIPUNAN" } }, { "delivery": { "province": "RIZAL", "city": "ANTIPOLO CITY", "barangay": "SAN JUAN" } } ], "estimatedDeliveryDays": 9, "destinations": [ "REGION 4-A", "NCR" ], "products": [ { "size": "XL", "price": 300, "weight": 6 } ] } ] }
Sample Response (Non Serviceable Area)
Status: 200 OK! { "success": true, "result": [] }
Error Messages:
Invalid Delivery Location
Status: 400 Bad Request { "success": false, "message": "Invalid delivery location" }
Invalid Pickup Location
Status: 400 Bad Request { "success": false, "message": "Invalid pickup location" }
Service type “onDemand”
Status: 400 Bad Request { "success": false, "message": ""The Service Type: On Demand is currently NOT available for this endpoint. }
Get On Demand Quotation BUSINESSPROVIDER
Description | To provide rates from different providers depending on selected vehicle, pickup and delivery address. |
---|---|
Endpoint | /v3/getOnDemandQuotation |
Method | POST |
Request Headers
Login V1
{ "Auth-Token": "<Auth token acquired on api LOGIN>", "Content-Type": "application/json" }
Login V2
As an alternative, “x-access-token” for our login v2 can be used instead of using the “auth-token” for our login v1. Value for it will be “Bearer {{accessToken}}“. See below:
{ "x-access-token": "Bearer <Access token acquired on api LOGIN V2>" "Content-Type": "application/json" }
To use "x-access-token"
for our Login V2 successfully, “Auth-Token
” must no longer be defined in the headers.
Query parameters (URL)
{ "apiKey": "<apiKey will be acquired on login API>" }
There is no need to define the apiKey in the parameters for our LoginV2.
Request Body Fields
Field | Data Type | Required | Description |
---|---|---|---|
couriers | array | yes | Array of provider. Empty array will return all on demand provider quote.
|
pickup_province | string | yes | Pickup Province |
localeKey | string | yes | Default value: “en_PH“ |
string | yes | Pickup Full Name | |
pickup.phone | string | yes | Pickup Contact Number |
pickup.address | string | yes | Pickup Address |
pickup.lat | number | yes | Pickup Latitude |
pickup.long | number | yes | Pickup Longitude |
string | yes | Delivery Full Name | |
delivery.phone | string | yes | Delivery Contact Number |
delivery.address | string | yes | Delivery Address |
delivery.lat | number | yes | Delivery Latitude |
delivery.long | number | yes | Delivery Longitude |
remarks | string | no | Remarks |
scheduleAt | number | yes | Date and Time in milliseconds |
serviceType | string | yes |
|
dimensions.height | number | yes | Height of package in inches |
dimensions.width | number | yes | Width of package in inches |
dimensions.depth | number | yes | Depth of package in inches |
dimensions.weight | number | yes | Weight of package in kilograms |
Sample Request Body
{ "couriers": ["grab", "lalamove"], "pickup_province": "Metro Manila", "data": { "localeKey": "en_PH", "pickup": { "name": "Mariel Quibal", "phone": "09561441650", "address": "San agustine ave blk 2 lot 41 Asilo Ville Pinagbuhatan Pasig City Metro Manila", "lat": 14.559774, "long": 121.086519 }, "delivery": { "name": "Mara Quibal", "phone": "09561441650", "address": "Unit 802, EcoTower, 32nd Street corner 9th Avenue, BGC, Taguig, 1634 Metro Manila", "lat": 14.5528425, "long": 121.0518742 }, "remarks": "sample remarks", "scheduleAt": 1613566801000, "vehicleType": "MOTORCYCLE", "dimensions": { "height": 5, "width": 5, "depth": 5, "weight": 5 } } }
Sample Response
{ "success": true, "result": [ { "courier": "GRAB", "error": "Bad Input" }, { "courier": "LALAMOVE", "rate": 113, "vehicleType": "MOTORCYCLE" } ] }
Refresh Token BUSINESSPROVIDER
Description | Renew Access Token and Refresh Token of LoginV2 before expiration. |
---|---|
Endpoint | /refreshToken |
Method | POST |
Request Headers
KEY | VALUE |
---|---|
Content-Type | application/json |
Request Body
Field | Data type | Required | Description |
---|---|---|---|
refreshToken | string | yes | Value should be “Bearer” plus the last generated Refresh token |
Sample Request body
{ "refreshToken": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnQiOiJTQU5EQk9YX0RFViIsImxtaUF1dGhLZXkiOiIyRjlCNTdGQTlDNzRGOEUwQ0YyM0NCMDUyQjJDNDM4RTBBRDhEOTUxREE5QzczQkM1QjZEQUYxOEZDMDNFMjVBIiwiZW1haWwiOiJjaHJpc0BkZXYuZmxlZXQucGgiLCJjbGllbnRBcGlLZXkiOiJiMmY1YzVhNi1hZGIwLTQ5MTktODZkMy1mMzIwNTdlN2RlZGMiLCJpYXQiOjE2NTA5NDA0MzUsImV4cCI6MTY1MzUzMjQzNX0.eKG-NTpoApJ314nQ2Vgj8mZF8QrwV7oUuEmZLif3JrI" }
Sample Response
{ "success": true, "results": { "accessTokenExpiresAt": 1650957491706, "refreshTokenExpiresAt": 1653548291707, "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnQiOiJTQU5EQk9YX0RFViIsImxtaUF1dGhLZXkiOiIyRjlCNTdGQTlDNzRGOEUwQ0YyM0NCMDUyQjJDNDM4RTBBRDhEOTUxREE5QzczQkM1QjZEQUYxOEZDMDNFMjVBIiwiZW1haWwiOiJjaHJpc0BkZXYuZmxlZXQucGgiLCJpYXQiOjE2NTA5NTYyOTEsImV4cCI6MTY1MDk1NzQ5MX0.ZVnswQ18zZB81qUagssdwGjiedhHwanwpaJjUlKnQmg", "refreshToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjbGllbnQiOiJTQU5EQk9YX0RFViIsImxtaUF1dGhLZXkiOiIyRjlCNTdGQTlDNzRGOEUwQ0YyM0NCMDUyQjJDNDM4RTBBRDhEOTUxREE5QzczQkM1QjZEQUYxOEZDMDNFMjVBIiwiZW1haWwiOiJjaHJpc0BkZXYuZmxlZXQucGgiLCJjbGllbnRBcGlLZXkiOiJmZThkN2Y3Ni0xNzA0LTQ5YjQtYTUwZi1hZDRjZTI5MmY1OWEiLCJpYXQiOjE2NTA5NTYyOTEsImV4cCI6MTY1MzU0ODI5MX0.oxifGyrkJw3sk5ftukPLO_IzH2A0ttGEU1FbRVjax7o" } }
Error messages
Invalid/Expired value in ‘refreshToken’ field
Status: 401 Unauthorized { "success": false, "results": "Invalid Refresh Token or Refresh token expired." }
No Refresh token defined
Status: 401 Unauthorized { "success": false, "results": "Missing Refresh Token." }
Cancel Post API BUSINESS
Description | To cancel post via API |
---|---|
Endpoint | /v3/cancelPost |
Method | POST |
Request Headers
Content-Type: application/json auth-token": "<Auth token acquired on api LOGIN>"
URL Query parameters
{ "apiKey": "<apiKey will be acquired on login API>" }
Sample Request Body
{ "trackingNumber": "720664", "postId": "ubyhvwENm8VRbsMPDGFg", "courierId": "SANDBOX_QA" }
Key | Required | Description |
---|---|---|
trackingNumber | yes |
|
postId | yes |
|
courierId | yes |
|
Sample Response
Status: 200 OK! { "message": "Success", }
List of Statuses
Status | Is substatus? | Description |
| No | this can only be triggered in web if business or customers assign a post/an opportunity to provider |
| No | this can only be triggered through manual accept in their DPH account or |
| if AUTO ACCEPT is toggled on, post will automatically be accepted | |
| No | this can only be triggered through manual reject in their DPH account and is returned in /getpost as “MPREJECTED” |
| No | Provider is assigning a rider for the order. For on-demand providers only. |
| Yes, under “STARTED” main status | Order is for pickup |
| Yes, under “STARTED” main status | Order has been picked up |
| Yes, under “STARTED” main status | Courier has successfully delivered order to hub. For scheduled providers only. |
| Yes, under “STARTED” main status | Order is out for delivery |
| No | Order has been delivered |
| No | Failed to pickup order |
| No | Failed to deliver order |
| No | Failed to return order |
| No | Cancel order |
| No | Order is out for return |
| No | Order has been returned to sender |
| No | Push an event update on job history without updating the status of the post. Please fill up the remarks field. |
Responses (Success and Errors)
Status | Message | Description |
---|---|---|
200 | OK | Success |
400 | Bad Request | We could not understand the request due to invalid syntax or invalid parameters. |
401 | Unauthorized | Your apiKey can be missing or invalid. Your auth-token is not valid or may have already expired. |
500 | Internal Server Error | Unhandled exception. Please contact the production team when you encounter this error. |
- No labels