MrSpeedy Business API 1.0

Overview

Business API allows you to automatically place delivery orders in MrSpeedy. You also can manage your orders and subscribe to updates on any changes in them.

First you should register as a client at apitest.mrspeedy.co. If you are unable to receive the SMS code when registering, please ask for it at [email protected], including your phone number in the email.

Integration of MrSpeedy Business API is done in two steps:

  1. Setting everything up using test environment at robotapitest.mrspeedy.co;
  2. When it works with apitest, you can switch to production at robot.mrspeedy.co.

When you have successfully tested Business API integration with apitest.mrspeedy.co, please email us at [email protected], so we can enable your access to Business API in production environment.

URL for test requests: https://robotapitest.mrspeedy.co/api/business/1.0

URL for production requests: https://robot.mrspeedy.co/api/business/1.0

API versions are increased with incompatible changes, e.g. changes to data types or removal of request parameters. Non-latest API versions will still be supported for some reasonable time. New requests and parameters in existing requests (e.g. a new field in order structure) can be added at any time without new API versions. You should ignore unknown fields in any API data structures.

If you have any questions or suggestions about the API, please email our support at [email protected].

Requests

All requests to Business API must be made via HTTPS. Only GET and POST request methods are supported. POST requests should send all parameters in the body of the request in JSON format and UTF-8 encoding; GET requests should send parameters in the query string.

All requests must include a HTTP header X-DV-Auth-Token.

  • X-DV-Auth-Token string Required

    Secret auth token. Must be sent as a HTTP header.

    Your auth token can be found in your Personal cabinet.

    Important! Never put your auth token in any public places!
    If your token is compromised, it will be possible for anybody to place orders in your name.
    Tokens can be changed in your Personal cabinet.

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' 'https://robotapitest.mrspeedy.co/api/business/1.0' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true } 

Responses

Business API responses are in JSON format and UTF-8 encoding.

Successful responses will have HTTP code 200 (OK). Response JSON will always have is_successful field.

  • is_successful boolean

    Whether the request was successful or not.

    Successful responses will have true here.

If there was an error, API response will have HTTP code 400 (Bad Request). The response JSON will have the following fields:

  • is_successful boolean

    Whether the request was successful or not.

    In case of any errors it will be false.

  • errors list

    List of error codes.

    Request error codes

  • parameter_errors object / null

    Error codes for request parameters. If errors field contains error code invalid_parameters, this field will have detailed parameter errors. Structure of this object corresponds to structure of the request.

    Parameter error codes

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"points":[{"address":"JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310","contact_person":{"phone":"6288800000001"}},{}]}' 'https://robotapitest.mrspeedy.co/api/business/1.0/create-order' 
HTTP/1.1 400 Bad Request Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": false,     "errors": ["invalid_parameters"],     "parameter_errors": {         "matter": ["required"],         "points": [             null,             {                 "address": ["required"],                 "contact_person": {                     "phone": ["required"]                 }             }         ]     } } 

API methods

Order price calculation

POST https://robotapitest.mrspeedy.co/api/business/1.0/calculate-order

Use this method to calculate order prices and validate parameters before actually placing the order. It is possible to calculate an incomplete order, but such calculations may be imprecise.

In response to an empty request this method will respond with minimal order price.

You can learn more about our prices at the tariffs page.

Request parameters

  • matter string / null

    Delivery contents. Maximum length is 5,000 characters.

    Try to make this description useful for the courier. For example, putting a category from your catalog here is better than only a concrete model number. If the item is fragile or oversized, please mention it here.

    Default value: null.

  • vehicle_type_id integer

    Vehicle type.

    Default value: 8 (Motorbike).

    Vehicle types

  • total_weight_kg integer

    Total weight in kilograms.

    Default value: 0.

  • insurance_amount money

    Insured amount.

    Default value: "0.00".

  • is_client_notification_enabled boolean

    Whether to send SMS notifications to the client.

    Default value: false.

  • is_contact_person_notification_enabled boolean

    Whether to send SMS notifications to recipients on addresses.

    Default value: false.

  • loaders_count integer

    Number of necessary loaders to move the delivered goods, including the driver. Maximum is 11.

    Default value: 0.

  • backpayment_details string / null

    Details of the money transfer for backpayment. A credit card number or other payment system information. Maximum length is 300 characters.

    Default value: null.

  • points list

    List of addresses (points) for the courier to visit. Maximum is 99 points.

    Default value: [].

    Point parameters

    • address string / null

      Street address. Maximum length is 350 characters.

      We use Google Maps API to geocode addresses.

      Default value: null.

    • contact_person object

      Contact person on the address.

      Contact person parameters

      • phone phone / null

        Phone number of the person at the address.

        Default value: null.

      • name string / null

        Name of the person on the address. Maximum length is 350 characters.

        Default value: null.

    • client_order_id string / null

      Your eshop's order ID. It will be sent in notifications instead of our delivery order ID. Maximum length is 350 characters.

      Default value: null.

    • latitude coordinate / null

      Latitude of the location.

      Default value: null.

    • longitude coordinate / null

      Longitude of the location.

      Default value: null.

    • required_start_datetime timestamp / null

      How early the courier may arrive at the address.

      Default value: null.

    • required_finish_datetime timestamp / null

      How late the courier may arrive at the address.

      Default value: null.

    • taking_amount money

      Backpayment sum to receive from the contact person at the address.

      Default value: "0.00".

    • buyout_amount money

      Buyout sum the courier pays to the contact person at the address.

      Default value: "0.00".

    • note string / null

      Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

      Default value: null.

