Workadu API v.2

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

Get your api key here!

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

POST https://app.workadu.com/api/services/
RequestsRequiredRequired + Optional
Body
{
  "name": "Toyota corolla",
  "category_id": 1234
}
Responses200
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
    }
  ]
}
Responses200
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 Service
POST/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

PUT https://app.workadu.com/api/services/
RequestsRequiredRequired + Updatable fields
Body
{
  "id": 12344
}
Responses200
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
    }
  ]
}
Responses200
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 Service
PUT/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

DELETE https://app.workadu.com/api/services/
RequestsRequired
Body
{
  "id": 12344
}
Responses200
Body
{
  "data": {
    "id": 12344,
    "deleted": true,
    "message": "The resource deleted"
  }
}

Delete a Service
DELETE/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

GET https://app.workadu.com/api/services
Responses200
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 Services
GET/api/services

URI Parameters
HideShow
filter[extra_filters][companyid]
integer (optional) Example: 14

The companyid of the company you want services from

filter[extra_filters][brand]
integer (optional) Example: 10

The brand of the brand you want services from.

filter[extra_filters][alias]
String (optional) Example: vw-polo

The alias of a specific service.

filter[extra_filters][title]
String (optional) Example: Volkswagen Polo

The title of a specific service.

filter[extra_filters][category_id]
integer (optional) Example: 10

The category_id of a specific group of services.

filter[extra_filters][radius]
String (optional) Example: R-100

value = -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

GET https://app.workadu.com/api/services
Responses200
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 Availability
GET/api/services

URI Parameters
HideShow
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-30

The starting date uses the form Y-m-d.

filter[availability][end_date]
String (required) Example: 2018-08-30

The ending date uses the form Y-m-d.

filter[availability][start_time]
String (required) Example: 08:00

The starting date uses the form H:i

filter[availability][end_time]
String (required) Example: 08:00

The ending date uses the form H:i

filter[availability][coupon]
String (optional) Example: XMASPARTY

A coupon code that should be enabled as a dynamic policy at the backend

filter[extra_filters][companyid]
integer (optional) Example: 14

The companyid of the company you want services from

filter[extra_filters][brand]
integer (optional) Example: 10

The brand of the brand you want services from.

filter[extra_filters][alias]
String (optional) Example: vw-polo

The alias of a specific service.

filter[extra_filters][title]
String (optional) Example: Volkswagen Polo

The title of a specific service.

filter[extra_filters][category_id]
integer (optional) Example: 10

The category_id of a specific group of services.

filter[extra_filters][radius]
String (optional) Example: R-100

value = -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

GET https://app.workadu.com/api/services/32161
Responses200
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 Service
GET/api/services/{service_id}

URI Parameters
HideShow
service_id
integer (optional) Example: 32161

The companyid of the company you want services from


Create a new Price List

POST https://app.workadu.com/api/services/pricelist
RequestsRequired
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"
  }
}
Responses200
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 List
POST/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

POST https://app.workadu.com/api/services/rates
RequestsRequiredRequired + Optional
Body
{
  "service_ids": "33663, 33433, 45444",
  "rate": 29.99
}
Responses200
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
}
Responses200
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 Scheme
POST/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

DELETE https://app.workadu.com/api/services/rates
RequestsDelete a schemeDelete all schemes
Body
{
  "price_shceme_id": 336
}
Responses200
Body
{
  "data": {
    "id": 12344,
    "deleted": true,
    "message": "The resource deleted"
  }
}
Body
{
  "service_id": 33663
}
Responses200
Body
{
  "data": {
    "id": 12344,
    "deleted": true,
    "message": "The resource deleted"
  }
}

Delete a Price Scheme
DELETE/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

POST https://app.workadu.com/api/sales
RequestsRequiredRequired + Optional
Body
{
  "title": "30% discount",
  "action": 120,
  "action_value": "-15%"
}
Responses200
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"
}
Responses200
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 Policy
POST/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

DELETE https://app.workadu.com/api/sales
RequestsRequired
Body
{
  "id": 12344
}
Responses200
Body
{
  "data": {
    "id": 12344,
    "deleted": true,
    "message": "The resource deleted"
  }
}

Delete a Sales Policy
DELETE/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

POST https://app.workadu.com/api/orders
Requestsexample 1
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"
}
Responses200
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 Order
POST/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

GET https://app.workadu.com/api/orders/
Responses200
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 Orders
GET/api/orders/

URI Parameters
HideShow
filter[booking_reference]
string (optional) Example: VBV7DH

Filter orders by booking reference.

filter[booking_status]
string (optional) Example: PAID

Filter orders by booking status.

Choices: ON_PROGRESS PAID NOT_PAID

