CleanCloud API](/content/site-root.html)
PHPcURLJavascriptNode.jsPythonRubyIntroduction Getting Started Create Customer Update Customer Delete Customer Login Customer Get Customer Information Reset Customer Password Create Order Update an Order Delete an Order Get a Garment Get all Garments in Order Update a Garment Create Repeat Pickup Update Repeat Pickup Delete Repeat Pickup Get Repeat Pickups Create Message Get Messages Get Orders Get Price Lists Get Products Get Inventory Get Invoices Get Payments Get Pickup/Delivery Dates Get Pickup/Delivery Times Get Route from Lat/Lng Get Business Accounts Get Referral Code and Gift Use Promo Code Convert Loyalty Points Add Subscription Delete Subscription Get Subscription Add Credit Card Charge Credit Card Get Credit Cards Set Default Credit Card Add Push Token Delete Push Token Add To Customer Group Daily Summary Driver Location Get Photos
Introduction
The CleanCloud API allows you to send information into and out of CleanCloud. It is typically used for the following use cases
- You have made your own iOS/Android pickup and delivery app and wish to integrate with CleanCloud
- You wish to get a list of orders for a customer account using your own dashboard
- Accessing order and summary data for reporting or accounting purposes
The API is a RESTful API, and requires you to use POST requests to communicate with it. You can use any programming language to communicate with the API, and we have code examples for PHP, cURL, Javascript, node.js, Python and Ruby. You can switch the code examples between languages using the dropdown at the top left.
The API requires you to have Grow or Grow+ subscription and is limited to 50,000 requests per month, with a maximum of 3 requests per second. If you require more capacity please contact your CleanCloud Account Manager.
Getting Started
To begin you will need to:
- Have created an account with CleanCloud ( https://cleancloudapp.com/register)
- Obtained your API key from the Admin->Pickup and Delivery->API section
Once done you be able to complete the following tasks
- Create a Customer Account
- Update a Customer Account
- Delete a Customer
- Login Customer
- Get Customer Information
- Reset Customer Password
- Create an Order
- Update an Order
- Delete an Order
- Get a Garment
- Get all Garments in Order
- Update a Garment
- Create Repeat Pickup
- Update Repeat Pickup
- Delete Repeat pickup
- Get Repeat Pickups
- Create Message
- Get Messages
- Get Order(s) Details
- Get Price Lists
- Get Products
- Get Inventory
- Get Invoices
- Get Payments
- Get Pickup/Delivery Dates
- Get Available Pickup/Delivery Time Slots
- Get Route Number From Latitude/Longitude
- Get Business Accounts
- Get Referral Code and Gift
- Use Promo Code
- Convert Loyalty Points
- Add Subscription to Customer Account
- Delete Subscription
- Get Subscription
- Add Credit Card
- Charge Credit Card
- Get Credit Cards
- Set Default Credit Card
- Add Push Token (for your custom app)
- Delete Push Token
- Add To Customer Group
- Get Summary Metrics By Day
- Get Driver Location Associated with an Order
- Get Photos
Create a Customer Account
To create a customer account you send a POST request to https://cleancloudapp.com/api/addCustomer with the below parameters. The response will contain the ID of the newly created customer account which you will need to store on your server to perform other tasks for this customer.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerName | Name of Customer | Y |
| customerTel | Telephone number of customer | Y |
| customerEmail | Email of customer | Y |
| customerAddress | Address of customer | |
| customerAddressInstructions | Additional address instructions to help driver e.g. Leave with Doorman or Floor 6 |
|
| customerRoute | Route Number of Customer | |
| customerLat | Latitude of customer address | |
| customerLng | Longitude of customer address | |
| makeLatLng | Have CleanCloud convert customer address to Latitude / Longitude 1 = convert address to GPS co-ordinates |
|
| findRoute | Have CleanCloud assign customer to route based on customer address and your geofences 1 = assign to route based on customer address/GPS co-ordinates |
|
| customerNotes | Saved Notes for customer account | |
| customerPassword | Password for customer account, only required if CleanCloud will handle customer login | |
| customerGender | 0 = Not set, 1 = Male, 2 = Female, 3 = Prefer Not to Say | |
| birthdayDay | The day of the month without leading zeros (from 1 to 31) | |
| birthdayMonth | The numeric representation of a month, without leading zeros (1 to 12) | |
| promoCode | Invite or Promo Code that customer can use on signup | |
| marketingOptIn | If a customer provides marketing permission 1 = opt in, 0 = no permission given | |
| starchPreference | Starch Preference 0 = None selected, 1 = No starch, 2 = Normal, 3 = Light, 4 = Heavy |
|
| shirtPreference | Shirt Presentation Preference 0 = None selected, 1 = Hanger, 2 = Boxed, 3 = Folded |
|
| trouserPreference | Trouser Preference 0 = None selected, 1 = Hanger, 2 = Boxed, 3= Folded |
|
| detergentType | Detergent Type 0 = None selected, 1 = Standard, 2 = Premium |
|
| detergentScent | Detergent Scent 0 = None selected, 1 = No scent, 2 = Light, 3 = Medium, 4 = Heavy, 5 = Sensitive skin |
|
| fabricSoftenerType | Fabric Softener 0 = None selected, 1 = No Softener, 2 = Standard, 3 = Premium |
|
| whitesWashTemp | Whites Wash Temperature 0 = None selected, 1 = Cold Wash, 2 = Warm Wash |
|
| whitesDryerHeat | Whites Dryer Heat 0 = None selected, 1 = Low, 2 = Regular |
|
| colorsWashTemp | Colors Wash Temperature 0 = None selected, 1 = Cold Wash, 2 = Warm Wash |
|
| colorsDryerHeat | Colors Dryer Heat 0 = None selected, 1 = Low, 2 = Regular |
|
| stripe | Stripe customer token | |
| evoToken | EVO card token | |
| noEmailRequired | Set to 1 if you do not require email address to be provided |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"customerName": "John Doe",
"customerTel": "5554432324",
"customerEmail": "emailexample@email.com",
"customerAddress": "113 Street Avenue, New York, 10012",
"customerNotes": "Notes about the customer"
}"
'https://cleancloudapp.com/api/addCustomer'
``
//SET YOUR TOKEN HERE
$api_token = "MY_API_TOKEN";
$url="https://cleancloudapp.com/api/addCustomer";
//CREATE JSON ARRAY TO SEND $jsonArray = array('api_token' => $api_token, 'customerName' => 'John Doe', 'customerTel' => '5554432324', 'customerEmail' => 'emailexample@email.com', 'customerAddress' => '113 Street Avenue, New York, 10012', 'customerNotes' => 'Notes about the customer'); $postFields = json_encode($jsonArray);
//SEND TO CLEANCLOUD API USING CURL
$ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$postFields);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") { //SUCCESS AND RETURNS CUSTOMER ID. YOU WILL NEED THIS CUSTOMER ID FOR WHEN YOU SEND IN NEW ORDERS INTO CLEANCLOUD echo "Success Submitting to API with New Customer ID: ".$json_response->CustomerID; } else if($json_response->Error!="") { echo "Error Submitting to API: ".$json_response->Error; die(); }
}
``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/addCustomer');
request.setRequestHeader('Content-Type', 'application/json');
request.onreadystatechange = function () { if (this.readyState === 4) { console.log('Status:', this.status); console.log('Headers:', this.getAllResponseHeaders()); console.log('Body:', this.responseText); } };
var body = { 'api_token': 'MY_API_TOKEN', 'customerName': 'John Doe', 'customerTel': '5554432324', 'customerEmail': 'emailexample@email.com', 'customerAddress': '113 Street Avenue, New York, 10012', 'customerNotes': 'Notes about the customer' };
request.send(JSON.stringify(body)); `` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/addCustomer', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "customerName": "John Doe", "customerTel": "5554432324", "customerEmail": "emailexample@email.com", "customerAddress": "113 Street Avenue, New York, 10012", "customerNotes": "Notes about the customer"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); });
`` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "customerName": "John Doe", "customerTel": "5554432324", "customerEmail": "emailexample@email.com", "customerAddress": "113 Street Avenue, New York, 10012", "customerNotes": "Notes about the customer" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/addCustomer', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "customerName": "John Doe", "customerTel": "5554432324", "customerEmail": "emailexample@email.com", "customerAddress": "113 Street Avenue, New York, 10012", "customerNotes": "Notes about the customer" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/addCustomer', values, headers puts response `
Update a Customer Account
To update a customer account you send a POST request to https://cleancloudapp.com/api/updateCustomer with the below parameters. Only submit the parameters that you wish to update.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of Customer | Y |
| customerName | Name of Customer | |
| customerTel | Telephone number of customer | |
| customerEmail | Email of customer | |
| customerAddress | Address of customer | |
| customerAddressInstructions | Additional address instructions to help driver e.g. Leave with Doorman or Floor 6 |
|
| customerRoute | Route Number of Customer | |
| customerLat | Latitude of customer address | |
| customerLng | Longitude of customer address | |
| makeLatLng | Have CleanCloud convert customer address to Latitude / Longitude 1 = convert address to GPS co-ordinates |
|
| findRoute | Have CleanCloud assign customer to route based on customer address and your geofences 1 = assign to route based on customer address/GPS co-ordinates |
|
| birthdayDay | The day of the month without leading zeros (from 1 to 31). You must send with birthdayMonth as well. | |
| birthdayMonth | The numeric representation of a month, without leading zeros (1 to 12) | |
| customerPassword | Password for customer account | |
| customerNotes | Saved Notes for customer account | |
| starchPreference | Starch Preference 0 = None selected, 1 = No starch, 2 = Normal, 3 = Light, 4 = Heavy |
|
| shirtPreference | Shirt Presentation Preference 0 = No preference, 1 = Hanger, 2 = Boxed |
|
| trouserPreference | Trouser Preference 0 = None selected, 1 = Hanger, 2 = Boxed, 3= Folded |
|
| detergentType | Detergent Type 0 = None selected, 1 = Standard, 2 = Premium |
|
| detergentScent | Detergent Scent 0 = None selected, 1 = No scent, 2 = Light, 3 = Medium, 4 = Heavy, 5 = Sensitive skin |
|
| fabricSoftenerType | Fabric Softener 0 = None selected, 1 = No Softener, 2 = Standard, 3 = Premium |
|
| whitesWashTemp | Whites Wash Temperature 0 = None selected, 1 = Cold Wash, 2 = Warm Wash |
|
| whitesDryerHeat | Whites Dryer Heat 0 = None selected, 1 = Low, 2 = Regular |
|
| colorsWashTemp | Colors Wash Temperature 0 = None selected, 1 = Cold Wash, 2 = Warm Wash |
|
| colorsDryerHeat | Colors Dryer Heat 0 = None selected, 1 = Low, 2 = Regular |
|
| stripe | Stripe customer token | |
| evoToken | EVO card token |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"customerID": "1",
"customerTel": "5554432324"
}"
'https://cleancloudapp.com/api/updateCustomer'
``
//SET PARAMETERS
$api_token = "MY_API_TOKEN";
$url="https://cleancloudapp.com/api/updateCustomer";
//SET CUSTOMER ID. THIS IS THE CUSTOMER YOU ARE UPDATING $customerID="1"; /// ///WHEN UPDATING YOU SHOULD ONLY SEND THE FIELDS THAT WISH TO UPDATE. ///
//EXAMPLE 1: CHANGE ONLY CUSTOMER PHONE NUMBER $jsonArray = array("api_token" => $api_token, "customerID" => $customerID, "customerTel" => "55512321");
//EXAMPLE 2: UPDATE ALL AVAILABLE FIELDS IN THE API
$jsonArray = array("api_token" => $api_token, "customerID" => $customerID, "customerName" => "New Name", "customerTel" => "12345", "customerEmail" => "apiupdate@cleancloudapp.com", "customerAddress" => "20 API Street, API Land", "customerNotes" => "New Customer Notes from API");
$postFields = json_encode($jsonArray);
//SEND TO CLEANCLOUD API USING CURL
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") { //CUSTOMER UPDATED echo "Success Submitting to API";
} else if($json_response->Error!="") { //ERROR WITH DATA THAT SENT TO CLEANCLOUD. PLEASE CORRECT THE ERROR MENTIONED echo "Error Submitting to API: ".$json_response->Error; die(); }
}
``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/updateCustomer');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'customerID': '1', 'customerTel': '5554432324' };
request.send(JSON.stringify(body)); `` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/updateCustomer', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "customerID": "1", "customerTel": "5554432324"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "customerID": "1", "customerTel": "5554432324" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/updateCustomer', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "customerID": "1", "customerTel": "5554432324" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/updateCustomer', values, headers puts response `
Delete a Customer Account
To update a customer account you send a POST request to https://cleancloudapp.com/api/deleteCustomer with the below parameters.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of Customer | Y |
Login to Customer Account
To check the email and password of a customer and retrieve their customer ID you can send a POST request to https://cleancloudapp.com/api/loginCustomer with the below parameters
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerEmail | Email of the customer | Y |
| customerPassword | Password of the customer | Y |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"customerEmail": "emailexample@email.com",
"customerPassword": "thisWasMyPassword"
}"
'https://cleancloudapp.com/api/loginCustomer'
`` //SET PARAMETERS $api_token = "MY_API_TOKEN"; $url="https://cleancloudapp.com/api/loginCustomer";
/// //CREATE JSON ARRAY ///
$jsonArray = array("api_token" => $api_token, "customerEmail" => "emailexample@email.com", "customerPassword" => "thisWasMyPassword"); $postFields = json_encode($jsonArray);
//SEND TO CLEANCLOUD API USING CURL $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_HEADER, FALSE); curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS,$postFields);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") { //SUCCESSFUL LOGIN echo "Success Logging In with ID: ".$json_response->cid; } else if($json_response->Error!="") { //ERROR WITH DATA THAT SENT TO CLEANCLOUD. PLEASE CORRECT THE ERROR MENTIONED echo "Error Submitting to API: ".$json_response->Error; die(); }
} ``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/loginCustomer');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'customerEmail': 'emailexample@email.com', 'customerPassword': 'thisWasMyPassword' };
request.send(JSON.stringify(body)); `` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/loginCustomer', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "customerEmail": "emailexample@email.com", "customerPassword": "thisWasMyPassword"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "customerEmail": "emailexample@email.com", "customerPassword": "thisWasMyPassword" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/loginCustomer', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "customerEmail": "emailexample@email.com", "customerPassword": "thisWasMyPassword" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/loginCustomer', values, headers puts response `
Get Customer Information
To retrieve available information about a particular customer, or customers that signed up within a date range, you send a POST request to https://cleancloudapp.com/api/getCustomer with the below parameters.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | |
| dateFrom | Beginning date of when customer signed up (yyyy-mm-dd) | |
| dateTo | End date of when customer signed up (yyyy-mm-dd) | |
| excludeDeactivated | 1 = Exclude deactivated customers |
Note that the response is structured differently if you are requesting customers by date range. Date Range is also limited to 31 days.
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"customerID": "1"
}"
'https://cleancloudapp.com/api/getCustomer'
``
//SET TOKEN
$api_token = "MY_API_TOKEN";
//URL FOR GET CUSTOMER $url="https://cleancloudapp.com/api/getCustomer";
//CUSTOMER ID THAT YOU WANT INFORMATION FOR $customerID="12";
$jsonArray = array("api_token" => $api_token, "customerID" => $customerID); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") {
//SUCCESS echo "Success Getting Customer Information: ".$json_response->Success;
//SHOW RESPONSE IN JSON var_dump($json_response);
} else if($json_response->Error!="") {
//ERROR WITH DATA THAT SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die(); }
}
``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/getCustomer');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'customerID': '1' };
request.send(JSON.stringify(body)); `` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/getCustomer', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "customerID": "1"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); });
`` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "customerID": "1" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/getCustomer', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "customerID": "1" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/getCustomer', values, headers puts response
`
Reset Customer Password
To iniate a password reset for a customer and send them an email with reset instructions you send a POST request to https://cleancloudapp.com/api/passwordCustomer with the below parameters
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerEmail | Email of the customer | Y |
Create an Order
To create an order you send a POST request to https://cleancloudapp.com/api/addOrder with the below parameters. You will need the ID of the customer account that you are creating the order for. This ID is obtained when you create a customer using the API.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | Y |
| finalTotal | Final value of the order | Y |
| status | Status of the order 0 = Cleaning Order,1 = Order Ready, 2 = Order Completed, 3 = Pickup Requiring Confirmation, 4 = Accepted Pickup, 5 = Detailing If not set it will assume the order is a pickup |
|
| discount | Discount amount applied to order | |
| discountPercent | e.g 20 if you want the discount % to stick for an order after editing | |
| creditUsed | Amount of credit used with this order Will return error if more used than available on customer account |
|
| deliveryFee | Amount charged for delivery | |
| tax | Tax amount applied to the order | |
| tax2 | Second Tax amount applied to the order | |
| tax3 | Third Tax amount applied to the order | |
| minimumAdjust | Amount applied to raise order to minimum required subtotal | |
| tip | Tip amount applied to the order | |
| tipPercent | e.g 20 if you want the tip % to stick for an order after editing | |
| express | Specify if the order is express or not. 0 = Normal, 1 = Express | |
| products | Associative Array of products in the order | |
| pickupDate | Unix timestamp of pickup date, set without timezone at 12pm UTC time, or YYYY-MM-DD format | |
| pickupStart | Start time for pickup, set with 12 hour clock (e.g. 10am) | |
| pickupEnd | End time for pickup, set with 12 hour clock (e.g. 11am) | |
| delivery | Whether the order is a delivery or not 1 = Order will also be a delivery, 0 = no delivery | |
| deliveryDate | Unix timestamp of delivery date, set without timezone at 12pm UTC time, or YYYY-MM-DD format | |
| deliveryStart | Start time for delivery, set with 12 hour clock (e.g. 10am) | |
| deliveryEnd | End time for delivery, set with 12 hour clock (e.g. 11am) | |
| orderNotes | Notes for the order | |
| notifyMethod | How to notify customer on order status changes1 = SMS, 2 = EMAIL, 3 = DO NOT NOTIFY, 4 = EMAIL & SMS | |
| paid | If the order is paid or not.1 = Paid, 0 = Unpaid | |
| paymentType | The payment type used 0 = No payment type, 1 = Cash, 2 = Card, 3 = Check | |
| priceListID | If you are using a custom price list from CleanCloud, Leave blank or 0 for default | |
| sendEmail | Send email notification to the customer. 1 = send them an email | |
| staffVerify | Staff need to approve the order in the POS. 1 = require staff approval | |
| storeOrder | 1 = A regular store order, rather than a pickup and delivery. When set to 1, the following three fields should be provided | |
| storeDropOffDate | Unix timestamp of the date the order begins or is given to the store, set without timezone at 12pm UTC time | |
| storeReadyByDate | Unix timestamp of the date the order will be ready by, set without timezone at 12pm UTC time | |
| storeReadyByTime | e.g. "5pm", if not provided, store default will be used | |
| lockerOrder | 1 = is an order dropped in a locker by customer | |
| lockerNumber | e.g 5 if order put in locker number 5 | |
| lockerLocationID | If multiple locker locations for a store then provide the ID associated with the locker location |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"customerID": "1",
"products": [{ "id": "10", "price": "45", "pieces": "1", "quantity": "1", "name": "Product Name"},
{"id": "9", "price": "20", "pieces": "2", "quantity": "2", "name": "Second Product"},
{"id": "0", "price": "10", "pieces": "1", "quantity": "3", "name": "Custom Product Name"}],
"discount": "1.03",
"tax": "1.08",
"finalTotal": "10.60",
"pickupDate": "1505736000",
"pickupStart": "10am",
"pickupEnd": "11am",
"delivery": "1",
"deliveryDate": "1506686400",
"deliveryStart": "1pm",
"deliveryEnd": "2pm",
"orderNotes": "Notes for the Order",
"notifyMethod": "2",
"priceListID": ""
}"
'https://cleancloudapp.com/api/addOrder'
``
//SET PARAMETERS
$api_token = "MY_API_TOKEN";
$url="https://cleancloudapp.com/api/addOrder";
//SET CUSTOMER ID $customerID="1";
//CREATE LIST OF PRODUCTS OF ORDER IN AN ARRAY
$products_array = array();
//NOTES: /// ID CORRESPONDS TO ID OF PRODUCT IN YOUR CLEANCLOUD ACCOUNT, IF ITEM DOES NOT EXIST IN CLEANCLOUD THEN CREATE ONE TIME CUSTOM ITEM BY SETTING ID TO 0. YOU CAN USE UP TO 5 CUSTOM PRODUCTS PER ORDER /// ALL FIELDS MUST BE PROVIDED /// PIECES IS PIECES PER ITEM. FOR EXAMPLE SPECIFYING 2 PIECES AND 2 QUANTITY MEANS 4 PIECES IN TOTAL /// PRICE IS PRICE PER ITEM. FOR EXAMPLE PRICE OF $20 AND QUANTITY OF 2 MEANS $40 TOTAL
$product1 = array("id" => "10", "price" => "45", "pieces" => "1", "quantity" => "1", "name" => "Product Name"); $product2 = array("id" => "9", "price" => "20", "pieces" => "2", "quantity" => "2", "name" => "Second Product"); $productCustom = array("id" => "0", "price" => "10", "pieces" => "1", "quantity" => "3", "name" => "Custom Product Name");
//PUSH ITEMS INTO PRODUCTS ARRAY FOR JSON. PRODUCTS ARRAY WILL BE NESTED INSIDE THE MAIN JSON ARRAY SENT TO CLEANCLOUD API $products_array[] = $product1; $products_array[] = $product2; $products_array[] = $productCustom;
/// //CREATE JSON ARRAY ///
$jsonArray = array("api_token" => $api_token, "customerID" => $customerID, "products" => $products_array, "discount" => "1.05", "tax" => "1.07", "finalTotal" => "10.06", "pickupStart" => "10am", "pickupDate" => "1505736000", "pickupEnd" => "11am", "delivery" => "1", "deliveryDate" => "1506686400","deliveryStart" => "1pm", "deliveryEnd" => "2pm", "orderNotes" => "Notes for the Order", "notifyMethod" => "2", "priceListID" => ""); $postFields = json_encode($jsonArray);
//SEND TO CLEANCLOUD API USING CURL
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") { //ORDER SUCCESSFULLY INSERTED INTO CLEANCLOUD ACCOUNT AND RETURNS ORDER ID FROM CLEANCLOUD echo "Success Submitting to API with New ORDER ID: ".$json_response->orderID; } else if($json_response->Error!="") { //ERROR WITH DATA THAT SENT TO CLEANCLOUD, ORDER WAS NOT INSERTED INTO ACCOUNT. PLEASE CORRECT THE ERROR MENTIONED echo "Error Submitting to API: ".$json_response->Error; die(); }
}
``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/addOrder');
request.setRequestHeader('Content-Type', 'application/json');
var body = {
'api_token': 'MY_API_TOKEN',
'customerID': '1',
'products': [{ 'id': '10', 'price': '45', 'pieces': '1', 'quantity': '1', 'name': 'Product Name'},
{'id': '9', 'price': '20', 'pieces': '2', 'quantity': '2', 'name': 'Second Product'},
{'id': '0', 'price': '10', 'pieces': '1', 'quantity': '3', 'name': 'Custom Product Name'}],
'discount': '1.03',
'tax': '1.08',
'finalTotal': '10.60',
'pickupDate': '1505736000',
'pickupStart': '10am',
'pickupEnd': '11am',
'delivery': '1',
'deliveryDate': '1506686400',
'deliveryStart': '1pm',
'deliveryEnd': '2pm',
'orderNotes': 'Notes for the Order',
'notifyMethod': '2',
'priceListID': ''
};
request.send(JSON.stringify(body)); `` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/addOrder', headers: { 'Content-Type': 'application/json' }, body: "{"api_token": "MY_API_TOKEN", "customerID": "1", "products": [{ "id": "10", "price": "45", "pieces": "1", "quantity": "1", "name": "Product Name"}, {"id": "9", "price": "20", "pieces": "2", "quantity": "2", "name": "Second Product"}, {"id": "0", "price": "10", "pieces": "1", "quantity": "3", "name": "Custom Product Name"}], "discount": "1.03", "tax": "1.08", "finalTotal": "10.60", "pickupDate": "1505736000", "pickupStart": "10am", "pickupEnd": "11am", "delivery": "1", "deliveryDate": "1506686400", "deliveryStart": "1pm", "deliveryEnd": "2pm", "orderNotes": "Notes for the Order", "notifyMethod": "2", "priceListID": ""}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """
{
"api_token": "MY_API_TOKEN",
"customerID": "1",
"products": [{ "id": "10", "price": "45", "pieces": "1", "quantity": "1", "name": "Product Name"},
{"id": "9", "price": "20", "pieces": "2", "quantity": "2", "name": "Second Product"},
{"id": "0", "price": "10", "pieces": "1", "quantity": "3", "name": "Custom Product Name"}],
"discount": "1.03",
"tax": "1.08",
"finalTotal": "10.60",
"pickupDate": "1505736000",
"pickupStart": "10am",
"pickupEnd": "11am",
"delivery": "1",
"deliveryDate": "1506686400",
"deliveryStart": "1pm",
"deliveryEnd": "2pm",
"orderNotes": "Notes for the Order",
"notifyMethod": "2",
"priceListID": ""
}
"""
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/addOrder', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{
"api_token": "MY_API_TOKEN",
"customerID": "1",
"products": [{ "id": "10", "price": "45", "pieces": "1", "quantity": "1", "name": "Product Name"},
{"id": "9", "price": "20", "pieces": "2", "quantity": "2", "name": "Second Product"},
{"id": "0", "price": "10", "pieces": "1", "quantity": "3", "name": "Custom Product Name"}],
"discount": "1.03",
"tax": "1.08",
"finalTotal": "10.60",
"pickupDate": "1505736000",
"pickupStart": "10am",
"pickupEnd": "11am",
"delivery": "1",
"deliveryDate": "1506686400",
"deliveryStart": "1pm",
"deliveryEnd": "2pm",
"orderNotes": "Notes for the Order",
"notifyMethod": "2",
"priceListID": ""
}'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/addOrder', values, headers puts response `
Update an Order
To update an order you send a POST request to https://cleancloudapp.com/api/updateOrder with the below parameters. You will need the ID of the order that you are updating. Only submit the parameters that you wish to update.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| orderID | ID of the order | Y |
| customerID | ID of the customer | |
| finalTotal | Final value of the order | |
| discount | Discount amount applied to order | |
| discountPercent | e.g 20 if you want the discount % to stick for an order after editing | |
| creditUsed | Amount of credit used with this order. You must also provide updated finalTotal. Will return error if more used than available on customer account. |
|
| deliveryFee | Amount charged for delivery | |
| tax | Tax amount applied to the order | |
| tax2 | Second Tax amount applied to the order | |
| tax3 | Third Tax amount applied to the order | |
| minimumAdjust | Amount applied to raise order to minimum required subtotal | |
| tip | Tip amount applied to the order | |
| tipPercent | e.g 20 if you want the tip % to stick for an order after editing | |
| pickupDate | Unix timestamp of pickup date, set without timezone at 12pm UTC time, or YYYY-MM-DD format | |
| pickupStart | Start time for pickup, set with 12 hour clock (e.g. 10am) | |
| pickupEnd | End time for pickup, set with 12 hour clock (e.g. 11am) | |
| delivery | Whether the order is a delivery or not (1 or 0) | |
| deliveryDate | Unix timestamp of delivery date, set without timezone at 12pm UTC time, or YYYY-MM-DD format | |
| deliveryStart | Start time for delivery, set with 12 hour clock (e.g. 10am) | |
| deliveryEnd | End time for delivery, set with 12 hour clock (e.g. 11am) | |
| orderNotes | Notes for the order | |
| notifyMethod | How to notify customer on order status changes1 = SMS, 2 = EMAIL, 3 = DO NOT NOTIFY, 4 = EMAIL & SMS | |
| paid | If the order is paid or not.1 = Paid, 0 = Unpaid | |
| paymentType | The payment type used 0 = No payment type, 1 = Cash, 2 = Card, 3 = Check | |
| priceListID | If you are using a custom price list from CleanCloud, Leave blank or 0 for default | |
| pickupReschedule | 1 if staff requested reschedule, 2 if rescheduled by customer | |
| deliveryReschedule | 1 if staff requested reschedule, 2 if rescheduled by customer | |
| status | The status of the order. 4 = Awaiting Pickup, 0 = Cleaning, 1 = Cleaned and Ready to Deliver, 2 = Completed, 5 = Detailing |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"orderID": "1",
"status": "2"
}"
'https://cleancloudapp.com/api/updateOrder'
``
//SET PARAMETERS
$api_token = "MY_API_TOKEN";
$url="https://cleancloudapp.com/api/updateOrder";
//SET ORDER ID. THIS IS THE ORDER ID YOU ARE UPDATING $orderID="255";
/// ///WHEN UPDATING YOU SHOULD ONLY SEND THE FIELDS THAT WISH TO UPDATE. ///
//EXAMPLE 1: SET ORDER AS PAID, WITH PAYMENT TYPE PAID BY CARD $jsonArray = array("api_token" => $api_token, "orderID" => $orderID, "paid" => "1", "paymentType" => "2");
//EXAMPLE 2: JUST UPDATING STATUS OF ORDER $jsonArray = array("api_token" => $api_token, "orderID" => $orderID, "status" => "2");
//EXAMPLE 3: UPDATE LOTS OF FIELDS IN THE API, INCLUDING CHANGING THE CUSTOMER ID $customerID = 1; $jsonArray = array("api_token" => $api_token, "orderID" => $orderID, "customerID" => $customerID, "status" => "2", "discount" => "1.05","discount" => "1.05", "tax" => "1.07", "tax2" => "0.95", "finalTotal" => "10.06", "pickupStart" => "10am", "pickupDate" => "1505736000", "pickupEnd" => "11am", "delivery" => "1", "deliveryDate" => "1506686400","deliveryStart" => "1pm", "deliveryEnd" => "2pm", "orderNotes" => "New Notes for the Order", "paid" => "1", "paymentType" => "2");
$postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") { //ORDER SUCCESSFULLY UPDATED echo "Success Submitting to API";
} else if($json_response->Error!="") { //ERROR WITH DATA THAT SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die(); }
} ``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/updateOrder');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'orderID': '1', 'status': '2' };
request.send(JSON.stringify(body));
`` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/updateOrder', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "orderID": "1", "status": "2"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "orderID": "1", "status": "2" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/updateOrder', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "orderID": "1", "status": "2" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/updateOrder', values, headers puts response `
Delete an Order
You can delete an existing order by sending a POST request to https://cleancloudapp.com/api/deleteOrder with the below parameters
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| orderID | ID of the order | Y |
| checkPickupTime | 1 = Check if the order is too close to pickup time before deleting it. It will return error if too close to pickup. |
|
| sendEmail | 1 = Send Email to Notify the Admin and Store of Deletion |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"orderID": "1"
}"
'https://cleancloudapp.com/api/deleteOrder'
``
//SET PARAMETERS
$api_token = "MY_API_TOKEN";
$url="https://cleancloudapp.com/api/deleteOrder";
$orderID="670";
$jsonArray = array("api_token" => $api_token, "orderID" => $orderID); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else { if($json_response->Success=="True") { echo "Success"; //SHOW RESPONSE IN JSON var_dump($json_response); } else if($json_response->Error!="") { //ERROR WITH DATA THAT SENT TO CLEANCLOUD. PLEASE CORRECT THE ERROR MENTIONED echo "Error Submitting to API: ".$json_response->Error; die(); }
} ``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/deleteOrder');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'orderID': '1' };
request.send(JSON.stringify(body)); `` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/deleteOrder', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "orderID": "1"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "orderID": "1" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/deleteOrder', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "orderID": "1" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/deleteOrder', values, headers puts response `
Get a Garment
You can get information about a particular garment in an order by sending a POST request to https://cleancloudapp.com/api/getGarment with the below parameters.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| orderID | ID of the order | Y |
| barcodeID | Barcode ID/Number of the garment | Y |
Get All Garments in an Order
You can get information about all individual garments of a particular order by sending a POST request to https://cleancloudapp.com/api/getGarments with the below parameters.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| orderID | ID of the order | Y |
Update a Garment
You can update details about an existing garment by sending a POST request to https://cleancloudapp.com/api/updateGarment with the below parameters. Only send the optional fields that you wish to update.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| barcodeID | Barcode ID/Number of the garment | Y |
| orderID | ID of the order. Send this if barcodeID is not unique and you need to limit to the barcode on a particular order | N |
| color1 | Color ID of the garment | |
| color2 | Second Color ID of the garment | |
| extraNotes | Any notes about the garment | |
| conveyorLocation | Where the garment is on an assembly/storage conveyor | |
| customStatus | Custom field for you to track the garment status. Numbers only |
Create Repeat Pickup
Create a Repeat Pickup scheduler by sending a POST request to https://cleancloudapp.com/api/repeatPickup with the below parameters
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | Y |
| pickupDate | Unix timestamp of first pickup date, set without timezone at 12pm UTC time | Y |
| pickupStart | Start time for pickup, set with 12 hour clock (e.g. 11am) | Y |
| pickupEnd | End time for pickup, set with 12 hour clock (e.g. 1pm) | Y |
| frequency | How often the pickup should repeat 1=Every week, 2=Every 2 weeks, 3=Every 3 weeks, 4=Every 4 weeks |
Y |
| duration | How many times this pickup should repeat 0=Until cancelled, 1=1 order, 2=2 orders, ... 20 = 20 orders |
Y |
| deliveryDays | How many days after the pickup the delivery should be 0=Do not set, 1= +1 day from Pickup, 2= +2 days, 3= +3 days... |
|
| deliveryStart | Start time for delivery, set with 12 hour clock (e.g. 11am) | |
| deliveryEnd | End time for delivery, set with 12 hour clock (e.g. 1pm) | |
| tip | How much tip to apply to each repeat order e.g. 3.5 |
|
| tipPercent | e.g 20 if you want the tip % to stick for an order after editing | |
| schedulerType | 0 = regular, 1 = requires SMS confirmation from customer each order before creating order | |
| schedulerConfirmDays | How many days in advance of pickup the confirm order SMS is sent to customer (Only required if schedulerType set to 1) |
|
| ordersCreatedSoFar | Number of orders that have already been created for this repeat pickup before scheduler created e.g. 0 or 1 |
|
| deleteOld | Delete any old repeat pickups for this customer 1 = delete |
Update Repeat Pickup
Update an Existing Repeat Pickup scheduler by sending a POST request to https://cleancloudapp.com/api/updateRepeatPickup with the below parameters
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| pickupID | ID of the repeat pickup | Y |
| customerID | ID of the customer | Y |
| pickupDate | Unix timestamp of next pickup date, set without timezone at 12pm UTC time | Y |
| pickupStart | Start time for pickup, set with 12 hour clock (e.g. 11am) | Y |
| pickupEnd | End time for pickup, set with 12 hour clock (e.g. 1pm) | Y |
| frequency | How often the pickup should repeat 1=Every week, 2=Every 2 weeks, 3=Every 3 weeks, 4=Every 4 weeks |
Y |
| duration | How many times this pickup should repeat 0=Until cancelled, 1=1 order, 2=2 orders, ... 20 = 20 orders |
Y |
| deliveryDays | How many days after the pickup the delivery should be 0=Do not set, 1= +1 day from Pickup, 2= +2 days, 3= +3 days... |
|
| deliveryStart | Start time for delivery, set with 12 hour clock (e.g. 11am) | |
| deliveryEnd | End time for delivery, set with 12 hour clock (e.g. 1pm) | |
| tip | How much tip to apply to each repeat order e.g. 3.5 |
|
| tipPercent | e.g 20 if you want the tip % to stick for an order after editing | |
| schedulerType | 0 = regular, 1 = requires SMS confirmation from customer each order before creating order | |
| schedulerConfirmDays | How many days in advance of pickup the confirm order SMS is sent to customer (Only required if schedulerType set to 1) |
Delete Repeat Pickup
Delete a Repeat Pickup for a customer by sending a POST request to https://cleancloudapp.com/api/deletePickup with the below parameters
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| pickupID | ID of the repeat pickup | Y |
| customerID | ID of the customer | Y |
Get Repeat Pickups
Get a list of Repeat Pickups for a customer by sending a POST request to https://cleancloudapp.com/api/getPickups with the below parameters
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | Y |
Create Message
This POST request to https://cleancloudapp.com/api/addMessage allows you send a message from the customer to the store.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | Y |
| message | Message for the store | Y |
Get List of Messages
This POST request to https://cleancloudapp.com/api/getMessages allows you to return a JSON response of the messaging history with a customer.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | Y |
| limit | How many messages to return, leave empty for all |
Get List of Orders
This POST request to https://cleancloudapp.com/api/getOrders allows you to return a JSON response of details for a particular order or multiple orders, which can be filtered using the parameters below.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| orderID | ID of the order | |
| customerID | ID of the customer | |
| routeID | ID of the pickup and delivery route | |
| dateFrom | Beginning date of orders (yyyy-mm-dd) | |
| dateTo | End date of orders (yyyy-mm-dd) | |
| updatedSecondsAgoFrom | Filter to only fetch orders that were updated in the last X seconds. This also includes newly created orders. | |
| status | Status of the order(s) 4 = Awaiting Pickup, 5 = Detailing, 0 = Cleaning, 1 = Cleaned and Ready to Deliver, 2 = Completed |
|
| completed | If order(s) have been completed or not. 0 = not complete, 1 = complete | |
| paid | If order(s) have been paid or not. 0 = not paid, 1 = paid | |
| sendProductDetails | Set to 1 if you require detailed information about the products on the order(s) |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"customerID": "1"
}"
'https://cleancloudapp.com/api/getOrders'
``
//SET TOKEN
$api_token = "MY_API_TOKEN";
//URL FOR GET ORDERS $url="https://cleancloudapp.com/api/getOrders";
//CUSTOMER ID $customerID="19";
$jsonArray = array("api_token" => $api_token, "customerID" => $customerID); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") {
echo "Success Getting Orders: ".$json_response->Success;
//SHOW RESPONSE IN JSON var_dump($json_response);
} else if($json_response->Error!="") {
//ERROR WITH DATA SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die(); }
}
``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/getOrders');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'customerID': '1' };
request.send(JSON.stringify(body)); `` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/getOrders', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "customerID": "1"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "customerID": "1" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/getOrders', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "customerID": "1" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/getOrders', values, headers puts response `
Get Price Lists
This POST request to https://cleancloudapp.com/api/getPriceLists allows you to return a JSON response of all the active price lists for a store, by sending the following parameters.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
Get List of Products
This POST request to https://cleancloudapp.com/api/getProducts allows you to return a JSON response of all active products, by sending the following parameters.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| priceListID | ID of the price list | |
| sendParents | If you want to receive parent products in the response (1 or 0) | |
| sendUpcharges | If you want to receive upcharges in the response (1 or 0) | |
| inStore | 1 = See products how they appear in store POS. Otherwise it will send for customer app |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"priceListID": ""
}"
'https://cleancloudapp.com/api/getProducts'
``
//SET TOKEN
$api_token = "MY_API_TOKEN";
//URL FOR GET PRODUCTS $url="https://cleancloudapp.com/api/getProducts";
//PRICE LIST ID (optional) $priceListID="";
$jsonArray = array("api_token" => $api_token, "priceListID" => $priceListID); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") {
echo "Success Getting Products: ".$json_response->Success;
//SHOW RESPONSE IN JSON var_dump($json_response);
} else if($json_response->Error!="") {
//ERROR WITH DATA SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die(); }
}
``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/getProducts');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'priceListID': '' };
request.send(JSON.stringify(body));
`` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/getProducts', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "priceListID": ""}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "priceListID": "" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/getProducts', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "priceListID": "" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/getProducts', values, headers puts response `
Get Inventory
This POST request to https://cleancloudapp.com/api/getInventory returns a JSON response of the current inventory levels of all inventory products in your store.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
Get Invoices
This POST request to https://cleancloudapp.com/api/getInvoices returns a JSON response of the Invoices you have created.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | |
| businessID | ID of a Business account | |
| dateFrom | Beginning date of orders (yyyy-mm-dd) | |
| dateTo | End date of orders (yyyy-mm-dd) |
Get Payments
This POST request to https://cleancloudapp.com/api/getPayments returns a JSON response of all the payments that have happened on your account.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | |
| dateFrom | Beginning date of orders (yyyy-mm-dd) | |
| dateTo | End date of orders (yyyy-mm-dd) |
Get Available Pickup/Delivery Dates
This POST request to https://cleancloudapp.com/api/getDates allows you to return a JSON response of all the available pickup and delivery dates with their available slot times for a particular route, by sending the following parameters. The response will contain a list of dates, with available slot times and the remaining number of available slots.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| routeID | ID of the Route | Y |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"routeID": "1",
"day": "1558353600"
}"
'https://cleancloudapp.com/api/getDates'
``
//SET TOKEN
$api_token = "MY_API_TOKEN";
//URL FOR GET DATES $url="https://cleancloudapp.com/api/getDates";
$jsonArray = array("api_token" => $api_token, "routeID" => '1'); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") {
//SHOW RESPONSE IN JSON var_dump($json_response);
} else if($json_response->Error!="") {
//ERROR WITH DATA THAT SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die();
}
} ``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/getDates');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'routeID': '1' };
request.send(JSON.stringify(body));
`` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/getDates', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "routeID": "1"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "routeID": "1" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/getDates', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "routeID": "1" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/getDates', values, headers puts response `
Get Available Pickup/Delivery Times
This POST request to https://cleancloudapp.com/api/getSlots allows you to return a JSON response of all the available pickup and delivery slots for a particular route on a particular day, by sending the following parameters. The response will contain a comma separated list of available slot times.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| routeID | ID of the Route | Y |
| day | Unix Timestamp of the Day without timezone at 12pm UTC time | Y |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"routeID": "1",
"day": "1558353600"
}"
'https://cleancloudapp.com/api/getSlots'
``
//SET TOKEN
$api_token = "MY_API_TOKEN";
//URL FOR GET SLOTS $url="https://cleancloudapp.com/api/getSlots";
$jsonArray = array("api_token" => $api_token, "routeID" => '1', "day" => '1558353600'); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") {
//SHOW RESPONSE IN JSON var_dump($json_response);
} else if($json_response->Error!="") {
//ERROR WITH DATA THAT SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die();
}
} ``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/getSlots');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'routeID': '1', 'day': '1558353600' };
request.send(JSON.stringify(body));
`` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/getSlots', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "routeID": "1", "day": "1558353600"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "routeID": "1", "day": "1558353600" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/getSlots', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "routeID": "1", "day": "1558353600" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/getSlots', values, headers puts response `
Get Route Number from Latitude/Longitude or Address
This POST request to https://cleancloudapp.com/api/getRoute allows you to send in latitude/longitude values for a customer's address or their street address and the response will provide a JSON response with the route number. If no route is available for that route an error will return.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| lat | Latitude of the address | |
| lng | Longitude of the address | |
| customerAddress | Customer street address if you don't know lat/lng | |
| routeID | Route ID, if you want to check lat/lng is in this route |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"lat": "10.14",
"lng": "34.43"
}"
'https://cleancloudapp.com/api/getRoute'
``
//SET TOKEN
$api_token = "MY_API_TOKEN";
//URL FOR GET SLOTS $url="https://cleancloudapp.com/api/getRoute";
$jsonArray = array("api_token" => $api_token, "lat" => '10.14', "lng" => '34.43'); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") {
//SHOW RESPONSE IN JSON var_dump($json_response);
} else if($json_response->Error!="") {
//ERROR WITH DATA THAT SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die();
}
} ``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/getRoute');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'lat': '10.14', 'lng': '34.43' };
request.send(JSON.stringify(body));
`` var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/getRoute', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "lat": "10.14", "lng": "34.43"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); }); `` from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "lat": "10.14", "lng": "34.43" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/getRoute', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "lat": "10.14", "lng": "34.43" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/getRoute', values, headers puts response `
Get Business Accounts
This POST request to https://cleancloudapp.com/api/getBusinessAccounts allows you to retrieve information about the business accounts you have setup on your store.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
Get Referral Code and Gift
This POST request to https://cleancloudapp.com/api/getReferral allows you to get the unique referral code for a customer and the gift that they and the customer they they refer will receive
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
PHP Code Example
cURL Code Example
Java Code Example
Javascript Code Example
Node.js Code Example
Python Code Example
Ruby Code Example
`
curl --include
--request POST
--header "Content-Type: application/json"
--data-binary "{
"api_token":"MY_API_TOKEN",
"customerID": "1"
}"
'https://cleancloudapp.com/api/getReferral'
``
//SET TOKEN
$api_token = "MY_API_TOKEN";
//URL FOR GET CUSTOMER $url="https://cleancloudapp.com/api/getReferral";
//CUSTOMER ID THAT YOU WANT INFORMATION FOR $customerID="12";
$jsonArray = array("api_token" => $api_token, "customerID" => $customerID); $postFields = json_encode($jsonArray);
$response = curl_exec($ch); curl_close($ch); $json_response=json_decode($response);
if(curl_error($ch)) { //ERROR SENDING TO CLEANCLOUD API echo "Error with cURL Submitting to API: ".curl_error($ch); die(); } else {
if($json_response->Success=="True") {
//SUCCESS echo "Success Getting Customer Information: ".$json_response->Success;
//SHOW RESPONSE IN JSON var_dump($json_response);
} else if($json_response->Error!="") {
//ERROR WITH DATA THAT SENT TO CLEANCLOUD echo "Error Submitting to API: ".$json_response->Error; die(); }
}
``
`` var request = new XMLHttpRequest();
request.open('POST', 'https://cleancloudapp.com/api/getReferral');
request.setRequestHeader('Content-Type', 'application/json');
var body = { 'api_token': 'MY_API_TOKEN', 'customerID': '1' };
request.send(JSON.stringify(body)); ``
var request = require('request');
request({ method: 'POST', url: 'https://cleancloudapp.com/api/getReferral', headers: { 'Content-Type': 'application/json' }, body: "{ "api_token": "MY_API_TOKEN", "customerID": "1"}" }, function (error, response, body) { console.log('Status:', response.statusCode); console.log('Headers:', JSON.stringify(response.headers)); console.log('Response:', body); });
``
from urllib2 import Request, urlopen
values = """ { "api_token": "MY_API_TOKEN", "customerID": "1" } """
headers = { 'Content-Type': 'application/json' } request = Request('https://cleancloudapp.com/api/getReferral', data=values, headers=headers)
response_body = urlopen(request).read() print response_body `` require 'rubygems' if RUBY_VERSION < '1.9' require 'rest_client'
values = '{ "api_token": "MY_API_TOKEN", "customerID": "1" }'
headers = { :content_type => 'application/json' }
response = RestClient.post 'https://cleancloudapp.com/api/getReferral', values, headers puts response
`
Use Promo Code
This POST request to https://cleancloudapp.com/api/usePromo allows you use a promo code. This will update the customer's account with their new discount/credit level and the response will contain the discount percentage or credit amount to apply to the customer's order
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
| promoCode | The promo code | Y |
| onlyCheckIfValid | Only check if promo code is valid for this customer. Set to 1 if you only want to check validity but don't want to use it |
Convert Loyalty Points to Credit
This POST request to https://cleancloudapp.com/api/convertLoyaltyPoints allows you convert a customer's unused loyalty points to credit. This will update the customer's account with their new total credit level and the response will contain information about the new total credit amount as well as the credit gained
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
Add Subscription to Customer Account
This POST request to https://cleancloudapp.com/api/addSubscription allows you to subscribe a customer to a regular subscription created in Clearent/Stripe and begin charging them. If the Error response is "3D Secure Authentication required", then you will need to prompt the user to authenticate, then send again with subscriptionConfirmed = 1 if authentication was successful.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
| subscriptionID | plan ID of subscription e.g. plan_JNIndsfsdfvc | Y |
| subscriptionConfirmed | Only set to 1 if 3D Secure Authentication was triggered by previous response and was successfully authenticated |
Delete Subscription from a Customer Account
This POST request to https://cleancloudapp.com/api/deleteSubscription allows you to delete the subscription on a customer's account.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
Get Subscription from a Customer Account
This POST request to https://cleancloudapp.com/api/getSubscription allows you to get information about the subscription on a customer's account.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
Add Credit Card to Customer Account
This POST request to https://cleancloudapp.com/api/addCard allows you to add a credit card to a customer account by sending in the card token
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
| type | 1 = Stripe save card 2 = Stripe request setup intent secret 3 = Clearent Save Card 6 = Amazon Save Card |
Y |
| paymentMethodID | The payment method ID or token for the tokenized card from Stripe / Clearent / Amazon |
Charge Saved Credit Card
This POST request to https://cleancloudapp.com/api/chargeCard allows you to charge a customers saved credit card for an order
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
| orderID | ID of the Order | Y |
| type | 1 = Stripe 2 = EVO 3 = Clearent 4 = Checkout.com 5 = CleanCloud Pay 6 = Amazon |
Y |
Get Saved Credit Cards
This POST request to https://cleancloudapp.com/api/getCards allows you to fetch all of the saved cards for a customer
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
| type | 3 = Clearent 5 = CleanCloud Pay 6 = Amazon |
Y |
Set Default Credit Card
This POST request to https://cleancloudapp.com/api/setDefaultCard allows you to set the default card for a customer
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the Customer | Y |
| cardID | ID of the Card, obtained from api/getCards endpoint | Y |
| type | 3 = Clearent 5 = CleanCloud Pay 6 = Amazon |
Y |
Add Push Token
This POST request to https://cleancloudapp.com/api/addPushToken allows you to send a Firebase push notification authentication token from your customer iOS/Android app into CleanCloud. This is so that CleanCloud can automatically send a push token to your customer when their order status changes or if you would like to send them marketing from CleanCloud.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| pushToken | The push token provided by the app | Y |
| customerID | ID of the Customer | Y |
| platform | 0 = Android, 1 = iOS | Y |
| bundleID | The bundle ID of your iOS & Android app (e.g. com.companyname.appname) | Y |
Delete Push Token
This POST request to https://cleancloudapp.com/api/deletePushToken allows you to delete a Firebase push notification authentication token from your customer database after the customer logs out of or uninstalls your app. This is so you do not try to send push notifications to a customer that is no longer using your app.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| pushToken | The push token provided by the app that you wish to delete | Y |
| customerID | ID of the Customer | Y |
Add To Customer Group
This POST request to https://cleancloudapp.com/api/addToCustomerGroup allows you to assign a customer to a customer group.
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| customerID | ID of the customer | Y |
| groupID | ID of the Customer Group | Y |
Get Summary Metrics Report By Day
This POST request to https://cleancloudapp.com/api/summaryReport allows you to get summary metrics for your store
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| dateFrom | Beginning Date (yyyy-mm-dd) | Y |
| dateTo | End Date (yyyy-mm-dd) | Y |
Get Driver Location
This POST request to https://cleancloudapp.com/api/driverLocation allows you to get the most recent location of a driver based on the order ID associated with a customer
| Parameter | Description | Required |
|---|---|---|
| api_token | Your secret API token | Y |
| orderID | Order ID | Y |
| customerID | Customer ID | Y |
Get Photos
This POST request to https://cleancloudapp.com/api/getPhotos allows you to get the photos associated with an order