Response parameters

  • is_successful boolean

    Whether the request was successful or not.

  • order object

    Calculated order data.

    Order parameters

    • matter string / null

      Delivery contents.

    • vehicle_type_id integer

      Vehicle type.

      Vehicle types

    • total_weight_kg integer

      Total weight in kilograms.

    • is_client_notification_enabled boolean

      Whether to send SMS notifications to the client.

    • is_contact_person_notification_enabled boolean

      Whether to send SMS notifications to recipients on addresses.

    • loaders_count integer

      Number of necessary loaders to move the delivered goods, including the driver.

    • points list

      List of addresses (points) for the courier to visit.

      Point parameters

      • address string / null

        Street address.

      • contact_person object

        Contact person on the address.

        Contact person parameters

        • phone phone / null

          Phone number of the person at the address.

        • name string / null

          Name of the person on the address.

      • client_order_id string / null

        Your eshop's order ID. It will be sent in notifications instead of our delivery order ID.

      • latitude coordinate / null

        Latitude of the location.

      • longitude coordinate / null

        Longitude of the location.

      • required_start_datetime timestamp / null

        How early the courier may arrive at the address.

      • required_finish_datetime timestamp / null

        How late the courier may arrive at the address.

      • taking_amount money

        Backpayment sum to receive from the contact person at the address.

      • buyout_amount money

        Buyout sum the courier pays to the contact person at the address.

      • note string / null

        Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

    • payment_amount money

      Order price.

    • delivery_fee_amount money

      Delivery fee.

      Part of order price (payment_amount).

    • weight_fee_amount money

      Large weight fee.

      Part of order price (payment_amount).

    • insurance_amount money

      Insured amount.

    • insurance_fee_amount money

      Insurance fee.

      Part of order price (payment_amount).

    • loading_fee_amount money

      Loading / heavy lifting fee.

      Part of order price (payment_amount).

    • money_transfer_fee_amount money

      Money handling fee: backpayment transfer, buyout operations.

      Part of order price (payment_amount).

    • suburban_delivery_fee_amount money

      Extra fee for suburban parts of the courier's route.

      Part of order price (payment_amount).

    • discount_amount money

      Discount amount.

      Part of order price (payment_amount).

    • backpayment_details string / null

      Details of the money transfer for backpayment. A credit card number or other payment system information.

  • warnings list

    Warnings. You will receive these warnings as error codes if you try to create an order with the same data you calculated it with. Empty list of warnings means the order data is valid.

    Request error codes

  • parameter_warnings object

    Parameter warnings. You will receive these warnings as parameter error codes if you try to create an order with the same data you calculated it with.

    Parameter error codes

Request example

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"matter":"Documents","points":[{"address":"JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310"},{"address":"Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540"}]}' 'https://robotapitest.mrspeedy.co/api/business/1.0/calculate-order' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": null,         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": null,         "matter": "Documents",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": null,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": null             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": null,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": null             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     },     "warnings": ["invalid_parameters"],     "parameter_warnings": {         "points": [{             "contact_person": {                 "phone": ["required"]             }         }, {             "contact_person": {                 "phone": ["required"]             }         }]     } } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/calculate-order'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $data = [     'matter' => 'Documents',     'points' => [         [             'address' => 'JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310',         ],         [             'address' => 'Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540',         ],     ], ];  $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); curl_setopt($curl, CURLOPT_POSTFIELDS, $json);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": null,         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": null,         "matter": "Documents",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": null,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": null             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": null,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": null             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     },     "warnings": ["invalid_parameters"],     "parameter_warnings": {         "points": [{             "contact_person": {                 "phone": ["required"]             }         }, {             "contact_person": {                 "phone": ["required"]             }         }]     } } 

Placing an order

POST https://robotapitest.mrspeedy.co/api/business/1.0/create-order

This API method creates a new delivery order.

Request parameters

  • matter string Required

    Delivery contents. Maximum length is 5,000 characters.

    Try to make this description useful for the courier. For example, putting a category from your catalog here is better than only a concrete model number. If the item is fragile or oversized, please mention it here.

  • vehicle_type_id integer

    Vehicle type.

    Default value: 8 (Motorbike).

    Vehicle types

  • total_weight_kg integer

    Total weight in kilograms.

    Default value: 0.

  • insurance_amount money

    Insured amount.

    Default value: "0.00".

  • is_client_notification_enabled boolean

    Whether to send SMS notifications to the client.

    Default value: false.

  • is_contact_person_notification_enabled boolean

    Whether to send SMS notifications to recipients on addresses.

    Default value: false.

  • loaders_count integer

    Number of necessary loaders to move the delivered goods, including the driver. Maximum is 11.

    Default value: 0.

  • backpayment_details string / null

    Details of the money transfer for backpayment. A credit card number or other payment system information. Maximum length is 300 characters.

    Default value: null.

  • points list Required

    List of addresses (points) for the courier to visit. The order can contain from 2 to 99 points.

    Default value: [].

    Point parameters

    • address string Required

      Street address. Maximum length is 350 characters.

      We use Google Maps API to geocode addresses.

    • contact_person object Required

      Contact person on the address.

      Contact person parameters

      • phone phone Required

        Phone number of the person at the address.

      • name string / null

        Name of the person on the address. Maximum length is 350 characters.

        Default value: null.

    • client_order_id string / null

      Your eshop's order ID. It will be sent in notifications instead of our delivery order ID. Maximum length is 350 characters.

      Default value: null.

    • latitude coordinate / null

      Latitude of the location.

      Default value: null.

    • longitude coordinate / null

      Longitude of the location.

      Default value: null.

    • required_start_datetime timestamp / null

      How early the courier may arrive at the address.

      Default value: null.

    • required_finish_datetime timestamp / null

      How late the courier may arrive at the address.

      Default value: null.

    • taking_amount money

      Backpayment sum to receive from the contact person at the address.

      Default value: "0.00".

    • buyout_amount money

      Buyout sum the courier pays to the contact person at the address.

      Default value: "0.00".

    • note string / null

      Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

      Default value: null.