filter[company_id]
integer (optional) Example: 14

The companyid of the specific company you want orders from.

filter[customer_id]
integer (optional) Example: 119

Filter orders by the id of a specific customer.

filter[service_id]
integer (optional) Example: 32161

Filter 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: London

Filter 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: London

Filter orders by the name of a specific ending point.

filter[status]
string (optional) Example: CANCELLED

Filter 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.00

Filter orders by checking the total cost of each order. Operators may be applied here.

filter[start_date]
string (optional) Example: 2018-08-30

Filter orders by checking the starting date of each order. Operators may be applied here.

filter[start_time]
string (optional) Example: 13:00

Filter orders by checking the starting time of each order. Operators may be applied here.

filter[end_date]
string (optional) Example: 2018-08-31

Filter orders by checking the ending date of each order. Operators may be applied here.

filter[end_time]
string (optional) Example: 18:00

Filter orders by checking the ending time of each order. Operators may be applied here.


Get Specific Order

GET https://app.workadu.com/api/orders/1831
Responses200
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 Order
GET/api/orders/{booking_id}

URI Parameters
HideShow
booking_id
integer (optional) Example: 1831

you can specify more booking_id separated by comma ,


Update an Order

PATCH https://app.workadu.com/api/orders/1831
Requestsexample 1
Body
{
  "id": 992
}
Responses200
Body
{
  "data": {
    "op": "replace",
    "path": "/id",
    "value": "992"
  }
}

Update an Order
PATCH/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.
URI Parameters
HideShow
booking_id
integer (optional) Example: 1831

the id of the specific order


Delete an Order

DELETE https://app.workadu.com/api/orders/32161
Responses200
Body
{
  "data": {
    "op": "replace",
    "path": "/status",
    "value": "CANCELLED"
  }
}

Delete an Order
DELETE/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.
URI Parameters
HideShow
booking_id
integer (optional) Example: 32161

the 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

POST https://app.workadu.com/api/customers/
Requestsexample 1
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
}
Responses200
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 Customer
POST/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

GET https://app.workadu.com/api/customers/
Responses200
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 Customers
GET/api/customers/

URI Parameters
HideShow
filter[fullname]
string (optional) Example: John Doe

The fullname of customer(s) you want details from.

filter[email]
string (optional) Example: jdoe@gmail.com

The email of customer(s) you want details from.

filter[mobile]
string (optional) Example: +4469960022

The mobile of customer(s) you want details from.

filter[Country]
string (optional) Example: UK

The country of customer(s) you want details from. ISO Country codes should be used.

filter[city]
string (optional) Example: London

The city of customer(s) you want details from.

filter[postal_code]
string (optional) Example: N1 7GU

The city of customer(s) you want details from.

filter[company_id]
integer (optional) Example: 14

The company id of customer(s) you want details from.


Get a specific Customer

GET https://app.workadu.com/api/customers/3332
Responses200
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 Customer
GET/api/customers/{customer_id}

URI Parameters
HideShow
customer_id
integer (optional) Example: 3332

The id for the specific customer.


Update a Customer

PATCH https://app.workadu.com/api/customers/32161
Requestsexample 1
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
}
Responses200
Body
{
  "data": {
    "op": "replace",
    "path": "/fullname",
    "value": "Jordan Johnson"
  }
}

Update a Customer
PATCH/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.
URI Parameters
HideShow
customer_id
integer (optional) Example: 32161

The 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

GET https://app.workadu.com/api/invoices/
Requestscurlcurl + Parameters
Body
curl https://app.workadu.com/api/invoices \ 
-H "Accept: application/vnd.rengine.v2+json" \
-u wk_abcd123123abcd1234: \
Responses200200
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
Responses200200
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 Invoices
GET/api/invoices/

URI Parameters
HideShow
customer_id
number (optional) Example: 12443

The id of the customer.

series_id
number (optional) Example: 1233

The document series_id you want to get .

status
string (optional) Example: valid

The invoice status (valid, draft, cancelled).

issue_date_from
string (optional) Example: 2018-01-13

The issue date you want to get invoice from.

issue_date_to
string (optional) Example: 2018-01-22

The issue date you want to get invoice to.

aade_should_send
number (optional) Example: 1

Fetch invoices that should send to mydata.


Create a new Invoice

POST https://app.workadu.com/api/invoices/
Requestscurlcurl + optional
Body
curl https://app.workadu.com/api/invoices \ 
-u wk_abcd123123abcd1234: \
-d customer_id = 1234 \
-d series_id = 2100
Responses200
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"
Responses200
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
POST/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
URI Parameters
HideShow
customer_id
number (required) Example: 1231

The 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: 1231

The series id of the document.

invoice_num
number (optional) Example: 1

