Bookeasy Report Builder and Trust Accounting reports via a Json API.
Access to the Bookeasy Report API is a paid subscription service that needs to be activated manually by our Support Team. Please send an email to Our Support Team if you would like this activated and they will guide you through the activation process.
Once activated you can obtain the API Key by loging into the Bookeasy Console (Staff Console, Room Manager or Tour Manager) and then visit the Reporting page. On that page, an API key will be displayed. Use that key for your API access. If you need help, please contact Our Support Team and we will help you find this if you are having trouble locating it.
Once you have your Api Key, send it in each request to our API as a Request header with the key x-api-key.
eg, this is a valid request format...
curl -X GET --header 'Accept: application/json' --header 'x-api-key: [Your Api Key Here]' 'https://reportapi.bookeasy.com.au/api/Template'
Note: Each API key is potentially different for each Environment so please integrate different keys into your software solution for each environment. Eg, the Pre version testing environment (PVT) will have a different key to the Live or Production environment.
You can use the API specification or the Swagger specification to generate your classes depending on the programming language you are using. Also, the swagger specification allows you to test some ideas using the API. We use the Postman application at Bookeasy when working with this API, you may prefer a different tool but it works well for us.
While you are testing your code, you may use our PVT API specification or our PVT Swagger specification which shows details on how to connect to our Pre Version Testing area. This system has a copy of production data applied to it over night at 4am GMT+10 (Brisbane, Australia AEST).
You can access our Customer Help Documentation here which might help you solve any questions you have about how bookeasy works.
If you have any questions during API development, you may contact Our Support Team however developer support isn't included in the standard fees paid by each centre and any support required may be billed at an hourly rate if you need access to our development team to resolve your question.
Please build your code to accept gzip compression to keep the payload to a minimum
eg, this is a valid request format to enable compression...
curl -X GET --header 'Accept: application/json' --header 'x-api-key: [Your Api Key Here]' --header 'Accept-Encoding: gzip, deflate' 'https://reportapi.bookeasy.com.au/api/Template'
Our Reporting API utilizes a Queuing system so it cannot be overloaded by too many concurrent reports.
The following flowchart is the recommended approach to submit a report, poll for the results and then finally delete the report when you are fishined with the data.
GET https://reportapi.bookeasy.com.au/api/Template/2580 HTTP/1.1
x-api-key: [put your api key here]
Accept-Encoding: gzip, deflate
cache-control: no-cache
accept: application/json
Host: reportapi.bookeasy.com.au
Connection: close
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 2430
Connection: close
Date: Wed, 18 Jul 2018 04:54:26 GMT
Cache-Control: public, max-age=0
Vary: Accept-Encoding
{
"templates": [
{
"templateId": 2580,
"name": "Accommodation Categories",
"description": "A report on what kind of accommodation we have",
"columns": [
{
"tableName": "Operators",
"columnName": "Name",
"alias": "Name",
"aggregate": "None"
},
{
"tableName": "Operators",
"columnName": "AccommodationType1",
"alias": "AccommodationType1",
"aggregate": "None"
},
{
"tableName": "Operators",
"columnName": "AccommodationType2",
"alias": "AccommodationType2",
"aggregate": "None"
},
{
"tableName": "Operators",
"columnName": "Commission",
"alias": "Commission",
"aggregate": "None"
},
{
"tableName": "Operators",
"columnName": "Suburb",
"alias": "Suburb",
"aggregate": "None"
},
{
"tableName": "Operators",
"columnName": "FirstName",
"alias": "FirstName",
"aggregate": "None"
},
{
"tableName": "Operators",
"columnName": "Surname",
"alias": "Surname",
"aggregate": "None"
},
{
"tableName": "Payments",
"columnName": "Payment",
"alias": "Payments in Last Fin Yr",
"aggregate": "Sum"
}
],
"orderBys": [
{
"alias": "AccommodationType1",
"sortOrderType": "Ascending"
},
{
"alias": "Name",
"sortOrderType": "Ascending"
}
],
"filters": [
{
"tableName": "Payments",
"columnName": "PaymentDate",
"filterType": "GreaterThan",
"defaultValue": "4",
"aggregate": "None"
}
],
"userDefinedFilters": [
{
"alias": "AccommodationType1",
"tableName": "Operators",
"columnName": "AccommodationType1",
"filterType": "NotEqualTo",
"defaultValue": "",
"aggregate": "None"
},
{
"alias": "Active",
"tableName": "Operators",
"columnName": "Active",
"filterType": "EqualTo",
"defaultValue": "1",
"aggregate": "None"
}
]
}
],
"success": true
}
POST https://reportapi.bookeasy.com.au/api/Report HTTP/1.1
x-api-key: [put your api key here]
Accept-Encoding: gzip, deflate
Content-Type: application/json-patch+json
cache-control: no-cache
accept: application/json
Host: reportapi.bookeasy.com.au
content-length: 621
Connection: close
{
"templateId" : 2580,
"userDefinedFilters": [
{
"alias": "AccommodationType1",
"tableName": "Operators",
"columnName": "AccommodationType1",
"filterType": "NotEqualTo",
"defaultValue": "",
"aggregate": "None",
"answer": "1234"
},
{
"alias": "Active",
"tableName": "Operators",
"columnName": "Active",
"filterType": "EqualTo",
"defaultValue": "1",
"aggregate": "None",
"answer": "active value for the third one"
}
],
"bookeasyClient": {
"controlId": [PutYourControlIdHere],
"operatorId": null // If you are an coding for an operator, set this,otherwise set the controlId field
}
}
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 38
Connection: close
Date: Wed, 18 Jul 2018 04:54:55 GMT
Vary: Accept-Encoding
{
"reportId": 3,
"success": true
}
GET https://reportapi.bookeasy.com.au/api/Report/3 HTTP/1.1
x-api-key: [put your api key here]
Accept-Encoding: gzip, deflate
cache-control: no-cache
accept: application/json
Host: reportapi.bookeasy.com.au
Connection: close
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 468
Connection: close
Date: Wed, 18 Jul 2018 04:55:18 GMT
Cache-Control: public, max-age=0
Vary: Accept-Encoding
{
"reports": [
{
"reportId": 3,
"templateId": 2580,
"reportStatus": "Complete",
"dateQueuedUtc": "2018-07-18T04:54:53",
"dateProcessingStartedUtc": "2018-07-18T04:55:06",
"dateProcessingCompletedUtc": "2018-07-18T04:55:06",
"processingTimeInSeconds": 0,
"qtyRowsReturned": 2,
"failureMessage": null,
"reportData": {
"columns": [],
"columnData": []
}
}
],
"success": true
}
GET https://reportapi.bookeasy.com.au/api/Report/3?includeData=true HTTP/1.1
x-api-key: [put your api key here]
Accept-Encoding: gzip, deflate
cache-control: no-cache
accept: application/json
Host: reportapi.bookeasy.com.au
Connection: close
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Connection: close
Date: Thu, 19 Jul 2018 04:33:17 GMT
Cache-Control: public, max-age=0
Vary: Accept-Encoding
{
"reports": [
{
"reportId": 3,
"templateId": 2580,
"reportStatus": "Complete",
"dateQueuedUtc": "2018-07-19T04:04:53",
"dateProcessingStartedUtc": "2018-07-19T04:04:59",
"dateProcessingCompletedUtc": "2018-07-19T04:04:59",
"processingTimeInSeconds": 0,
"qtyRowsReturned": 2,
"failureMessage": null,
"reportData": {
"columns": [
{
"columnName": "OperatorId",
"dataType": "int",
"numericPrecision": 10,
"numericScale": 0,
"isNullable": false
},
{
"columnName": "Name",
"dataType": "text",
"characterMaximumLength": 65535,
"isNullable": true
},
{
"columnName": "Location1",
"dataType": "text",
"characterMaximumLength": 65535,
"isNullable": true
},
{
"columnName": "Type1",
"dataType": "varchar",
"characterMaximumLength": 255,
"isNullable": true
},
{
"columnName": "Type2",
"dataType": "varchar",
"characterMaximumLength": 255,
"isNullable": true
},
{
"columnName": "Type3",
"dataType": "varchar",
"characterMaximumLength": 255,
"isNullable": true
},
{
"columnName": "Type4",
"dataType": "varchar",
"characterMaximumLength": 255,
"isNullable": true
},
{
"columnName": "DateJoined",
"dataType": "datetime",
"isNullable": true
},
{
"columnName": "Latitude",
"dataType": "decimal",
"numericPrecision": 30,
"numericScale": 15,
"isNullable": true
},
{
"columnName": "Longitude",
"dataType": "decimal",
"numericPrecision": 30,
"numericScale": 15,
"isNullable": true
}
],
"columnData": [
[
999991,
"Name of the property",
"Blah",
"Accommodation",
"Local Business",
null,
null,
"2012-07-23 00:00:00",
-31.912322000000000,
155.124730000000000
],
[
999992,
"Name of the second property",
"Blah",
"Accommodation",
"Local Business",
null,
null,
"2012-07-23 00:00:00",
-31.912322000000000,
155.124730000000000
]
]
}
}
],
"success": true
}
DELETE https://reportapi.bookeasy.com.au/api/Report/3 HTTP/1.1
x-api-key: [put your api key here]
Accept-Encoding: gzip, deflate
cache-control: no-cache
accept: application/json
Host: reportapi.bookeasy.com.au
content-length: 0
Connection: close
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 21
Connection: close
Date: Wed, 18 Jul 2018 04:55:30 GMT
Vary: Accept-Encoding
{
"success": true
}