Response parameters

  • is_successful boolean

    Whether the request was successful or not.

  • order object

    The created order.

    Order parameters

    • order_id integer

      Full order ID.

    • matter string

      Delivery contents.

    • order_name string

      Order name (short order ID).

    • vehicle_type_id integer

      Vehicle type.

      Vehicle types

    • created_datetime timestamp

      Order creation date and time.

    • finish_datetime timestamp / null

      Order completion date and time.

    • status string

      Order status.

      Order statuses

    • total_weight_kg integer

      Total weight in kilograms.

    • is_client_notification_enabled boolean

      Whether to send SMS notifications to the client.

    • is_contact_person_notification_enabled boolean

      Whether to send SMS notifications to recipients on addresses.

    • loaders_count integer

      Number of necessary loaders to move the delivered goods, including the driver.

    • points list

      List of addresses (points) for the courier to visit.

      Point parameters

      • point_id integer

        Point ID.

      • address string

        Street address.

      • contact_person object

        Contact person on the address.

        Contact person parameters

        • phone phone

          Phone number of the person at the address.

        • name string / null

          Name of the person on the address.

      • client_order_id string / null

        Your eshop's order ID. It will be sent in notifications instead of our delivery order ID.

      • latitude coordinate

        Latitude of the location.

      • longitude coordinate

        Longitude of the location.

      • required_start_datetime timestamp / null

        How early the courier may arrive at the address.

      • required_finish_datetime timestamp / null

        How late the courier may arrive at the address.

      • arrival_start_datetime timestamp / null

        Estimated courier arrival time, upper bound.

      • arrival_finish_datetime timestamp / null

        Estimated courier arrival time, lower bound.

      • courier_visit_datetime timestamp / null

        Actual courier arrival time.

      • taking_amount money

        Backpayment sum to receive from the contact person at the address.

      • buyout_amount money

        Buyout sum the courier pays to the contact person at the address.

      • note string / null

        Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

    • payment_amount money

      Order price.

    • delivery_fee_amount money

      Delivery fee.

      Part of order price (payment_amount).

    • weight_fee_amount money

      Large weight fee.

      Part of order price (payment_amount).

    • insurance_amount money

      Insured amount.

    • insurance_fee_amount money

      Insurance fee.

      Part of order price (payment_amount).

    • loading_fee_amount money

      Loading / heavy lifting fee.

      Part of order price (payment_amount).

    • money_transfer_fee_amount money

      Money handling fee: backpayment transfer, buyout operations.

      Part of order price (payment_amount).

    • suburban_delivery_fee_amount money

      Extra fee for suburban parts of the courier's route.

      Part of order price (payment_amount).

    • discount_amount money

      Discount amount.

      Part of order price (payment_amount).

    • backpayment_details string / null

      Details of the money transfer for backpayment. A credit card number or other payment system information.

    • backpayment_photo_url string / null

      URL of backpayment photo (receipt or other payment verification).

    • itinerary_document_url string / null

      URL of itinerary document.

    • waybill_document_url string / null

      URL of waybill document.

    • receipt_document_url string / null

      URL of a receipt for the courier to sign.

    • courier object / null

      Courier parameters.

      Courier parameters

      • courier_id integer

        Courier ID.

      • name string

        Name of the courier.

      • phone phone

        Phone of the courier.

      • photo_url string / null

        URL of the courier's photo.

      • latitude coordinate / null

        Latitude of the location.

        Only for active orders, if the courier is on the way.

      • longitude coordinate / null

        Longitude of the location.

        Only for active orders, if the courier is on the way.

Request example

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"matter":"Documents","points":[{"address":"JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310","contact_person":{"phone":"6288800000001"}},{"address":"Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540","contact_person":{"phone":"6288800000001"}}]}' 'https://robotapitest.mrspeedy.co/api/business/1.0/create-order' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Documents",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/calculate-order'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $data = [     'matter' => 'Documents',     'points' => [         [             'address' => 'JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310',             'contact_person' => [                 'phone' => '6288800000001',             ],         ],         [             'address' => 'Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540',             'contact_person' => [                 'phone' => '6288800000001',             ],         ],     ], ];  $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); curl_setopt($curl, CURLOPT_POSTFIELDS, $json);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Documents",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

Order editing

POST https://robotapitest.mrspeedy.co/api/business/1.0/edit-order

This API method can be used to edit an order in statuses: new, available, active or delayed (Order statuses).

Request parameters

  • order_id integer Required

    Full order ID.

To edit the order, send any number of extra parameters from order creation.
If modified value is valid, it will be applied to the order.
If a parameter is not sent with the request, its value will not be changed.
If a parameter is sent with null value, corresponding value will be removed from the order.

When editing a point, always send its ID along with changed values, otherwise a new point will be added to the order. Also, any points with IDs not mentioned in the request will be deleted.

See order editing examples to avoid pitfalls.

