Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Version History

« Previous Version 70 Next »

Endpoint URL

Staging

https://us-central1-fleet-staging-2333a.cloudfunctions.net

Production

will be provided after SIT


 1. Login (Version 1) and Get Session

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

email

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.
Expires after 20 minutes.

  • 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."
}
 1.1 Login v2

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

email

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.

Error Messages:

Invalid Email

Status: 401 Unauthorized
{
    "success": false,
    "results": "INVALID_EMAIL"
}

Invalid Password

Status: 401 Unauthorized
{
    "success": false,
    "results": "INVALID_PASSWORD"
}
 2. Get Partners

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"
        }
    ]
}

 3. Get List of Areas

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"                
                ]
            }
        }
    ]
}
 4. Get Stores/Hubs

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
}
 5. Get Provider's Create Post v3 Template

Get Provider's Create Post v3 Template BUSINESS

Description

Get provider’s create post template and meta fields schema for createPost v3 API.
For integration only

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

 6. Get Quotation

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."
}
 7. Create Post v3

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:

Shopify

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
Format: YYYY-MM-DDTHH:mm


If past dated, it will be overridden by the current time + 5 mins.

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.
Format: YYYY-MM-DDTHH:mm

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.

https://ctoglobal.atlassian.net/wiki/spaces/ITX/pages/618921985/Fleet+-+API#Get-List-of-Tags

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:
(empty string for on demand providers)
S
M
L
XL

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."
}
 8. Update Post Status

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

ASSIGNED

No

this can only be triggered in web if business or customers assign a post/an opportunity to provider

ACCEPTED

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

REJECTED

No

this can only be triggered through manual reject in their DPH account and is returned in /getpost as “MPREJECTED”

ASSIGNING_RIDER

No

Provider is assigning a rider for the order. For on-demand providers only.

START_PICKUP

Yes, under “STARTED” main status

Order is for pickup

DONE_PICKUP

Yes, under “STARTED” main status

Order has been picked up

ARRIVED_AT_HUB

Yes, under “STARTED” main status

Courier has successfully delivered order to hub. For scheduled providers only.

START_DELIVERY

Yes, under “STARTED” main status

Order is out for delivery

DONE

No

Order has been delivered

FAILED_PICKUP

No

Failed to pickup order

FAILED_DELIVERY

No

Failed to deliver order

FAILED_RETURN

No

Failed to return order

CANCEL

No

Cancel order

IN_TRANSIT_FOR_RETURN

No

Order is out for return

RETURNED

No

Order has been returned to sender

UPDATE

No

Push an event update on job history without updating the status of the post. Please fill up the remarks field.

 9. Get Post

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:

  • post

  • opportunity

Defaults to opportunity if empty or undefined.

status

no

Filter by status.

Set to DONE to get delivered posts.

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": {}
        },
	]
}

 10. Update Fee

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:

  • shipping

  • return

  • insurance

  • handling

  • others

  • 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."
}
 11. Update Meta Fields v2

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."
}

 12. Get Available Partners

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:
onDemand
scheduled

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.
}

 13. Get On Demand Quotation

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.

Lalamove, MrSpeedy, Transportify, Grab

pickup_province

string

yes

Pickup Province

localeKey

string

yes

Default value: “en_PH“

pickup.name

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

delivery.name

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

MOTORCYCLE, CAR, VAN, MPV, L300, ECONOMY, PICKUP_TRUCK, LONG_PICKUP_TRUCK, WING_VAN

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"
        }
    ]
}
 14. Refresh Token

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 (On Demand)

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

  • Tracking Number of provider

postId

yes

  • Post Id of order

courierId

yes

  • Provider of the order

Sample Response

Status: 200 OK!
{
    "message": "Success",
}

List of Statuses

 Click here to expand...

Status

Is substatus?

Description

QUEUED

No

This is for On-demand providers only. Order will be queued before creating the order to the Provider.

ASSIGNED

No

this can only be triggered in web if business or customers assign a post/an opportunity to provider

ACCEPTED

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

REJECTED

No

this can only be triggered through manual reject in their DPH account and is returned in /getpost as “MPREJECTED”

ASSIGNING_RIDER

No

Provider is assigning a rider for the order. For on-demand providers only.

START_PICKUP

Yes, under “STARTED” main status

Order is for pickup

DONE_PICKUP

Yes, under “STARTED” main status

Order has been picked up

ARRIVED_AT_HUB

Yes, under “STARTED” main status

Courier has successfully delivered order to hub. For scheduled providers only.

START_DELIVERY

Yes, under “STARTED” main status

Order is out for delivery

DONE

No

Order has been delivered

FAILED_PICKUP

No

Failed to pickup order

FAILED_DELIVERY

No

Failed to deliver order

FAILED_RETURN

No

Failed to return order

CANCEL

No

Cancel order

IN_TRANSIT_FOR_RETURN

No

Order is out for return

RETURNED

No

Order has been returned to sender

UPDATE

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