Invoice number

discount_percent
number (optional) Example: 10

A discount percent for the all invoice lines

vat_percent
number (optional) Example: 19

A vat percent of this specific invoice. In case of not set company vat percent will be used.

currency
string (optional) Example: EUR

The currency of this specific invoice. In case of not set company currency will be used.

payment_type
number (optional) Example: 1222

The 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

PUT https://app.workadu.com/api/invoices/
Requestscurlcurl + optional
Body
curl https://app.workadu.com/api/invoice/12321\ 
-u wk_abcd123123abcd1234: \
-d payment_type = 2100
Responses200
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"
Responses200
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 Invoice
PUT/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
URI Parameters
HideShow
customer_id
number (required) Example: 1231

The customer id of the specific invoice.

invoice_num
number (optional) Example: 1

Invoice number

payment_type
number (optional) Example: 1222

The 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

POST https://app.workadu.com/api/invoiceline/
RequestsRequiredRequired + optional
Body
{
  "invoice_id": 1231,
  "description": "2 days charge",
  "amount": "12.00"
}
Responses200
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
}
Responses200
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 line
POST/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

GET https://app.workadu.com/api/series/series_id
Responses200
Body
{
  "data": {
    "id": 911,
    "title": "Invoice",
    "last_number": 123,
    "type": "fiscal"
  }
}

List company Series
GET/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

POST https://app.workadu.com/api/invoices/publish/
RequestsRequiredcurlcurl + optional
Body
{
  "invoice_id": 1231,
  "send": true
}
Responses200
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 \
Responses200
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
Responses200
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 Invoice
POST/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
URI Parameters
HideShow
invoice_id
number (required) Example: 1231

The invoice id of the specific resource.

send
boolean (optional) Example: true

If 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: true

Send invoice to mydata. If set to true invoice will always be send. If set to false the invoice will never send. If the parameter is not set at all the invoice will be send depending on the auto_send setting in the invoice’s series.


List withholdings

GET https://app.workadu.com/api/invoices/invoiceId/withholdings
Responses200404
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 withholdings
GET/api/invoices/{invoiceId}/withholdings

This endpoint lists all withholdings for the given invoice

URI Parameters
HideShow
invoiceId
integer (required) 

Invoice’s id


Get a specific withholding

GET https://app.workadu.com/api/invoices/invoiceId/withholdings/withholdingId
Responses200404404
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 withholding
GET/api/invoices/{invoiceId}/withholdings/{withholdingId}

This endpoint lists all withholdings for the given invoice

URI Parameters
HideShow
invoiceId
integer (required) 

Invoice’s id

withholdingId
integer (required) 

Withholdings’s id


Create a withholding

POST https://app.workadu.com/api/invoices/invoiceId/withholdings
Requestsexample 1
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"
}
Responses200404422
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 withholding
POST/api/invoices/{invoiceId}/withholdings

This creates a withholding for the given invoice

URI Parameters
HideShow
invoiceId
string (required) 

Invoice to add the withholding to

label
string (required) Example: Example withholding

Short description for the withholding.

type
string (required) Example: percent

Withholding type. Accepts percent (1 to 100) or flat

percentage_value
numeric (optional) Example: 30

Percentage value of the withholding, required when type is set to “percent”

flat_value
numeric (optional) Example: 10

Flat value of the withholding, required when type is set to “flat”

underlying_value
numeric (optional) Example: 100

Underlying value of the withholding. If not set the amount of the invoice will be used by default.

aade_tax_type_id
integer (required) Example: 5

Aade 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

PUT https://app.workadu.com/api/invoices/invoiceId/withholdings/withholdingId
Requestsexample 1
Body
{
  "label": "new label"
}
Responses200
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 withholding
PUT/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

URI Parameters
HideShow
invoiceId
string (required) 

Invoice to add the withholding to

withholdingId
integer (required) 

Withholdings’s id

label
string (optional) Example: Example withholding

Short description for the withholding.

type
string (optional) Example: percent|flat

Withholding type. Accepts percent (1 to 100) or flat

percentage_value
numeric (optional) Example: 30

Percentage value of the withholding, required when type is set to “percent”

flat_value
numeric (optional) Example: 10

Flat value of the withholding, required when type is set to “flat”

underlying_value
numeric (optional) Example: 100

Underlying value of the withholding

aade_tax_type_id
integer (required) Example: 5

Aade 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

DELETE https://app.workadu.com/api/invoices/invoiceId/withholdings/withholdingId
Responses200404404
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 withholding
DELETE/api/invoices/{invoiceId}/withholdings/{withholdingId}

This endpoint deletes a withholding for the given invoice

URI Parameters
HideShow
invoiceId
integer (required) 

Invoice’s id