Response parameters

  • is_successful boolean

    Whether the request was successful or not.

  • order object

    Modified order data.

    Order parameters

    • order_id integer

      Full order ID.

    • matter string

      Delivery contents.

    • order_name string

      Order name (short order ID).

    • vehicle_type_id integer

      Vehicle type.

      Vehicle types

    • created_datetime timestamp

      Order creation date and time.

    • finish_datetime timestamp / null

      Order completion date and time.

    • status string

      Order status.

      Order statuses

    • total_weight_kg integer

      Total weight in kilograms.

    • is_client_notification_enabled boolean

      Whether to send SMS notifications to the client.

    • is_contact_person_notification_enabled boolean

      Whether to send SMS notifications to recipients on addresses.

    • loaders_count integer

      Number of necessary loaders to move the delivered goods, including the driver.

    • points list

      List of addresses (points) for the courier to visit.

      Point parameters

      • point_id integer

        Point ID.

      • address string

        Street address.

      • contact_person object

        Contact person on the address.

        Contact person parameters

        • phone phone

          Phone number of the person at the address.

        • name string / null

          Name of the person on the address.

      • client_order_id string / null

        Your eshop's order ID. It will be sent in notifications instead of our delivery order ID.

      • latitude coordinate

        Latitude of the location.

      • longitude coordinate

        Longitude of the location.

      • required_start_datetime timestamp / null

        How early the courier may arrive at the address.

      • required_finish_datetime timestamp / null

        How late the courier may arrive at the address.

      • arrival_start_datetime timestamp / null

        Estimated courier arrival time, upper bound.

      • arrival_finish_datetime timestamp / null

        Estimated courier arrival time, lower bound.

      • courier_visit_datetime timestamp / null

        Actual courier arrival time.

      • taking_amount money

        Backpayment sum to receive from the contact person at the address.

      • buyout_amount money

        Buyout sum the courier pays to the contact person at the address.

      • note string / null

        Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

    • payment_amount money

      Order price.

    • delivery_fee_amount money

      Delivery fee.

      Part of order price (payment_amount).

    • weight_fee_amount money

      Large weight fee.

      Part of order price (payment_amount).

    • insurance_amount money

      Insured amount.

    • insurance_fee_amount money

      Insurance fee.

      Part of order price (payment_amount).

    • loading_fee_amount money

      Loading / heavy lifting fee.

      Part of order price (payment_amount).

    • money_transfer_fee_amount money

      Money handling fee: backpayment transfer, buyout operations.

      Part of order price (payment_amount).

    • suburban_delivery_fee_amount money

      Extra fee for suburban parts of the courier's route.

      Part of order price (payment_amount).

    • discount_amount money

      Discount amount.

      Part of order price (payment_amount).

    • backpayment_details string / null

      Details of the money transfer for backpayment. A credit card number or other payment system information.

    • backpayment_photo_url string / null

      URL of backpayment photo (receipt or other payment verification).

    • itinerary_document_url string / null

      URL of itinerary document.

    • waybill_document_url string / null

      URL of waybill document.

    • receipt_document_url string / null

      URL of a receipt for the courier to sign.

    • courier object / null

      Courier parameters.

      Courier parameters

      • courier_id integer

        Courier ID.

      • name string

        Name of the courier.

      • phone phone

        Phone of the courier.

      • photo_url string / null

        URL of the courier's photo.

      • latitude coordinate / null

        Latitude of the location.

        Only for active orders, if the courier is on the way.

      • longitude coordinate / null

        Longitude of the location.

        Only for active orders, if the courier is on the way.

Request example

Example 1. Changing delivery details (matter) and removing backpayment details (backpayment_details).

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"order_id":1250032,"matter":"Flowers","backpayment_details":null}' 'https://robotapitest.mrspeedy.co/api/business/1.0/edit-order' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/edit-order'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $data = [     'order_id'            => 1250032,     'matter'              => 'Flowers',     'backpayment_details' => null, ];  $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); curl_setopt($curl, CURLOPT_POSTFIELDS, $json);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

Example 2. Modifying times on a point and adding a new point. First point should be kept as it was.

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"order_id":1250032,"points":[{"point_id":202685},{"point_id":202686,"required_start_datetime":"2018-10-18T03:04:27+07:00","required_finish_datetime":"2018-10-18T03:34:27+07:00"},{"address":"JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310","contact_person":{"phone":"6288800000001"}}]}' 'https://robotapitest.mrspeedy.co/api/business/1.0/edit-order' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202687,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T04:04:27+07:00",             "required_finish_datetime": "2018-10-18T04:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/edit-order'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $data = [     'order_id' => 1250032,     'points'   => [         [             'point_id' => 202685,         ],         [             'point_id'                 => 202686,             'required_start_datetime'  => '2018-10-18T03:04:27+07:00',             'required_finish_datetime' => '2018-10-18T03:34:27+07:00',         ],         [             'address' => 'JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310',             'contact_person' => [                 'phone' => '6288800000001',             ],         ],     ], ];  $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); curl_setopt($curl, CURLOPT_POSTFIELDS, $json);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202687,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T04:04:27+07:00",             "required_finish_datetime": "2018-10-18T04:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

Example 3. Removing third point from the order.

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"order_id":1250032,"points":[{"point_id":202685},{"point_id":202686}]}' 'https://robotapitest.mrspeedy.co/api/business/1.0/edit-order' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/edit-order'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $data = [     'order_id' => 1250032,     'points'   => [         [             'point_id' => 202685,         ],         [             'point_id' => 202686,         ],     ], ];  $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); curl_setopt($curl, CURLOPT_POSTFIELDS, $json);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

Canceling an order

POST https://robotapitest.mrspeedy.co/api/business/1.0/cancel-order

You may cancel an order in statuses: new, available, active or delayed (Order statuses). If a courier has visited any addresses, the order cannot be canceled.

Request parameters

  • order_id integer Required

    Full order ID to cancel.

