Workadu API v.2
API Endpoint
https://app.workadu.comThe Workadu’s API is a RESTful API. This means that the API is designed to allow you to get, create, update, & delete objects with the HTTP verbs GET, POST, PUT, PATCH, & DELETE.
Response Type (JSON)
The Workadu’s API responses are exclusively in JSON format. This means that you should always set the Content-Type header to application/json to ensure that your requests are properly accepted and processed by the API.
Authentication
Workadu’s REST API is protected by the same restrictions which are provided via Workadu standard web interface. This means that if you do not log in, you will not have any access to workadu Information. Furthermore, if you log in and do not have permission to view something in workadu, you will not be able to view it using the workadu REST API either. Because we are using workadu backend authentication credentials or API Key we should define them at the API call. Credentials should be encoded with Base64. The header is formatted like so.
Get your API KEY
Sign in to https://app.workadu.com with admin credentials. Go at settings and then at Users & Permissions. Create or Edit user with api role and copy paste the API KEY provided there.
Authentication with API KEY
Include this Authorization to header in each api call
curl https://app.workadu.com/api/services -u $2y$10$Ag6LxUSJsdfsdfrhFNQlQuDxiMAIaHr3BDuY8gLC32f5C681NCOge:
Authentication with username & password (Deprecated)
Alternatively you can use Basic Authorization with user name and password.
curl https://app.workadu.com/api/services -u $USERNAME:$PASSWORD
All API requests must be made over https. API requests without authentication will fail.
Versioning
The workadu API is constantly being worked on to add features, make improvements, and fix bugs. This means that you should expect changes to be introduced and documented. Whenever we make a significant change to an endpoint, we will increase the version number used in the path of the resource being requested. However, there are some changes or additions that are considered backwards-compatible and your applications should be flexible enough to handle them.
These include: Adding new endpoints to the API Adding new attributes to the response of an existing endpoint.Changing the order of attributes of responses (JSON by definition is an object of unordered key/value pairs) Because we aren’t versioning the API in the URI we need to define an Accept header to request a specific version.
For the current version (v2) header is formatted like so.
Accept: application/vnd.rengine.v2+json
For the first version (v1) the header is formatted like so.
Accept: application/vnd.rengine.v1+json
Getting Started ¶
How to start
In order to start using workadu API you just need to:
-
Sign in using your workadu Ultimate administrator account. If you don’ t have workadu Ultimate account please sign up or watch our introduction video learn more,
-
Create a new api user account,
-
Ready to go!
Make your first API call
Once you have created your app, you will be given a a username and a password. These will be used to authenticate your application when calling the API.
Try executing the following command to see the workadu services available in your account, just replace $APIKey with your application’s api user key.
curl https://app.workadu.com/api/services -u $APIkey:
Filtering
All GET Request endpoints can be filtered by multiple keys as query parameters as listed below.
/api/services/?filter[$RESPONSE_KEY]=$VALUE
Multiple filters are implemented using “&”. In many cases instead of ‘=’ you can replace it with specific operators that will be inticated a each end point. A sample call will look like so.
/api/services/?filter[$RESPONSE_KEY][$OPERATOR]$VALUE
Sorting
All GET Request endpoints can be sorted by a key adding a sorting query parameter as listed below (ASCEDING SORTING).
/api/services/?sort=$RESPONSE_KEY
It sorts only with one key and if it has a minus prefix it sorts descending as listed below (DECEDING SORTING).
/api/services/?sort=-$RESPONSE_KEY
Services ¶
The services resource The Services endpoint returns information about the workadu Services (vehicles, equipments, yachts) offered from the companies associated to authenticated user. The response includes the display name and other details and groups of info about each service, and lists the services in the proper display order as they are stored initial at the database. You can re-sort the results by add sorting filter at your request as show here.
This endpoint does not reflect real-time availability of the services without “Availability filters”. You can use the the same endpoint to determine real-time availability by using “Availability filters” as show below.
In some cases, the list of service returned may contain double or more services with duplicate names. This is due to multi-company results. You can get unique results if your filter them by company.
Resource End Points
Method | Endpoint | Description |
---|---|---|
POST | /api/services | Create new service [beta] |
PUT | /api/services | Update a service [beta] |
DELETE | /api/services | Delete a service -> price list -> price schemes |
GET | /api/services/ | List all services |
GET | /api/services/{service_id}{service_id},… | Retriece a specific service(s) |
POST | /api/services/pricelist | Add a price list to a service [beta] |
POST | /api/services/rates | Add rates/availability to price scheme(s) [beta] |
DELETE | /api/services/rates | Delete a price scheme(s) [beta] |
Create a new Service ¶
Body
{
"name": "Toyota corolla",
"category_id": 1234
}
Body
{
"data": {
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
}
Body
{
"name": "Toyota corolla",
"category_id": 1234,
"alias": "TOYC",
"description": "a service description",
"includes": "Text with includes",
"excludes": "Text with excludes",
"text_flag": "New",
"min_pax": 1,
"pax": 4,
"media": "https://app.workadu.com/assets/image1.png",
"extras": [
{
"id": 2593
}
],
"attributes": [
{
"id": 2522
}
]
}
Body
{
"data": {
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
}
Create a new ServicePOST/api/services/
BETA - This object contains information about a service for sale or book. At the service you can attach optionaly (expect the basic information: what includes, what excludes), attributes, extra charges, rates and avalability schemes.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
A service name,an category are mandatory data for a new service |
Service name and category are required. |
400 |
The email you supplied is malformed! |
Please check the customer’s email format. |
Update a Service ¶
Body
{
"id": 12344
}
Body
{
"data": {
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
}
Body
{
"id": 12344,
"name": "Toyota corolla",
"category_id": 1234,
"alias": "TOYC",
"description": "a service description",
"includes": "Text with includes",
"excludes": "Text with excludes",
"text_flag": "New",
"min_pax": 1,
"pax": 4,
"media": "https://app.workadu.com/assets/image1.png",
"extras": [
{
"id": 2593
}
],
"attributes": [
{
"id": 2522
}
]
}
Body
{
"data": {
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
}
Update a ServicePUT/api/services/
BETA - Update service object information.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
An id is mandatory data to update the service |
Service id is required. |
Delete a Service ¶
Body
{
"id": 12344
}
Body
{
"data": {
"id": 12344,
"deleted": true,
"message": "The resource deleted"
}
}
Delete a ServiceDELETE/api/services/
BETA - Delete service object information and its related price catalogs and price schemes.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
An id is mandatory data to delete the service |
Service id is required. |
400 |
Service id was not found in company services |
Wrong service id or service already deleted. |
List Services ¶
Body
{
"data": [
{
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
]
}
List ServicesGET/api/services
- filter[extra_filters][companyid]
integer
(optional) Example: 14The companyid of the company you want services from
- filter[extra_filters][brand]
integer
(optional) Example: 10The brand of the brand you want services from.
- filter[extra_filters][alias]
String
(optional) Example: vw-poloThe alias of a specific service.
- filter[extra_filters][title]
String
(optional) Example: Volkswagen PoloThe title of a specific service.
- filter[extra_filters][category_id]
integer
(optional) Example: 10The category_id of a specific group of services.
- filter[extra_filters][radius]
String
(optional) Example: R-100value = -1 (default) unstricted results sorted by closest.
value = 1 restrinct results to search zone.
value = R-100 restrict resuts to 100kms from start_coordinates point.
Get Service Availability ¶
Body
{
"data": [
{
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": true,
"available_spots": true,
"maxmin": {
"max": 157,
"min": 157
},
"total_days": 2,
"total_price": {
"4587": 314
},
"units": {
"4587": "per day"
},
"offers_applied": false,
"availabilities_and_rates": {
"2018-07-16": {
"rates": {
"4587": {
"date": "2018-07-16",
"weekdayname": "MON",
"day": 16,
"weekday": 0,
"resources": 18,
"availability": 18,
"rate": "155",
"spots": {
"value": "155",
"multiple_values": {
"extra_adult_value": "",
"child_value": "",
"infant_value": "",
"extra_child_value": "",
"extra_infant_value": ""
},
"offers": false,
"slots": false,
"availability": 18
},
"day_available_spots": 18,
"day_recources": 18
}
}
}
},
"next_available_slot": "2018-08-06 13:00",
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
]
}
Get Service AvailabilityGET/api/services
- filter[availability][start_coordinates]
String
(required) Example: (31.65464,27.99954)The starting coordinates use the form (lat,lon).
- filter[availability][end_coordinates]
String
(required) Example: (31.65464,27.99954)The ending coordinates use the form (lat,lon).
- filter[availability][start_date]
String
(required) Example: 2018-08-30The starting date uses the form Y-m-d.
- filter[availability][end_date]
String
(required) Example: 2018-08-30The ending date uses the form Y-m-d.
- filter[availability][start_time]
String
(required) Example: 08:00The starting date uses the form H:i
- filter[availability][end_time]
String
(required) Example: 08:00The ending date uses the form H:i
- filter[availability][coupon]
String
(optional) Example: XMASPARTYA coupon code that should be enabled as a dynamic policy at the backend
- filter[extra_filters][companyid]
integer
(optional) Example: 14The companyid of the company you want services from
- filter[extra_filters][brand]
integer
(optional) Example: 10The brand of the brand you want services from.
- filter[extra_filters][alias]
String
(optional) Example: vw-poloThe alias of a specific service.
- filter[extra_filters][title]
String
(optional) Example: Volkswagen PoloThe title of a specific service.
- filter[extra_filters][category_id]
integer
(optional) Example: 10The category_id of a specific group of services.
- filter[extra_filters][radius]
String
(optional) Example: R-100value = -1 (default) unstricted results sorted by closest.
value = 1 restrinct results to search zone.
value = R-100 restrict resuts to 100kms from start_coordinates point.
Get Specific Service ¶
Body
{
"data": [
{
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
]
}
Get Specific ServiceGET/api/services/{service_id}
- service_id
integer
(optional) Example: 32161The companyid of the company you want services from
Create a new Price List ¶
Body
{
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
}
Body
{
"data": {
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
}
Create a new Price ListPOST/api/services/pricelist
BETA - This object creates a price list and attach it to a service. A service can have many price lists. Every price list may have multiple price periods with rates and availability.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
Service id, name, type and unit are mandatory data to create a new price list |
Scheme Service id, name, type and unit are required. |
400 |
There is no service with service id: 33445 |
Service id doesn’t much company services |
Create a Price Scheme ¶
Body
{
"service_ids": "33663, 33433, 45444",
"rate": 29.99
}
Body
{
"data": {
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
}
Body
{
"service_ids": "33663, 33433, 45444",
"price_lists_ids": "21233,12333",
"period": "Weekly or 2018-12-01,2019-04-15",
"days": "MON, TUE, FRI",
"slots": "12:00, 13:00, 14:00",
"rate": 29.99,
"multiple_rates": "29.99, 23.99, 22.53, 0, 0, 0",
"availability": 2
}
Body
{
"data": {
"id": 32161,
"alias": "MATIZ",
"title": "MATIZ",
"text_flag": "",
"description": "some description",
"includes": "",
"excludes": "",
"pax": 1,
"min_pax": 1,
"type": "daily",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1435697883-matiz.jpg"
],
"company": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "``",
"country": "FRA",
"address": "P.O. Box 566",
"city": "Paris",
"reservation_email": "example@biz.com",
"currency": "$",
"media": [
"https://secure.reservationengine.net/rest/assets/bizz/1471249140-xitelogo.jpg"
]
},
"group": {
"id": 1339,
"name": "7 passenger",
"description": "Explorer/Pathfinder"
},
"total_availability": false,
"available_spots": false,
"maxmin": "null",
"total_days": "null",
"total_price": "false",
"price_lists": {
"service_id": 33663,
"name": "Base price list",
"type": "daily",
"type_value": 30,
"unit": "per day",
"price_schemes": {
"id": 12344,
"plan": "Weekly",
"period": "2018-10-01, 2018-11-10"
}
},
"offers_applied": false,
"availabilities_and_rates": [],
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
],
"attributes": [
{
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
],
"providers": []
}
}
Create a Price SchemePOST/api/services/rates
BETA - This end point add rates & availability to one or multiple price schemes. If there is no price_list_id added, then system gets service first-default price list
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
Service ids, rate |
Service ids, and a rate are required. |
400 |
There is no service with provided service ids |
Service ids doesn’t much company services |
Delete a Price Scheme ¶
Body
{
"price_shceme_id": 336
}
Body
{
"data": {
"id": 12344,
"deleted": true,
"message": "The resource deleted"
}
}
Body
{
"service_id": 33663
}
Body
{
"data": {
"id": 12344,
"deleted": true,
"message": "The resource deleted"
}
}
Delete a Price SchemeDELETE/api/services/rates
BETA - This end point deletes rates & availability scheme. The deletion will recreate all the pricing policy of the service, by re-calculation the rates and availability from the remaining pricing schemes
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
A price_sheme_id or a service_id is mandatory to retrieve service data |
A price_sheme_id or a service_id is mandatory to retrieve service data. |
400 |
There is no service with provided service id |
Service id doesn’t much to a company service |
Discounts & Sales policies ¶
The Sales policies resource are here to help you build dynamic pricing and offering automations to your platform. You can build discounts offers for specific service or create availability restrictions policies in specific geographical zones and many more.
Method | Endpoint | Description |
---|---|---|
POST | /api/sales/ | Create a new sales policy |
DELETE | /api/sales/ | Delete a sales policy |
Action field short codes appendix
Field | CODE | Description |
---|---|---|
action | 120 | Set price to a fixed amount per spot |
action | 1609 | Set total price to a fixed amount |
action | 154 | Modify price per spot |
action | 160 | Modify total price |
action | 170 | Modify Allotment per spot |
action | 1843 | Modify Availability per spot |
action | 180 | Round total price |
action | 130 | Change Start Time |
action | 140 | Change Start Location |
action | 150 | Add a comment |
Condition field short codes apendix
Field | CODE | Description |
---|---|---|
condition | 100 | Searching Date |
condition | 102 | Start Date |
condition | 103 | Start Time |
condition | 104 | Start Location |
condition | 105 | End Date |
condition | 106 | End Time |
condition | 107 | End Location |
condition | 108 | Weekday of Searching |
condition | 109 | Weekday of Start |
condition | 110 | Weekday of End |
condition | 111 | Contains Date |
condition | 112 | Contains Weekday |
condition | 113 | Days ahead of start date |
condition | 148 | Booking Days |
condition | 114 | Total Cost |
condition | 115 | Times Applied |
condition | 116 | Affiliate |
condition | 117 | Booking Source |
condition | 147 | Reservation Between |
condition | 119 | Coupon code |
condition | 120 | Start Location in Zone |
condition | 121 | End Location in Zone |
condition | 122 | Minutes ahead of start timeb |
condition | 123 | Booking slots in minutes |
condition | 124 | Distance in meters |
Request OPERATOR shortcodes anpedix
Field | CODE | Description |
---|---|---|
operator | >= | Greater or equal |
operator | >* | Greater |
operator | <= | Lower or equal |
operator | <* | Lower |
operator | == | Equal |
operator | != | Not equal |
operator | <> | Between |
operator | !<> | Not between |
Create new Sales Policy ¶
Body
{
"title": "30% discount",
"action": 120,
"action_value": "-15%"
}
Body
{
"data": {
"id": 1831,
"title": "30% discount",
"valid_from": "2018-01-01",
"valid_to": "2030-01-01",
"action": "Set price to a fixed amount per spot",
"action_value": "-15%",
"hide": false,
"ordering": 10,
"rules": [
{
"name": 120,
"operator": "==",
"value": 145
}
],
"price_list_ids": "3455, 3756"
}
}
Body
{
"title": "30% discount",
"action": 120,
"action_value": "-15%",
"hide": "true",
"conditions": "140==145;141==146",
"price_lists_ids": "All or 33221,2223,33433",
"valid_from": "2018-01-01",
"valid_to": "2040-01-01"
}
Body
{
"data": {
"id": 1831,
"title": "30% discount",
"valid_from": "2018-01-01",
"valid_to": "2030-01-01",
"action": "Set price to a fixed amount per spot",
"action_value": "-15%",
"hide": false,
"ordering": 10,
"rules": [
{
"name": 120,
"operator": "==",
"value": 145
}
],
"price_list_ids": "3455, 3756"
}
}
Create new Sales PolicyPOST/api/sales
[BETA] When you create a sales policy you must specify at least one service (or price list) as scope to be applied.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
A title, action, action_value are required to create an Sales policy |
A title, action, action_value are required to create an Sales policy |
400 |
No action with this short code exists. Please check Action Shortcodes and try again! |
No action with this short code exists. Please check Action Shortcodes and try again! |
Delete a Sales Policy ¶
Body
{
"id": 12344
}
Body
{
"data": {
"id": 12344,
"deleted": true,
"message": "The resource deleted"
}
}
Delete a Sales PolicyDELETE/api/sales
[BETA] Delete a sales policy
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
An id is requird to delete this resource |
An id is requird to delete this resource |
Orders ¶
The Orders endpoints returns information about the workadu Orders (Bookings) that have been made by the authenticated user. The response includes the display name and other details and groups of info about each order, and lists the orders in the proper display order as they are stored initial at the database. You can re-sort the results by add sorting filter at your request as show here.
Method | Endpoint | Description |
---|---|---|
POST | /api/orders/ | Check for availability and create a new order |
GET | /api/orders/ | Get logged in user related order(s) |
GET | /api/orders/{booking_id}{booking_id},… | Get details about specific order(s) |
PATCH | /api/orders/{booking_id} | Cancel the specific order and copy to a new one with the updated post info. This endpoint can be used for updating order info |
DELETE | /api/orders/{booking_id} | Check and cancel an existing order. |
Create new Order ¶
Body
{
"start_coordinates": "(36.8915064, 27.2877228)",
"start_location_name": "Kos town",
"start_date": "2018-07-18",
"start_time": "11:00",
"end_coordinates": "(36.8915064, 27.2877228)",
"end_location_name": "Kos town",
"end_date": "2018-07-18",
"end_time": "11:59",
"service_id": 33357,
"customer_id": 2111,
"selected_slots": "11:00",
"slot_start_time": "11:00",
"slot_end_time": "11:59"
}
Body
{
"data": {
"id": 1831,
"reference": "4GELNA",
"company_id": 475,
"status": "PRE_ASSIGNED",
"customer": {
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
},
"total_cost": 55,
"orders": {
"order": {
"id": 6274,
"reference": 627401,
"service_id": "33273",
"start": {
"coordinates": "(39.074208, 21.824312)",
"location_name": "Main Desk",
"date": "2018-07-11",
"time": "08:09"
},
"end": {
"coordinates": "(39.074208, 21.824312)",
"location_name": "Main Desk",
"date": "2018-07-11",
"time": "08:09"
},
"comment": "``",
"status": "PRE_ASSIGNED",
"total_cost": 55,
"recource": {
"number": "Peg-1",
"type": "``",
"color": "``"
},
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
]
}
},
"currency": "$",
"payments": [
{
"id": 1810,
"issue_date": "2018-07-05",
"amount": 55,
"comments": "Payment for Booking #4GELNA"
}
]
}
}
Create new OrderPOST/api/orders
Error codes
HTTP status | Code | Description |
---|---|---|
500 |
Undefined index: distance |
Distance between starting coordinates and the desks’(user role) locations cannot be resolved. |
400 |
No customer fullname was supplied! No mobile or email was supplied! |
There is no customer_id or customer fullname, email and mobile provided |
400 |
No customer found! |
There is no customer with the customer_id that was provided. |
400 |
There is no availability or rate set for this service for your selected criteria |
There is on availability at the specific dates and time that was provided. Please try other dates or services. |
Get all Orders ¶
Body
{
"data": [
{
"id": 1831,
"reference": "4GELNA",
"company_id": 475,
"status": "PRE_ASSIGNED",
"customer": {
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
},
"total_cost": 55,
"orders": {
"order": {
"id": 6274,
"reference": 627401,
"service_id": "33273",
"start": {
"coordinates": "(39.074208, 21.824312)",
"location_name": "Main Desk",
"date": "2018-07-11",
"time": "08:09"
},
"end": {
"coordinates": "(39.074208, 21.824312)",
"location_name": "Main Desk",
"date": "2018-07-11",
"time": "08:09"
},
"comment": "``",
"status": "PRE_ASSIGNED",
"total_cost": 55,
"recource": {
"number": "Peg-1",
"type": "``",
"color": "``"
},
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
]
}
},
"currency": "$",
"payments": [
{
"id": 1810,
"issue_date": "2018-07-05",
"amount": 55,
"comments": "Payment for Booking #4GELNA"
}
]
}
]
}
Get all OrdersGET/api/orders/
- filter[booking_reference]
string
(optional) Example: VBV7DHFilter orders by booking reference.
- filter[booking_status]
string
(optional) Example: PAIDFilter orders by booking status.
Choices:
ON_PROGRESS
PAID
NOT_PAID
- filter[company_id]
integer
(optional) Example: 14The companyid of the specific company you want orders from.
- filter[customer_id]
integer
(optional) Example: 119Filter orders by the id of a specific customer.
- filter[service_id]
integer
(optional) Example: 32161Filter orders by the id of a specific service.
- filter[start_coordinates]
string
(optional) Example: (39.074208, 21.824312)Filter orders by the coordinates of a specific starting point.
- filter[start_location_name]
string
(optional) Example: LondonFilter orders by the name of a specific starting point.
- filter[end_coordinates]
string
(optional) Example: (39.074208, 21.824312)Filter orders by the coordinates of a specific ending point.
- filter[end_location_name]
string
(optional) Example: LondonFilter orders by the name of a specific ending point.
- filter[status]
string
(optional) Example: CANCELLEDFilter orders by the status of the order.
Choices:
PRE_ASSIGNED
ASSIGNED_NOT_CONFIRMED
ASSIGNED_AND_AGREED
CHECKED_OUT
CHECKED_IN
CHECKED_IN_EARLIER
CANCELLED
- filter[total_cost]
float
(optional) Example: 20.00Filter orders by checking the total cost of each order. Operators may be applied here.
- filter[start_date]
string
(optional) Example: 2018-08-30Filter orders by checking the starting date of each order. Operators may be applied here.
- filter[start_time]
string
(optional) Example: 13:00Filter orders by checking the starting time of each order. Operators may be applied here.
- filter[end_date]
string
(optional) Example: 2018-08-31Filter orders by checking the ending date of each order. Operators may be applied here.
- filter[end_time]
string
(optional) Example: 18:00Filter orders by checking the ending time of each order. Operators may be applied here.
Get Specific Order ¶
Body
{
"data": [
{
"id": 1831,
"reference": "4GELNA",
"company_id": 475,
"status": "PRE_ASSIGNED",
"customer": {
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
},
"total_cost": 55,
"orders": {
"order": {
"id": 6274,
"reference": 627401,
"service_id": "33273",
"start": {
"coordinates": "(39.074208, 21.824312)",
"location_name": "Main Desk",
"date": "2018-07-11",
"time": "08:09"
},
"end": {
"coordinates": "(39.074208, 21.824312)",
"location_name": "Main Desk",
"date": "2018-07-11",
"time": "08:09"
},
"comment": "``",
"status": "PRE_ASSIGNED",
"total_cost": 55,
"recource": {
"number": "Peg-1",
"type": "``",
"color": "``"
},
"extras": [
{
"id": 2593,
"name": "baby seat",
"description": "Baby seat description",
"media": "``",
"params": {
"rangeMax": 2,
"rangeMin": 1,
"price": 5,
"fixedPrice": 3,
"parent": "null (null,nullable)"
}
}
]
}
},
"currency": "$",
"payments": [
{
"id": 1810,
"issue_date": "2018-07-05",
"amount": 55,
"comments": "Payment for Booking #4GELNA"
}
]
}
]
}
Get Specific OrderGET/api/orders/{booking_id}
- booking_id
integer
(optional) Example: 1831you can specify more booking_id separated by comma
,
Update an Order ¶
Body
{
"id": 992
}
Body
{
"data": {
"op": "replace",
"path": "/id",
"value": "992"
}
}
Update an OrderPATCH/api/orders/{booking_id}
Cancels the specific order and creates a new one based on POST parameters. If any manatory paramenter are not provided they will be copied from the canceled order
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
This order can not be modified in its current state. |
If order status is “CANCELLED” cannot be tested. |
400 |
This order can not be tested using the data you provided. |
You might have not provide order id, or your request parameters are not valid. |
- booking_id
integer
(optional) Example: 1831the id of the specific order
Delete an Order ¶
Body
{
"data": {
"op": "replace",
"path": "/status",
"value": "CANCELLED"
}
}
Delete an OrderDELETE/api/orders/{booking_id}
Check and cancel an existing order. The status of the specific order should be ‘PRE_ASSIGNED’, ‘NOT_PAID’ or ‘ASSIGNED_NOT_CONFIRMED’. In any other case response with a 400 Error.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
You must provide the order ID(s) |
If order status is CANCELLED cannot be tested. |
400 |
No orders found to be canceled. |
The order ids you specified cannot be found, or cannot be canceled. Cancelation can be done only in order that their status is PRE_ASSIGNED , NOT_PAID or ASSIGNED_NOT_CONFIRMED and belong to the authenticated user. |
- booking_id
integer
(optional) Example: 32161the id of the specific order.
Customers ¶
The Customers endpoints returns information about the workadu Customers that have been made by the authenticated user. In case user is has a “companyadmin” role, then the results contain all the customers that belong at user company. The response includes the display name and other details and groups of info about each customer, and lists the customers in the proper display order as they are stored initial at the database. You can re-sort the results by add sorting filter at your request as show here.
Method | Endpoint | Description |
---|---|---|
GET | /api/customers/ | Get logged in user related customers. In case user is has a “companyadmin” role, then the results contain all the customers that belong at user company |
GET | /api/customers/{customer_id}{customer_id},… | Get specific customers details |
POST | /api/customers/ | Add a new customer |
PATCH | /api/customers/{customer_id} | Update customer’s details. |
Create a new Customer ¶
Body
{
"fullname": "John Doe",
"email": "johnydoe@doe.com",
"city": "Athens",
"address": "Patisiwn 11",
"postal_code": 13211,
"country": "Greece",
"mobile": 1112223334,
"vat_number": "112233",
"birthdate": "1985-02-11",
"gender": "M",
"social": "social=[{“social”:”facebook.com”, “alias”:”johndoe”}]",
"title": "Example company name",
"tax_office": "ATHENS TAX OFFICE",
"business_type": "Lawyer",
"companyid": 475
}
Body
{
"data": {
"id": 3332,
"fullname": "John Doe",
"email": "johnydoe@doe.com",
"mobile": 1112223334,
"country": "Greece",
"city": "Athens",
"address": "Patisiwn 11",
"postal_code": 13211,
"vat_number": "112233",
"birthdate": "1985-02-11",
"gender": "M",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"title": "Example company name",
"tax_office": "ATHENS TAX OFFICE",
"business_type": "Lawyer",
"companyid": 475,
"media": [
"http://stage.reservationengine.net/assets/images/aueb-475/1531817042-pic2.png"
]
}
}
Create a new CustomerPOST/api/customers/
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
A fullname and an email are mandatory data for a new customer |
Fullname and email are mandatory post parameters. |
400 |
The email you supplied is malformed! |
Please check the customer’s email format. |
List all Customers ¶
Body
{
"data": {
"id": 3332,
"fullname": "John Doe",
"email": "johnydoe@doe.com",
"mobile": 1112223334,
"country": "Greece",
"city": "Athens",
"address": "Patisiwn 11",
"postal_code": 13211,
"vat_number": "112233",
"birthdate": "1985-02-11",
"gender": "M",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"title": "Example company name",
"tax_office": "ATHENS TAX OFFICE",
"business_type": "Lawyer",
"companyid": 475,
"media": [
"http://stage.reservationengine.net/assets/images/aueb-475/1531817042-pic2.png"
]
}
}
List all CustomersGET/api/customers/
- filter[fullname]
string
(optional) Example: John DoeThe fullname of customer(s) you want details from.
- filter[email]
string
(optional) Example: jdoe@gmail.comThe email of customer(s) you want details from.
- filter[mobile]
string
(optional) Example: +4469960022The mobile of customer(s) you want details from.
- filter[Country]
string
(optional) Example: UKThe country of customer(s) you want details from. ISO Country codes should be used.
- filter[city]
string
(optional) Example: LondonThe city of customer(s) you want details from.
- filter[postal_code]
string
(optional) Example: N1 7GUThe city of customer(s) you want details from.
- filter[company_id]
integer
(optional) Example: 14The company id of customer(s) you want details from.
Get a specific Customer ¶
Body
{
"data": {
"id": 3332,
"fullname": "John Doe",
"email": "johnydoe@doe.com",
"mobile": 1112223334,
"country": "Greece",
"city": "Athens",
"address": "Patisiwn 11",
"postal_code": 13211,
"vat_number": "112233",
"birthdate": "1985-02-11",
"gender": "M",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"title": "Example company name",
"tax_office": "ATHENS TAX OFFICE",
"business_type": "Lawyer",
"companyid": 475,
"media": [
"http://stage.reservationengine.net/assets/images/aueb-475/1531817042-pic2.png"
]
}
}
Get a specific CustomerGET/api/customers/{customer_id}
- customer_id
integer
(optional) Example: 3332The id for the specific customer.
Update a Customer ¶
Body
{
"fullname": "John Doe",
"email": "johnydoe@doe.com",
"city": "Athens",
"address": "Patisiwn 11",
"postal_code": 13211,
"country": "Greece",
"mobile": 1112223334,
"vat_number": "112233",
"birthdate": "1985-02-11",
"gender": "M",
"social": "social=[{“social”:”facebook.com”, “alias”:”johndoe”}]",
"title": "Example company name",
"tax_office": "ATHENS TAX OFFICE",
"business_type": "Lawyer",
"companyid": 475
}
Body
{
"data": {
"op": "replace",
"path": "/fullname",
"value": "Jordan Johnson"
}
}
Update a CustomerPATCH/api/customers/{customer_id}
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
No customers could be found. |
The customer_id you provided is not in authenticated user customer list. |
400 |
Please provide a customer_id! |
The endpoint doesn’t have a valid customer_id. |
- customer_id
integer
(optional) Example: 32161The id for the specific customer.
Invoices ¶
The Invoices/documents resource return information about workadu invoices or any other document type. Invoices can be automatically or manualy generated by user or API.
Method | Endpoint | Description |
---|---|---|
GET | /api/invoices/{invoice_id}{invoice_id},… | Get invoices |
POST | /api/invoices/ | Add a new Invoice |
PUT | /api/invoices/{invoice_id} | Update an Invoice |
POST | /api/invoiceline/ | Add a new invoice line |
GET | /api/series/{series_id}{series_id},… | Get company series |
POST | /api/invoices/publish | Publish a Draft invoice and optionaly send it to email |
List Invoices ¶
Body
curl https://app.workadu.com/api/invoices \
-H "Accept: application/vnd.rengine.v2+json" \
-u wk_abcd123123abcd1234: \
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
- Integrated with aade
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22",
"aade": [
{
"id": 5,
"mark": 400023432432,
"uid": "F123LKAD81ABJALBADAF",
"should_send": true
}
]
}
}
Body
curl https://app.workadu.com/api/invoices/1234 \
-H "Accept: application/vnd.rengine.v2+json" \
-u wk_abcd123123abcd1234: \
-d customer_id = 1234 \
-d series_id = 2100 \
-d issue_date_from = 2019-01-01 \
-d issue_date_to = 2019-03-01
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
- Integrated with aade
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22",
"aade": [
{
"id": 5,
"mark": 400023432432,
"uid": "F123LKAD81ABJALBADAF",
"should_send": true
}
]
}
}
List InvoicesGET/api/invoices/
- customer_id
number
(optional) Example: 12443The id of the customer.
- series_id
number
(optional) Example: 1233The document series_id you want to get .
- status
string
(optional) Example: validThe invoice status (valid, draft, cancelled).
- issue_date_from
string
(optional) Example: 2018-01-13The issue date you want to get invoice from.
- issue_date_to
string
(optional) Example: 2018-01-22The issue date you want to get invoice to.
- aade_should_send
number
(optional) Example: 1Fetch invoices that should send to mydata.
Create a new Invoice ¶
Body
curl https://app.workadu.com/api/invoices \
-u wk_abcd123123abcd1234: \
-d customer_id = 1234 \
-d series_id = 2100
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Body
curl https://app.workadu.com/api/invoices \
-u wk_abcd123123abcd1234: \
-d customer_id = 1234 \
-d series_id = 2100 \
-d discount_percent = 10 \
-d vat_percent = 19 \
-d currency = "EUR" \
-d payment_type = 1222 \
-d tag = "#2AMSJ72"
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Create a new InvoicePOST/api/invoices/
This endpoint create an invoice (draft if status is not defined), for a given customer.
Error codes
HTTP status | Code | Description |
---|---|---|
400 You didn’t specify a correct customer ID. |
Please provide a valid customer_id as a POST parameter | |
400 |
You didn’t specify a correct series ID. |
Please provide a valid series_id as a POST parameter |
- customer_id
number
(required) Example: 1231The customer id of the specific invoice. if not status parameter is set the invoice will be set up as a draft invoice.
- series_id
number
(required) Example: 1231The series id of the document.
- invoice_num
number
(optional) Example: 1Invoice number
- discount_percent
number
(optional) Example: 10A discount percent for the all invoice lines
- vat_percent
number
(optional) Example: 19A vat percent of this specific invoice. In case of not set company vat percent will be used.
- currency
string
(optional) Example: EURThe currency of this specific invoice. In case of not set company currency will be used.
- payment_type
number
(optional) Example: 1222The series of the payment type of the invoice. This is required when the invoice is for digital tax.
- tag
string
(optional) Example: 'Expense'The tag of this specific invoice.
Update an Invoice ¶
Body
curl https://app.workadu.com/api/invoice/12321\
-u wk_abcd123123abcd1234: \
-d payment_type = 2100
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Body
curl https://app.workadu.com/api/invoice/123123 \
-u wk_abcd123123abcd1234: \
-d customer_id = 1234 \
-d payment_type = 1222 \
-d tag = "#2AMSJ72" \
-d notes = "Some notes"
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Update an InvoicePUT/api/invoices/
This endpoint update an invoice, for its basic info.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
Validation erros |
Please provide a valid invoice_id as a PUT parameter |
- customer_id
number
(required) Example: 1231The customer id of the specific invoice.
- invoice_num
number
(optional) Example: 1Invoice number
- payment_type
number
(optional) Example: 1222The series of the payment type of the invoice. This is required when the invoice is for digital tax.
- tag
string
(optional) Example: 'Expense'The tag of this specific invoice.
- notes
string
(optional) Example: 'footer notes'Add footer notes as text to the invoice.
Create a new Invoice line ¶
Body
{
"invoice_id": 1231,
"description": "2 days charge",
"amount": "12.00"
}
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Body
{
"invoice_id": 1231,
"description": "2 days charge",
"amount": 12,
"quantity": 1,
"line_discount": 10
}
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Create a new Invoice linePOST/api/invoiceline/
This endpoint create an invoice item line to be added to a draft invoice.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
The invoice is not in Draft mode |
Please check the invoice status then |
400 |
The invoice is not valid or exist |
The invoice_id does not exist |
List company Series ¶
Body
{
"data": {
"id": 911,
"title": "Invoice",
"last_number": 123,
"type": "fiscal"
}
}
List company SeriesGET/api/series/series_id
Seies are the documents type. For example series can be Invoice, Expense, Quote or payment types like cash, credit card, deposit
Publish a draft Invoice ¶
Body
{
"invoice_id": 1231,
"send": true
}
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Body
curl https://app.workadu.com/api/services \
-u wk_abcd123123abcd1234: \
-d invoice_id = 1234 \
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Body
curl https://app.workadu.com/api/services \
-u wk_abcd123123abcd1234: \
-d invoice_id = 1234 \
-d send = true
Body
{
"data": {
"id": 123212,
"invoice_number": "A-1233",
"series": "INVOICE",
"user": [
{
"id": 123212,
"email": "hello@workadu.com"
}
],
"customer": [
{
"id": 911,
"fullname": "David Oregon",
"email": "info@davidoregon.com"
}
],
"issue_date": "2018-01-13",
"due_date": "2018-02-13",
"discount_amount": 4,
"vat_amount": 2,
"total_amount": 14,
"currency": "EUR",
"currency_rate": 1,
"lines": [
{
"id": 911,
"description": "For sale",
"quantity": 1,
"solo_amount": 10,
"total_amount": 20,
"discount_percent": 10,
"vat_percent": 0,
"final_amount": 18
}
],
"status": "VALID",
"tag": "#ASS4J22"
}
}
Publish a draft InvoicePOST/api/invoices/publish/
This endpoint publish an already created invoice, and optionally send it to customer as PDF through email using the relative email template.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
You didn't specify a correct invoice ID. |
Please provide a valid invoice_id as a POST parameter |
400 |
The invoice is already published with the same number! |
Please provide a unique invoice number |
- invoice_id
number
(required) Example: 1231The invoice id of the specific resource.
- send
boolean
(optional) Example: trueIf this is set to
true
then the invoice will be published and send to customer. If not the end point will only publish the invoice.- aade_send
boolean
(optional) Example: trueSend invoice to mydata. If set to
true
invoice will always be send. If set tofalse
the invoice will never send. If the parameter is not set at all the invoice will be send depending on theauto_send
setting in the invoice’s series.
List withholdings ¶
Body
{
"data": [
{
"id": 1,
"invoice_id": 5,
"label": "Example withholding label",
"type": "flat",
"percentage_value": 30,
"flat_value": 45,
"underlying_value": 150,
"aade_tax_type_id": 5,
"created_at": "2022-01-25 21:21:53",
"updated_at": "2022-01-25 21:21:53"
}
]
}
Body
{
"message": "No query results for model [Invoice] 1",
"status_code": 404
}
List withholdingsGET/api/invoices/{invoiceId}/withholdings
This endpoint lists all withholdings for the given invoice
- invoiceId
integer
(required)Invoice’s id
Get a specific withholding ¶
Body
{
"data": {
"id": 1,
"invoice_id": 5,
"label": "Example withholding label",
"type": "flat",
"percentage_value": 30,
"flat_value": 45,
"underlying_value": 150,
"aade_tax_type_id": 5,
"created_at": "2022-01-25 21:21:53",
"updated_at": "2022-01-25 21:21:53"
}
}
Body
{
"message": "No query results for model [Invoice] 1",
"status_code": 404
}
Body
{
"message": "No query results for model [Withholding] 1",
"status_code": 404
}
Get a specific withholdingGET/api/invoices/{invoiceId}/withholdings/{withholdingId}
This endpoint lists all withholdings for the given invoice
- invoiceId
integer
(required)Invoice’s id
- withholdingId
integer
(required)Withholdings’s id
Create a withholding ¶
Body
{
"label": "Example withholding",
"type": "percent",
"percentage_value": "30",
"flat_value": "45",
"underlying_value": "150",
"aade_tax_type_id": "5",
"aade_tax_category_id": "1"
}
Body
{
"data": {
"id": 1,
"invoice_id": 5,
"label": "Example withholding label",
"type": "flat",
"percentage_value": 30,
"flat_value": 45,
"underlying_value": 150,
"aade_tax_type_id": 5,
"created_at": "2022-01-25 21:21:53",
"updated_at": "2022-01-25 21:21:53"
}
}
Body
{
"message": "No query results for model [Invoice] 1",
"status_code": 404
}
Body
{
"message": "The given data was invalid.",
"errors": {
"label": [
"The label field is required."
],
"type": [
"The type field is required."
],
"underlying_value": [
"The underlying value field is required."
],
"aade_tax_type_id": [
"The aade tax type id field is required."
]
},
"status_code": 422
}
Create a withholdingPOST/api/invoices/{invoiceId}/withholdings
This creates a withholding for the given invoice
- invoiceId
string
(required)Invoice to add the withholding to
- label
string
(required) Example: Example withholdingShort description for the withholding.
- type
string
(required) Example: percentWithholding type. Accepts percent (1 to 100) or flat
- percentage_value
numeric
(optional) Example: 30Percentage value of the withholding, required when type is set to “percent”
- flat_value
numeric
(optional) Example: 10Flat value of the withholding, required when type is set to “flat”
- underlying_value
numeric
(optional) Example: 100Underlying value of the withholding. If not set the amount of the invoice will be used by default.
- aade_tax_type_id
integer
(required) Example: 5Aade tax type. For the available tax types see Get aade tax types endproint
- aade_tax_category_id
integer
(required) Example: '1'Aade tax category id, required when aade_tax_type_id is different than 5. For available aade tax categories see Get aade tax categories endproint
Update a withholding ¶
Body
{
"label": "new label"
}
Body
{
"data": {
"id": 1,
"invoice_id": 5,
"label": "new label",
"type": "flat",
"percentage_value": 30,
"flat_value": 45,
"underlying_value": 150,
"aade_tax_type_id": 5,
"created_at": "2022-01-25 21:21:53",
"updated_at": "2022-01-25 21:21:53"
}
}
Update a withholdingPUT/api/invoices/{invoiceId}/withholdings/{withholdingId}
This endpoint is used to update a withholding for the given invoice You need to send only the parameters that need to be updated
- invoiceId
string
(required)Invoice to add the withholding to
- withholdingId
integer
(required)Withholdings’s id
- label
string
(optional) Example: Example withholdingShort description for the withholding.
- type
string
(optional) Example: percent|flatWithholding type. Accepts percent (1 to 100) or flat
- percentage_value
numeric
(optional) Example: 30Percentage value of the withholding, required when type is set to “percent”
- flat_value
numeric
(optional) Example: 10Flat value of the withholding, required when type is set to “flat”
- underlying_value
numeric
(optional) Example: 100Underlying value of the withholding
- aade_tax_type_id
integer
(required) Example: 5Aade tax type. For the available tax types see Get aade tax types endproint
- aade_tax_category_id
integer
(required) Example: '1'Aade tax category id, required when aade_tax_type_id is different than 5. For available aade tax categories see Get aade tax categories endproint
Delete a withholding ¶
Body
{
"data": {
"id": 1,
"invoice_id": 5,
"label": "Example withholding label",
"type": "flat",
"percentage_value": 30,
"flat_value": 45,
"underlying_value": 150,
"aade_tax_type_id": 5,
"created_at": "2022-01-25 21:21:53",
"updated_at": "2022-01-25 21:21:53"
}
}
Body
{
"message": "No query results for model [Invoice] 1",
"status_code": 404
}
Body
{
"message": "No query results for model [Withholding] 1",
"status_code": 404
}
Delete a withholdingDELETE/api/invoices/{invoiceId}/withholdings/{withholdingId}
This endpoint deletes a withholding for the given invoice
- invoiceId
integer
(required)Invoice’s id
- withholdingId
integer
(required)Withholdings’s id
Get aade tax types ¶
Body
{
"data": [
{
"id": "1",
"name": "Παρακρατούμενος Φόρος"
},
{
"id": "2",
"name": "Τέλη"
},
{
"id": "3",
"name": "Λοιποί Φόροι"
},
{
"id": "4",
"name": "Χαρτόσημο "
},
{
"id": "5",
"name": "Κρατήσεις"
}
]
}
Get aade tax typesGET/api/withholdings/aade-tax-types
List all aade withholding types
Get aade tax categories ¶
Body
{
"data": [
{
"id": 1,
"name": "Περιπτ. β’- Τόκοι - 15%"
},
{
"id": 2,
"name": "Περιπτ. γ’ - Δικαιώματα - 20%"
},
{
"id": 3,
"name": "Περιπτ. δ’ - Αμοιβές Συμβουλών Διοίκησης - 20%"
},
{
"id": 4,
"name": "Περιπτ. δ’ - Τεχνικά Έργα - 3%"
},
{
"id": 5,
"name": "Υγρά καύσιμα και προϊόντα καπνοβιομηχανίας 1%"
},
{
"id": 6,
"name": "Λοιπά Αγαθά 4%"
},
{
"id": 7,
"name": "Παροχή Υπηρεσιών 8%"
},
{
"id": 8,
"name": "Προκαταβλητέος Φόρος Αρχιτεκτόνων και Μηχανικών επί Συμβατικών Αμοιβών, για Εκπόνηση Μελετών και Σχεδίων 4%"
},
{
"id": 9,
"name": "Προκαταβλητέος Φόρος Αρχιτεκτόνων και Μηχανικών επί Συμβατικών Αμοιβών, που αφορούν οποιασδήποτε άλλης φύσης έργα 10%"
},
{
"id": 10,
"name": "Προκαταβλητέος Φόρος στις Αμοιβές Δικηγόρων 15%"
},
{
"id": 11,
"name": "Παρακράτηση Φόρου Μισθωτών Υπηρεσιών παρ. 1 αρ. 15 ν. 4172/2013"
},
{
"id": 12,
"name": "Παρακράτηση Φόρου Μισθωτών Υπηρεσιών παρ. 2 αρ. 15 ν. 4172/2013 - Αξιωματικών Εμπορικού Ναυτικού"
},
{
"id": 13,
"name": "Παρακράτηση Φόρου Μισθωτών Υπηρεσιών παρ. 2 αρ. 15 ν. 4172/2013 - Κατώτερο Πλήρωμα Εμπορικού Ναυτικού"
},
{
"id": 14,
"name": "Παρακράτηση Ειδικής Εισφοράς Αλληλεγγύης"
},
{
"id": 15,
"name": "Παρακράτηση Φόρου Αποζημίωσης λόγω Διακοπής Σχέσης Εργασίας παρ. 3 αρ. 15 ν. 4172/2013"
},
{
"id": 16,
"name": "α1) ασφάλιστρα κλάδου πυρός 20%"
},
{
"id": 17,
"name": "α2) ασφάλιστρα κλάδου πυρός 20%"
},
{
"id": 18,
"name": "β) ασφάλιστρα κλάδου ζωής 4%"
},
{
"id": 19,
"name": "γ) ασφάλιστρα λοιπών κλάδων 15%"
},
{
"id": 20,
"name": "δ) απαλλασσόμενα φόρου ασφαλίστρων 0%."
},
{
"id": 21,
"name": "Ξενοδοχεία 1-2 αστέρων 0,50 €"
},
{
"id": 22,
"name": "Ξενοδοχεία 3 αστέρων 1,50 €"
},
{
"id": 23,
"name": "Ξενοδοχεία 4 αστέρων 3,00 €"
},
{
"id": 24,
"name": "Ξενοδοχεία 4 αστέρων 4,00 €"
},
{
"id": 25,
"name": "Ενοικιαζόμενα - επιπλωμένα δωμάτια - διαμερίσματα 0,50 €"
},
{
"id": 26,
"name": "Ειδικός Φόρος στις διαφημίσεις που προβάλλονται από την τηλεόραση (ΕΦΤΔ) 5%"
},
{
"id": 27,
"name": "3.1 Φόρος πολυτελείας 10% επί της φορολογητέας αξίας για τα ενδοκοινοτικώς αποκτούμενα και εισαγόμενα από τρίτες χώρες 10%"
},
{
"id": 28,
"name": "3.2 Φόρος πολυτελείας 10% επί της τιμής πώλησης προ Φ.Π.Α. για τα εγχωρίως παραγόμενα είδη 10%"
},
{
"id": 29,
"name": "Δικαίωμα του Δημοσίου στα εισιτήρια των καζίνο (80% επί του εισιτηρίου)"
},
{
"id": 30,
"name": "Συντελεστής 1,2 %"
},
{
"id": 31,
"name": "Συντελεστής 2,4 %"
},
{
"id": 32,
"name": "Συντελεστής 3,6 %"
},
{
"id": 33,
"name": "Για μηνιαίο λογαριασμό μέχρι και 50 ευρώ 12%"
},
{
"id": 34,
"name": "Για μηνιαίο λογαριασμό από 50,01 μέχρι και 100 ευρώ 15%"
},
{
"id": 35,
"name": "Για μηνιαίο λογαριασμό από 100,01 μέχρι και 150 ευρώ 18%"
},
{
"id": 36,
"name": "Για μηνιαίο λογαριασμό από 150,01 ευρώ και άνω 20%"
},
{
"id": 37,
"name": "Τέλος καρτοκινητής επί της αξίας του χρόνου ομιλίας (12%)"
},
{
"id": 38,
"name": "Τέλος στη συνδρομητική τηλεόραση 10%"
},
{
"id": 39,
"name": "Τέλος συνδρομητών σταθερής τηλεφωνίας 5%"
},
{
"id": 40,
"name": "Περιβαλλοντικό Τέλος & πλαστικής σακούλας ν. 2339/2001 αρ. 6α 0,07 ευρώ ανά τεμάχιο"
},
{
"id": 41,
"name": "Εισφορά δακοκτονίας 2%"
}
]
}
Get aade tax categoriesGET/api/withholdings/aade-tax-categories
List all aade withholding categories
- tax_type_id
number
(optional) Example: 1Get categories for a specific tax_type_id.
Payments ¶
The payments has only one POST endpoint. You can always add new payments. If you like to discard a payment you have to add a new one with minus amount. You cannot delete or modify or get details for a payment. as shown here.
Method | Endpoint | Description |
---|---|---|
GET | /api/payments/payment_id1,payment_id1,… | Get Payments |
POST | /api/payments/ | Add a new payment for invoices |
POST | /api/payments/ | Add a new payment for an Order or Booking |
POST | /api/payments/ | Add a new general payment for a customer |
List Payments ¶
Body
curl https://app.workadu.com/api/payments \
-H "Accept: application/vnd.rengine.v2+json" \
-u wk_abcd123123abcd1234: \
Body
{
"data": {
"issue_date": "2016-09-14",
"customer_id": 359,
"series": "Cash",
"transaction_num,": 15,
"amount": 80,
"currency": "$",
"comments": "Payment for the Order #1015",
"order_id": 1015
}
}
Body
curl https://app.workadu.com/api/payments/1234 \
-H "Accept: application/vnd.rengine.v2+json" \
-u wk_abcd123123abcd1234: \
-d customer_id = 1234 \
-d series_id = 2100 \
-d issue_date_from = 2019-01-01 \
-d issue_date_to = 2019-03-01
Body
{
"data": {
"issue_date": "2016-09-14",
"customer_id": 359,
"series": "Cash",
"transaction_num,": 15,
"amount": 80,
"currency": "$",
"comments": "Payment for the Order #1015",
"order_id": 1015
}
}
List PaymentsGET/api/payments/
Get all company payments or filter them optionaly with parameters.
- customer_id
number
(optional) Example: 12443The id of the customer.
- series_id
number
(optional) Example: 1233The document series_id you want to get .
- status
string
(optional) Example: validThe invoice status (valid, draft, cancelled).
- issue_date_from
string
(optional) Example: 2018-01-13The issue date you want to get invoice from.
- issue_date_to
string
(optional) Example: 2018-01-22The issue date you want to get invoice to.
Add a new Payment for Invoices ¶
Body
curl https://app.workadu.com/api/services \
-u wk_abcd123123abcd1234: \
-d invoice_ids = 1234, 1234 \
-d deposit = 100%
Body
{
"data": {
"issue_date": "2016-09-14",
"customer_id": 359,
"series": "Cash",
"transaction_num,": 15,
"amount": 80,
"currency": "$",
"comments": "Payment for the Order #1015",
"order_id": 1015
}
}
Add a new Payment for InvoicesPOST/api/payments/
Pay an invoice or invoices should concern the same customer. This payment end point will add a payment and relate the payment with the invoices. The amount of the payment will be granted to customer’s balance.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
You didn’t specify a correct order_id or booking ID or customer_id. |
Payments are assigned to orders. You cannot pass a payment without defining a specific order. Please provide a valid booking_id as a POST parameter |
400 |
This order does not have the CANCELLED status! |
The only accepted status for adding a payment through this end point are: NOT_PAID and CANCELLED |
- invoice_ids
string
(required) Example: 1231, 1334, 14455The invoice_ids this payment will be related with. It works optionaly with deposit parameter & series parameter is optional.
- deposit
string
(optional) Example: 157.22 or 30%If this is set to % (works in order_id, booking_id, invoice_ids) then it calulates at deposit amount the % of the total order or booking or invoices amount. If it set to amount mode then this specific amount will be added as payment
- series
number
(optional) Example: 122The series of payment (e.g cash or credit card) for this payment. If none it will take the first payment type, usually CASH.
- comment
string
(optional) Example: Payment for anythingThe comment that we want to add at the payment.
Add a new Payment for an Order or Booking ¶
Body
curl https://app.workadu.com/api/services \
-u wk_abcd123123abcd1234: \
-d order_id = 1234 \
-d deposit = 30%
Body
{
"data": {
"issue_date": "2016-09-14",
"customer_id": 359,
"series": "Cash",
"transaction_num,": 15,
"amount": 80,
"currency": "$",
"comments": "Payment for the Order #1015",
"order_id": 1015
}
}
Add a new Payment for an Order or BookingPOST/api/payments/
Pay an order or booking should concern the order or booking customer. This payment end point will add a payment and relate the payment with the order. The amount of the payment will be granted to customer’s balance.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
You didn’t specify a correct order_id or booking ID or customer_id. |
Payments are assigned to orders. You cannot pass a payment without defining a specific order. Please provide a valid booking_id as a POST parameter |
400 |
This order does not have the CANCELLED status! |
The only accepted status for adding a payment through this end point are: NOT_PAID and CANCELLED |
- order_id
number
(required) Example: 1231The order or booking Id your want to pay for. It works optionaly with deposit & series parameter
- deposit
string
(optional) Example: 157.22 or 30%If this is set to % (works in order_id, booking_id, invoice_ids) then it calulates at deposit amount the % of the total order or booking or invoices amount. If it set to amount mode then this specific amount will be added as payment
- series
number
(optional) Example: 122The series of payment (e.g cash or credit card) for this payment. If none it will take the first payment type, usually CASH.
- comment
string
(optional) Example: Payment for anythingThe comment that we want to add at the payment.
Add a general Payment for a Customer ¶
Body
curl https://app.workadu.com/api/services \
-u wk_abcd123123abcd1234: \
-d customer_id = 1234 \
-d deposit = 100
-d comment = hello
-d series = 122
Body
{
"data": {
"issue_date": "2016-09-14",
"customer_id": 359,
"series": "Cash",
"transaction_num,": 15,
"amount": 80,
"currency": "$",
"comments": "Payment for the Order #1015",
"order_id": 1015
}
}
Add a general Payment for a CustomerPOST/api/payments/
This payment end point will add a payment and and will not relate it with an order or invoice. The amount of the payment will be granted to customer’s balance.
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
You didn’t specify a correct order_id or booking ID or customer_id. |
Payments are assigned to orders. You cannot pass a payment without defining a specific order. Please provide a valid booking_id as a POST parameter |
400 |
This order does not have the CANCELLED status! |
The only accepted status for adding a payment through this end point are: NOT_PAID and CANCELLED |
- customer_id
number
(required) Example: 1231The customer_Id your want to pay for. It works always with required deposit parameter. Series parameter is optional.
- deposit
string
(required) Example: 157.22 or 30%If this is set to % (works in order_id, booking_id, invoice_ids) then it calulates at deposit amount the % of the total order or booking or invoices amount. If it set to amount mode then this specific amount will be added as payment
- series
number
(optional) Example: 122The series of payment (e.g cash or credit card) for this payment. If none it will take the first payment type, usually CASH.
- comment
string
(optional) Example: Payment for anythingThe comment that we want to add at the payment.
Companies ¶
The Companies endpoints returns information about the workadu Companies that have been assigned with the authenticated user. The response includes the display name and other details and groups of info about each company, and lists the companies in the proper display order as they are stored initial at the database. You can re-sort the results by add sorting filter at your request as show here.
Method | Endpoint | Description |
---|---|---|
GET | /api/companies | Get logged in user related companies |
GET | /api/companies/{company_id},{company_id},… | Get specific companies details |
List all Companies ¶
Body
{
"data": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "EL 078839923",
"swift_code": "BCINSDD23",
"currency": "$",
"logo": "",
"settings": {
"working_hours": [
{
"day": 0,
"start": "09:00",
"end": "17:30"
},
{
"day": 1,
"start": "09:00",
"end": "17:30"
},
{
"day": 2,
"start": "09:00",
"end": "17:30"
},
{
"day": 3,
"start": "09:00",
"end": "17:30"
},
{
"day": 4,
"start": "10:00",
"end": "17:30"
}
],
"work_load": 160,
"time_window": 1
}
}
}
List all CompaniesGET/api/companies/
- filter[companyid]
number
(optional) Example: 14The companyid of the specific company you want.
- filter[name]
string
(optional) Example: bizz ltdFilter companies by the name of a specific company.
- filter[url]
string
(optional) Example: bizz.comFilter companies by the url of a specific company.
- filter[email]
string
(optional) Example: info@bizz.comFilter companies by the email of a specific company.
- filter[alias]
string
(optional) Example: bizzFilter companies by the alias of a specific company.
Get specific Company ¶
Body
{
"data": {
"id": 14,
"name": "bizz",
"url": "Bizz.com",
"alias": "bizz",
"email": "info@reservationengine.net",
"phone": "1234567890",
"social": [
{
"social": "facebook.com",
"alias": "johndoe"
}
],
"vat_reg_num": "EL 078839923",
"swift_code": "BCINSDD23",
"currency": "$",
"logo": "",
"settings": {
"working_hours": [
{
"day": 0,
"start": "09:00",
"end": "17:30"
},
{
"day": 1,
"start": "09:00",
"end": "17:30"
},
{
"day": 2,
"start": "09:00",
"end": "17:30"
},
{
"day": 3,
"start": "09:00",
"end": "17:30"
},
{
"day": 4,
"start": "10:00",
"end": "17:30"
}
],
"work_load": 160,
"time_window": 1
}
}
}
Get specific CompanyGET/api/companies/{company_id}
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
No companies could be found. |
There is no valid company id provided. |
- company_id
integer
(optional) Example: 14The id for the specific company.
Attributes ¶
The attributes endpoints returns information about the workadu attributes that have been assigned with the authenticated user services. The response includes the display name and other details and groups of info about each attribute, and lists the attributes in the proper display order as they are stored initial at the database. You can re-sort the results by add sorting filter at your request as show here.
GET | /api/attributes | Get logged in user related attributes |
GET | /api/attributes/{attribute_id},{attribute_id},… | Get specific attribute details |
List all Attributes ¶
Body
{
"data": {
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
}
List all AttributesGET/api/attributes/
- filter[name]
string
(optional) Example: PassengersFilter brands by the name of a specific recourse.
Get a specific Attribute ¶
Body
{
"data": {
"id": 2522,
"name": "Passengers",
"description": "some description",
"value": 22
}
}
Get a specific AttributeGET/api/attributes/{attribute_id}
Error codes
HTTP status | Code | Description |
---|---|---|
400 |
No attributes could be found. |
There is no valid attribute id provided. |
- attribute_id
integer
(optional) Example: 32161The id for the specific attribute.
Generated by aglio on 18 Feb 2022