withholdingId
integer (required) 

Withholdings’s id


Get aade tax types

GET https://app.workadu.com/api/withholdings/aade-tax-types
Responses200
Body
{
  "data": [
    {
      "id": "1",
      "name": "Παρακρατούμενος Φόρος"
    },
    {
      "id": "2",
      "name": "Τέλη"
    },
    {
      "id": "3",
      "name": "Λοιποί Φόροι"
    },
    {
      "id": "4",
      "name": "Χαρτόσημο "
    },
    {
      "id": "5",
      "name": "Κρατήσεις"
    }
  ]
}

Get aade tax types
GET/api/withholdings/aade-tax-types

List all aade withholding types


Get aade tax categories

GET https://app.workadu.com/api/withholdings/aade-tax-categories
Responses200
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 categories
GET/api/withholdings/aade-tax-categories

List all aade withholding categories

URI Parameters
HideShow
tax_type_id
number (optional) Example: 1

Get 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

GET https://app.workadu.com/api/payments/
Requestscurlcurl + Parameters
Body
curl https://app.workadu.com/api/payments \ 
-H "Accept: application/vnd.rengine.v2+json" \
-u wk_abcd123123abcd1234: \
Responses200
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
Responses200
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 Payments
GET/api/payments/

Get all company payments or filter them optionaly with parameters.

URI Parameters
HideShow
customer_id
number (optional) Example: 12443

The id of the customer.

series_id
number (optional) Example: 1233

The document series_id you want to get .

status
string (optional) Example: valid

The invoice status (valid, draft, cancelled).

issue_date_from
string (optional) Example: 2018-01-13

The issue date you want to get invoice from.

issue_date_to
string (optional) Example: 2018-01-22

The issue date you want to get invoice to.


Add a new Payment for Invoices

POST https://app.workadu.com/api/payments/
Requestscurl with Invoices
Body
curl https://app.workadu.com/api/services \ 
-u wk_abcd123123abcd1234: \
-d invoice_ids = 1234, 1234 \
-d deposit = 100%
Responses200
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 Invoices
POST/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
URI Parameters
HideShow
invoice_ids
string (required) Example: 1231, 1334, 14455

The 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: 122

The 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 anything

The comment that we want to add at the payment.


Add a new Payment for an Order or Booking

POST https://app.workadu.com/api/payments/
Requestscurl with Order or Booking
Body
curl https://app.workadu.com/api/services \ 
-u wk_abcd123123abcd1234: \
-d order_id = 1234 \
-d deposit = 30%
Responses200
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 Booking
POST/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
URI Parameters
HideShow
order_id
number (required) Example: 1231

The 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: 122

The 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 anything

The comment that we want to add at the payment.


Add a general Payment for a Customer

POST https://app.workadu.com/api/payments/
Requestscurl with 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
Responses200
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 Customer
POST/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
URI Parameters
HideShow
customer_id
number (required) Example: 1231

The 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: 122

The 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 anything

The 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

GET https://app.workadu.com/api/companies/
Responses200
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 Companies
GET/api/companies/

URI Parameters
HideShow
filter[companyid]
number (optional) Example: 14

The companyid of the specific company you want.

filter[name]
string (optional) Example: bizz ltd

Filter companies by the name of a specific company.

filter[url]
string (optional) Example: bizz.com

Filter companies by the url of a specific company.

filter[email]
string (optional) Example: info@bizz.com

Filter companies by the email of a specific company.

filter[alias]
string (optional) Example: bizz

Filter companies by the alias of a specific company.


Get specific Company

GET https://app.workadu.com/api/companies/14
Responses200
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 Company
GET/api/companies/{company_id}

Error codes

HTTP status Code Description
400 No companies could be found. There is no valid company id provided.
URI Parameters
HideShow
company_id
integer (optional) Example: 14

The 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

GET https://app.workadu.com/api/attributes/
Responses200
Body
{
  "data": {
    "id": 2522,
    "name": "Passengers",
    "description": "some description",
    "value": 22
  }
}

List all Attributes
GET/api/attributes/

URI Parameters
HideShow
filter[name]
string (optional) Example: Passengers

Filter brands by the name of a specific recourse.


Get a specific Attribute

GET https://app.workadu.com/api/attributes/32161
Responses200
Body
{
  "data": {
    "id": 2522,
    "name": "Passengers",
    "description": "some description",
    "value": 22
  }
}

Get a specific Attribute
GET/api/attributes/{attribute_id}

Error codes

HTTP status Code Description
400 No attributes could be found. There is no valid attribute id provided.
URI Parameters
HideShow
attribute_id
integer (optional) Example: 32161

The id for the specific attribute.


Generated by aglio on 18 Feb 2022