Response parameters

  • is_successful boolean

    Whether the request was successful or not.

  • order object

    Canceled order data.

    Order parameters

    • order_id integer

      Full order ID.

    • matter string

      Delivery contents.

    • order_name string

      Order name (short order ID).

    • vehicle_type_id integer

      Vehicle type.

      Vehicle types

    • created_datetime timestamp

      Order creation date and time.

    • finish_datetime timestamp / null

      Order completion date and time.

    • status string

      Order status.

      Order statuses

    • total_weight_kg integer

      Total weight in kilograms.

    • is_client_notification_enabled boolean

      Whether to send SMS notifications to the client.

    • is_contact_person_notification_enabled boolean

      Whether to send SMS notifications to recipients on addresses.

    • loaders_count integer

      Number of necessary loaders to move the delivered goods, including the driver.

    • points list

      List of addresses (points) for the courier to visit.

      Point parameters

      • point_id integer

        Point ID.

      • address string

        Street address.

      • contact_person object

        Contact person on the address.

        Contact person parameters

        • phone phone

          Phone number of the person at the address.

        • name string / null

          Name of the person on the address.

      • client_order_id string / null

        Your eshop's order ID. It will be sent in notifications instead of our delivery order ID.

      • latitude coordinate

        Latitude of the location.

      • longitude coordinate

        Longitude of the location.

      • required_start_datetime timestamp / null

        How early the courier may arrive at the address.

      • required_finish_datetime timestamp / null

        How late the courier may arrive at the address.

      • arrival_start_datetime timestamp / null

        Estimated courier arrival time, upper bound.

      • arrival_finish_datetime timestamp / null

        Estimated courier arrival time, lower bound.

      • courier_visit_datetime timestamp / null

        Actual courier arrival time.

      • taking_amount money

        Backpayment sum to receive from the contact person at the address.

      • buyout_amount money

        Buyout sum the courier pays to the contact person at the address.

      • note string / null

        Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

    • payment_amount money

      Order price.

    • delivery_fee_amount money

      Delivery fee.

      Part of order price (payment_amount).

    • weight_fee_amount money

      Large weight fee.

      Part of order price (payment_amount).

    • insurance_amount money

      Insured amount.

    • insurance_fee_amount money

      Insurance fee.

      Part of order price (payment_amount).

    • loading_fee_amount money

      Loading / heavy lifting fee.

      Part of order price (payment_amount).

    • money_transfer_fee_amount money

      Money handling fee: backpayment transfer, buyout operations.

      Part of order price (payment_amount).

    • suburban_delivery_fee_amount money

      Extra fee for suburban parts of the courier's route.

      Part of order price (payment_amount).

    • discount_amount money

      Discount amount.

      Part of order price (payment_amount).

    • backpayment_details string / null

      Details of the money transfer for backpayment. A credit card number or other payment system information.

    • backpayment_photo_url string / null

      URL of backpayment photo (receipt or other payment verification).

    • itinerary_document_url string / null

      URL of itinerary document.

    • waybill_document_url string / null

      URL of waybill document.

    • receipt_document_url string / null

      URL of a receipt for the courier to sign.

    • courier object / null

      Courier parameters.

      Courier parameters

      • courier_id integer

        Courier ID.

      • name string

        Name of the courier.

      • phone phone

        Phone of the courier.

      • photo_url string / null

        URL of the courier's photo.

      • latitude coordinate / null

        Latitude of the location.

        Only for active orders, if the courier is on the way.

      • longitude coordinate / null

        Longitude of the location.

        Only for active orders, if the courier is on the way.

Request example

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"order_id":1250032}' 'https://robotapitest.mrspeedy.co/api/business/1.0/cancel-order' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "canceled",         "matter": "Documents",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/cancel-order'); curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $data = [     'order_id' => 1250032, ];  $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES); curl_setopt($curl, CURLOPT_POSTFIELDS, $json);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "canceled",         "matter": "Documents",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

List of orders

GET https://robotapitest.mrspeedy.co/api/business/1.0/orders

Use this API method to retrieve a list of your orders. The list is sorted by order_id, descending.

Request parameters

  • order_id integer / list

    Full order ID or order IDs list to search for.

    Default value: null.

  • status string

    Order statuses to search for.

    Default value: null.

    Order statuses

  • offset integer

    Number of orders to skip for paginaton.

    Default value: 0.

  • count integer

    Maximum number of orders to be returned. Cannot be higher than 50.

    Default value: 10.

Response parameters

  • is_successful boolean

    Whether the request was successful or not.

  • orders list

    List of orders.

    Order parameters

    • order_id integer

      Full order ID.

    • matter string

      Delivery contents.

    • order_name string

      Order name (short order ID).

    • vehicle_type_id integer

      Vehicle type.

      Vehicle types

    • created_datetime timestamp

      Order creation date and time.

    • finish_datetime timestamp / null

      Order completion date and time.

    • status string

      Order status.

      Order statuses

    • total_weight_kg integer

      Total weight in kilograms.

    • is_client_notification_enabled boolean

      Whether to send SMS notifications to the client.

    • is_contact_person_notification_enabled boolean

      Whether to send SMS notifications to recipients on addresses.

    • loaders_count integer

      Number of necessary loaders to move the delivered goods, including the driver.

    • points list

      List of addresses (points) for the courier to visit.

      Point parameters

      • point_id integer

        Point ID.

      • address string

        Street address.

      • contact_person object

        Contact person on the address.

        Contact person parameters

        • phone phone

          Phone number of the person at the address.

        • name string / null

          Name of the person on the address.

      • client_order_id string / null

        Your eshop's order ID. It will be sent in notifications instead of our delivery order ID.

      • latitude coordinate

        Latitude of the location.

      • longitude coordinate

        Longitude of the location.

      • required_start_datetime timestamp / null

        How early the courier may arrive at the address.

      • required_finish_datetime timestamp / null

        How late the courier may arrive at the address.

      • arrival_start_datetime timestamp / null

        Estimated courier arrival time, upper bound.

      • arrival_finish_datetime timestamp / null

        Estimated courier arrival time, lower bound.

      • courier_visit_datetime timestamp / null

        Actual courier arrival time.

      • taking_amount money

        Backpayment sum to receive from the contact person at the address.

      • buyout_amount money

        Buyout sum the courier pays to the contact person at the address.

      • note string / null

        Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

    • payment_amount money

      Order price.

    • delivery_fee_amount money

      Delivery fee.

      Part of order price (payment_amount).

    • weight_fee_amount money

      Large weight fee.

      Part of order price (payment_amount).

    • insurance_amount money

      Insured amount.

    • insurance_fee_amount money

      Insurance fee.

      Part of order price (payment_amount).

    • loading_fee_amount money

      Loading / heavy lifting fee.

      Part of order price (payment_amount).

    • money_transfer_fee_amount money

      Money handling fee: backpayment transfer, buyout operations.

      Part of order price (payment_amount).

    • suburban_delivery_fee_amount money

      Extra fee for suburban parts of the courier's route.

      Part of order price (payment_amount).

    • discount_amount money

      Discount amount.

      Part of order price (payment_amount).

    • backpayment_details string / null

      Details of the money transfer for backpayment. A credit card number or other payment system information.

    • backpayment_photo_url string / null

      URL of backpayment photo (receipt or other payment verification).

    • itinerary_document_url string / null

      URL of itinerary document.

    • waybill_document_url string / null

      URL of waybill document.

    • receipt_document_url string / null

      URL of a receipt for the courier to sign.

    • courier object / null

      Courier parameters.

      Courier parameters

      • courier_id integer

        Courier ID.

      • name string

        Name of the courier.

      • phone phone

        Phone of the courier.

      • photo_url string / null

        URL of the courier's photo.

      • latitude coordinate / null

        Latitude of the location.

        Only for active orders, if the courier is on the way.

      • longitude coordinate / null

        Longitude of the location.

        Only for active orders, if the courier is on the way.

  • orders_count integer

    Total number of found orders for pagination.

Request example

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' 'https://robotapitest.mrspeedy.co/api/business/1.0/orders?status=available' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "orders": [{         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     }, {         "order_id": 1250035,         "order_name": "50035",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202694,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202695,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     }],     "orders_count": 2 } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/edit-order?status=available'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "orders": [{         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     }, {         "order_id": 1250035,         "order_name": "50035",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Flowers",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202694,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202695,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     }],     "orders_count": 2 } 

Courier info and courier location

GET https://robotapitest.mrspeedy.co/api/business/1.0/courier

Use this API method to retrieve a courier info for your order.

If order has status active (Order statuses) and the courier is on the way, courier location will be returned.

Request parameters

  • order_id integer Required

    Full order ID to search courier for.

Response parameters

  • is_successful boolean

    Whether the request was successful or not.

  • courier object / null

    Courier parameters.

    Courier parameters

    • courier_id integer

      Courier ID.

    • name string

      Name of the courier.

    • phone phone

      Phone of the courier.

    • photo_url string / null

      URL of the courier's photo.

    • latitude coordinate / null

      Latitude of the location.

      Only for active orders, if the courier is on the way.

    • longitude coordinate / null

      Longitude of the location.

      Only for active orders, if the courier is on the way.

Request example

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' 'https://robotapitest.mrspeedy.co/api/business/1.0/courier?order_id=1250032' 
HTTP/1.1 200 OK Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": true,     "courier": {         "courier_id": 72384,         "name": "Name",         "phone": "6288800000001",         "photo_url": null,         "latitude": "-6.2914558",         "longitude": "106.8322649"     } } 

PHP

<?php  $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://robotapitest.mrspeedy.co/api/business/1.0/courier?order_id=1250032'); curl_setopt($curl, CURLOPT_HTTPHEADER, ['X-DV-Auth-Token: SECRET_AUTH_TOKEN']); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);  $result = curl_exec($curl); if ($result === false) {     throw new Exception(curl_error($curl), curl_errno($curl)); }  echo $result; 
{     "is_successful": true,     "courier": {         "courier_id": 72384,         "name": "Name",         "phone": "6288800000001",         "photo_url": null,         "latitude": "-6.2914558",         "longitude": "106.8322649"     } } 

Notification abount order changes

You may enter a Callback URL in your Personal cabinet and we will send notifications about order changes to that URL.

Data will be sent via HTTP method POST in JSON format and UTF-8 encoding.

Request parameters

  • X-DV-Signature string

    Signature of the request data. Use it to verify that the request actually came from our servers.

    The signature will be sent as a HTTP header.

    To verify the signature, calculate a HMAC hash using SHA256 and Callback Secret Key, which can be found in your Personal cabinet.

  • event_datetime timestamp

    Order change date and time.

  • order object

    Order data.

    Order parameters

    • order_id integer

      Full order ID.

    • matter string

      Delivery contents.

    • order_name string

      Order name (short order ID).

    • vehicle_type_id integer

      Vehicle type.

      Vehicle types

    • created_datetime timestamp

      Order creation date and time.

    • finish_datetime timestamp / null

      Order completion date and time.

    • status string

      Order status.

      Order statuses

    • total_weight_kg integer

      Total weight in kilograms.

    • is_client_notification_enabled boolean

      Whether to send SMS notifications to the client.

    • is_contact_person_notification_enabled boolean

      Whether to send SMS notifications to recipients on addresses.

    • loaders_count integer

      Number of necessary loaders to move the delivered goods, including the driver.

    • points list

      List of addresses (points) for the courier to visit.

      Point parameters

      • point_id integer

        Point ID.

      • address string

        Street address.

      • contact_person object

        Contact person on the address.

        Contact person parameters

        • phone phone

          Phone number of the person at the address.

        • name string / null

          Name of the person on the address.

      • client_order_id string / null

        Your eshop's order ID. It will be sent in notifications instead of our delivery order ID.

      • latitude coordinate

        Latitude of the location.

      • longitude coordinate

        Longitude of the location.

      • required_start_datetime timestamp / null

        How early the courier may arrive at the address.

      • required_finish_datetime timestamp / null

        How late the courier may arrive at the address.

      • arrival_start_datetime timestamp / null

        Estimated courier arrival time, upper bound.

      • arrival_finish_datetime timestamp / null

        Estimated courier arrival time, lower bound.

      • courier_visit_datetime timestamp / null

        Actual courier arrival time.

      • taking_amount money

        Backpayment sum to receive from the contact person at the address.

      • buyout_amount money

        Buyout sum the courier pays to the contact person at the address.

      • note string / null

        Additional information for the courier: office or appartment number, company name, whether any documents are required to enter the building.

    • payment_amount money

      Order price.

    • delivery_fee_amount money

      Delivery fee.

      Part of order price (payment_amount).

    • weight_fee_amount money

      Large weight fee.

      Part of order price (payment_amount).

    • insurance_amount money

      Insured amount.

    • insurance_fee_amount money

      Insurance fee.

      Part of order price (payment_amount).

    • loading_fee_amount money

      Loading / heavy lifting fee.

      Part of order price (payment_amount).

    • money_transfer_fee_amount money

      Money handling fee: backpayment transfer, buyout operations.

      Part of order price (payment_amount).

    • suburban_delivery_fee_amount money

      Extra fee for suburban parts of the courier's route.

      Part of order price (payment_amount).

    • discount_amount money

      Discount amount.

      Part of order price (payment_amount).

    • backpayment_details string / null

      Details of the money transfer for backpayment. A credit card number or other payment system information.

    • backpayment_photo_url string / null

      URL of backpayment photo (receipt or other payment verification).

    • itinerary_document_url string / null

      URL of itinerary document.

    • waybill_document_url string / null

      URL of waybill document.

    • receipt_document_url string / null

      URL of a receipt for the courier to sign.

    • courier object / null

      Courier parameters.

      Courier parameters

      • courier_id integer

        Courier ID.

      • name string

        Name of the courier.

      • phone phone

        Phone of the courier.

      • photo_url string / null

        URL of the courier's photo.

      • latitude coordinate / null

        Latitude of the location.

        Only for active orders, if the courier is on the way.

      • longitude coordinate / null

        Longitude of the location.

        Only for active orders, if the courier is on the way.

If your URL responds with any HTTP status other than 200 (OK), our server will treat it as an error. We will then retry to send the request with increasing intervals between attempts for 24 hours until we get HTTP status 200 in response.

If a successful response was not received after 24 hours, we will stop retrying. In this case an email notification will be sent to your address.

Example of a callback handler

PHP

<?php  if (!isset($_SERVER['HTTP_X_DV_SIGNATURE'])) {     echo 'Error: Signature not found';     exit; }  $data = file_get_contents('php://input');  $signature = hash_hmac('sha256', $data, 'CALLBACK_SECRET_KEY'); if ($signature != $_SERVER['HTTP_X_DV_SIGNATURE']) {     echo 'Error: Signature is not found';     exit; }  echo $data; 
{     "event_datetime": "2018-10-18T01:34:27+07:00",     "order": {         "order_id": 1250032,         "order_name": "50032",         "vehicle_type_id": 8,         "created_datetime": "2018-10-18T01:34:27+07:00",         "finish_datetime": null,         "status": "available",         "matter": "Documents",         "total_weight_kg": 0,         "is_client_notification_enabled": false,         "is_contact_person_notification_enabled": false,         "loaders_count": 0,         "backpayment_details": null,         "points": [{             "point_id": 202685,             "client_order_id": null,             "address": "JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310",             "latitude": "-6.3037234",             "longitude": "106.6886525",             "required_start_datetime": "2018-10-18T02:04:27+07:00",             "required_finish_datetime": "2018-10-18T02:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }, {             "point_id": 202686,             "client_order_id": null,             "address": "Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540",             "latitude": "-6.2914558",             "longitude": "106.8322649",             "required_start_datetime": "2018-10-18T03:04:27+07:00",             "required_finish_datetime": "2018-10-18T03:34:27+07:00",             "arrival_start_datetime": null,             "arrival_finish_datetime": null,             "courier_visit_datetime": null,             "contact_person": {                 "name": null,                 "phone": "6288800000001"             },             "taking_amount": "0.00",             "buyout_amount": "0.00",             "note": null         }],         "payment_amount": "15000.00",         "delivery_fee_amount": "15000.00",         "weight_fee_amount": "0.00",         "insurance_amount": "0.00",         "insurance_fee_amount": "0.00",         "loading_fee_amount": "0.00",         "money_transfer_fee_amount": "0.00",         "suburban_delivery_fee_amount": "0.00",         "discount_amount": "0.00",         "backpayment_amount": "0.00",         "backpayment_photo_url": null,         "itinerary_document_url": null,         "waybill_document_url": null,         "receipt_document_url": null,         "courier": null     } } 

Parameter data types

  • boolean

    Boolean value: true or false.

  • integer

    Integer number without fractions.

  • string

    A JSON string. Example: "active".

  • timestamp

    Date and time according to ISO 8601: YYYY-MM-DDTHH:MM:SSZ. Example: "2018-10-18T01:34:27+07:00".

    Please use this exact format with semicolon in the timezone. Other ISO 8601 variants are not supported by Business API.

  • float

    Floating point number with fractional part.

  • list

    A JSON list. Example: [{"address":"JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310"}, {"address":"Jl. Raya Ragunan No.39, RT.1/RW.2, Ps. Minggu, Kota Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12540"}].

  • object

    A JSON object. Example: {"address":"JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310"}.

  • money

    Money amount (Rp). This is a JSON string to prevent rounding errors. Examples: "190", "-49".

  • phone

    A JSON string with phone number. Example: "6288800000001".

  • null

    Empty value: null.

Order statuses

  • new

    Newly created order, waiting for verification from our dispatchers.

  • available

    Order was verified and is available for couriers.

  • active

    A courier was assigned and is working on the order.

  • completed

    Order is completed.

  • reactivated

    Order was reactivated and is again available for couriers.

  • draft

    The order is a draft and will not be delivered as such. You can create an actual order out of the draft in your Personal cabinet.

  • canceled

    Order was canceled.

  • delayed

    Order execution was delayed by a dispatcher.

Vehicle types

  • 7 — Car.

  • 8 — Motorbike.

Error codes

Request error codes

  • unexpected_error

    Unexpected error. Please let us know at [email protected].

  • invalid_api_version

    Unknown API version. Currently there is only version 1.0.

  • required_api_upgrade

    Requested API version was discontinued. You should use the latest version instead.

  • requests_limit_exceeded

    You have reached an API usage limit.

    Limits are: 100 requests per minute, 5 000 requests per 24 hours.

  • required_auth_token

    X-DV-Auth-Token header is missing from the request.

  • invalid_auth_token

    X-DV-Auth-Token you are sending is invalid.

  • required_method_get

    HTTP method GET is required.

  • required_method_post

    HTTP method POST is required.

  • invalid_post_json

    POST request body must be in JSON format.

  • invalid_parameters

    Request parameters contain errors. Look at parameter_errors response field for details.

    Parameter error codes

  • unapproved_contract

    Your agreement is not approved yet (for legal entities).

  • service_unavailable

    Our service is temporarily unavailable. Please try again later.

  • invalid_api_method

    Unknown API method was requested.

  • buyout_not_allowed

    You do not have access to buyout feature.

  • order_cannot_be_edited

    Order cannot be edited.

  • order_cannot_be_canceled

    Order cannot be canceled.

  • insufficient_balance

    Your balance is too low (for legal entities).

  • buyout_amount_limit_exceeded

    Total buyout amount in your active orders is too large. You do not have sufficient balance / credit limit to place the new order.

  • route_not_found

    Route not found.

Request example

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' 'https://robotapitest.mrspeedy.co/api/business/1.0/unknown' 
HTTP/1.1 400 Bad Request Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": false,     "errors": ["invalid_api_method"],     "parameter_errors": null } 

Parameter error codes

  • required

    Required parameter was not provided.

  • unknown

    Unknown parameter was encountered.

  • invalid_list

    Invalid JSON list.

  • invalid_object

    Invalid JSON object.

  • invalid_boolean

    Invalid boolean.

  • invalid_date

    Invalid date or time.

  • invalid_date_format

    Invalid date and time format.

  • invalid_float

    Invalid floating point number.

  • invalid_integer

    Invalid integer number.

  • invalid_string

    Invalid string.

  • invalid_order

    Order ID was not found.

  • invalid_point

    Point ID was not found.

  • invalid_order_status

    Invalid order status.

  • invalid_vehicle_type

    Invalid vehicle type.

  • invalid_courier

    Invalid courier ID.

  • invalid_phone

    Invalid phone number.

  • invalid_region

    Address is out of the delivery area for the region.

  • different_regions

    Addresses from different regions are not allowed.

  • address_not_found

    Address geocoding failed. Check your address with Google Maps service.

  • min_length

    String value is too short.

  • max_length

    String value is too long.

  • min_date

    Date and time is older than possible.

  • max_date

    Date and time is later than possible.

  • min_size

    List size is too small.

  • max_size

    List size is too large.

  • min_value

    Value is too small.

  • max_value

    Value is too large.

  • cannot_be_past

    Date and time cannot be in the past.

  • start_after_end

    Incorrect time interval. Start time should be earlier than the end.

Request example

CURL

curl --include --header 'X-DV-Auth-Token: SECRET_AUTH_TOKEN' --data '{"points":[{"address":"JL. Jawa, Blok J1 No. 31, Komplek Nusaloka, Tangerang, Rw. Mekar Jaya, Serpong, Kota Tangerang Selatan, Banten 15310","contact_person":{"phone":"6288800000001"}},{}]}' 'https://robotapitest.mrspeedy.co/api/business/1.0/create-order' 
HTTP/1.1 400 Bad Request Date: Wed, 17 Oct 2018 18:34:27 GMT Content-Type: application/json; charset=utf-8  {     "is_successful": false,     "errors": ["invalid_parameters"],     "parameter_errors": {         "matter": ["required"],         "points": [             null,             {                 "address": ["required"],                 "contact_person": {                     "phone": ["required"]                 }             }         ]     } } 

Changelog

Version 1.0

  • 23.11.2017

    New error codes: route_not_found, invalid_region, different_regions.

  • 31.05.2018

    Allowed to send order IDs list for orders API method.

  • 20.07.2018

    New API method courier to get courier info.

Do you want to become our client?

Enter correct phone
Something went wrong.

Leave your phone. We will call you back within 30 minutes.

Phone sent. Our specialist will contact you as soon as possible.

For other questions
Talk to us