API Documentation
Overview ¶
Beta Version
Rentlio v1 api is currently in beta version, and some backward compatibility can be broken. New endpoints will be added weekly. For any bug reports or requests please send email to developers@rentl.io
The Rentlio API is organized around REST. It has predictable, resource-oriented URLs, and uses HTTP response codes to indicate API errors. JSON is returned by all API responses, including errors. Also JSON is used in request body instead of form data. We don’t use sandbox version where you can test your integrations. Instead, you can use a demo property and its reservations to be sure no harm is done on real data.
Currently active API version is v1 and can be accessed at https://api.rentl.io/v1/. API is accessible only via HTTPS.
Limits ¶
To ensure clients good behaviour, API has some limitation on its usage. The limits shouldn’t cause any development issues. If you hit them, it means you are doing something wrong.
Request Size
Maximum request size you can send to api.rentl.io is 1MB. Larger requests will be rejected. This limit is global for all endpoints. Some of the endpoints can have their specific limits and this will be listed in specific endpoint documentation.
Request Rate
You can call a maximum of 10 requests in 1 second for a single API Key or IP address. This limit is global for all endpoints. Some of the endpoints can have their specific limits and this will be listed in specific endpoint documentation.
Authentication ¶
Authenticate your account when using the API by including your secret API key in the request. You can manage your API keys in your account settings. Your API keys carry many privileges, so be sure to keep them private! Do not share your secret API keys in publicly accessible areas such GitHub, client-side code, and so forth. You can use your API keys in 2 ways:
As query param
$ curl https://api.rentl.io/v1/{api path}?apikey=<some_key>
As request header
$ curl https://api.rentl.io/v1/{api path} -H 'apikey: <some_key>'
Users ¶
User in Rentlio is a person that is authenticated and authorized to perform actions within Rentlio system. Below are endpoints responsible for handling users in Rentlio.
Get My Data ¶
This endpoint will return data for user that is associated with provided ApiKey.
GET/users/me
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"id": 12654,
"email": "desk@sunshine.inn",
"firstName": "Steve",
"lastName": "Schultz",
"address": "Wiseman Street",
"postalCode": "37929",
"city": "Knoxville",
"phone": "865-286-6425",
"timezone": "America/New_York",
"createdAt": 1422622202,
"modifiedAt": 1484731923
}
Schema
{
"type": "object",
"properties": {
"id": "integer",
"email": "string",
"firstName": "string",
"lastName": "string",
"address": "string",
"postalCode": "string",
"city": "string",
"phone": "string",
"timezone": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Get Active Subscriptions ¶
Get active subscription data for user associated with provided ApiKey.
GET/users/subscriptions/active
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"id": 38,
"name": "Advanced",
"currencyId": 3,
"startDate": 1454411335,
"endDate": null,
"numberOfUnits": 6,
"status": "Active",
"nextBillingDate": 1457049600,
"currentBillingCycle": 1,
"nextBillAmount": 276,
"vatRate": null,
"pricePerUnit": null,
"pricePerUnitEUR": null,
"totalPrice": 360,
"totalPriceEUR": null,
"numberOfMonths": 1
}
Schema
{
"type": "object",
"properties": {
"id": "integer - unique subscription id",
"name": "string - subscription name",
"currencyId": "integer - currency id",
"startDate": "integer - UTC unix timestamp of date subscription was activated",
"endDate": "integer - UTC unix timestamp of date subscription is valid until",
"numberOfUnits": "integer - number of allowed units for this subscription",
"status": "string - subscription status",
"nextBillingDate": "integer - UTC unix timestamp of next billing date",
"currentBillingCycle": "integer - if recurring payment is active, this will represent the number of times this subscription has been paid",
"nextBillAmount": "float - amount to pay when next billing occurs",
"vatRate": "float - subscription vat rate",
"pricePerUnit": "float - price per unit based on currencyId field",
"pricePerUnitEUR": "float - price per unit in EUR",
"totalPrice": "float - total subscription price based on currencyId field",
"totalPriceEUR": "float - total subscription price in EUR",
"numberOfMonths": "integer - number of months"
}
}
+ Response 404 (application/json)
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
404
Headers
Content-Type: application/json
Body
{
"message": "No Active Subscription Found"
}
Properties ¶
Properties in Rentlio represent main grouping of your rental units. For example, a property can be a Hotel, Hostel, Camp, etc, or a single Apartment. Most of Rentl.io api endpoints will require you to pass propertiesID param. Below are endpoints for working with properties.
List All Properties ¶
GET/properties?name={name}&page={page}&order_by={order_by}&order_direction={order_direction}
- name
string
(optional)Name of property to filter by
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
modifiedAt
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 95,
"name": "Sunshine Inn",
"address": "Novi Varoš 41",
"postalCode": "51315",
"city": "Mrkopalj",
"phone": "001982726",
"mobilePhone": "097222111",
"fax": "001982726",
"email": "info@sunshine.inn",
"webPage": "sunshine.inn",
"country": "Croatia (Hrvatska)",
"primaryCurrencyId": 1,
"secondaryCurrencyId": 3,
"createdAt": 1422949977,
"modifiedAt": 1479202103
},
{
"id": 234,
"name": "43rd Street Apartment",
"address": "43rd street",
"postalCode": "10036",
"city": "NY",
"phone": "-",
"mobilePhone": "-",
"fax": "-",
"email": "my-cozy-apartment@mail.com",
"webPage": "-",
"country": "US",
"primaryCurrencyId": 1,
"secondaryCurrencyId": 3,
"createdAt": 1453890625,
"modifiedAt": 1456133987
}
],
"perPage": 30,
"total": 2
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
"address": "string",
"postalCode": "string",
"city": "string",
"phone": "string",
"mobilePhone": "string",
"fax": "string",
"email": "string",
"webPage": "string",
"country": "string",
"primaryCurrencyId": "integer",
"secondaryCurrencyId": "integer",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Unit Types ¶
Unit Types in Rentl.io represent group of rental units with same characteristics. For example, a Double Room, Apartment or Single Room. Each Unit Type belongs to only one Property. Unit Type can have multiple Units. Also rates, availability and promotions are related to unit types in the same manner as on booking.com or expedia.ie for example.
List All Unit Types ¶
GET/properties/{id}/unit-types?page={page}&order_by={order_by}&order_direction={order_direction}
- id
int
(required)Id for property unit types are listed for
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
modifiedAt
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 40,
"name": "Standard Double Room",
"uuid": "29fc3061-dd63-4322-b4be-9ea2e00a22c9",
"minOccupancy": 1,
"baseOccupancy": 2,
"maxOccupancy": 3,
"createdAt": 1422949988,
"modifiedAt": 1429735776
},
{
"id": 41,
"name": "Suite with Balcony",
"uuid": "12084eb9-074d-4603-a41d-71b896dc8209",
"minOccupancy": 1,
"baseOccupancy": 2,
"maxOccupancy": 3,
"createdAt": 1422949993,
"modifiedAt": 1433487789
}
],
"perPage": 30,
"total": 2
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "string",
"name": "string",
"uuid": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List Unit Type Availability ¶
This endpoint will list availability for specified unit type. Results can be filtered by date range.
GET/unit-types/{id}/availability?page=&order_by={order_by}&order_direction={order_direction}&dateFrom={dateFrom}&dateTo={dateTo}
- id
int
(required)Id for unit type we are listing availability for
- dateFrom
string
(optional)Starting date for filtering availability in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- dateTo
string
(optional)Ending date for filtering availability in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: timestampChoices:
timestamp
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"date": "2015-06-05",
"availability": 2
},
{
"date": "2015-06-06",
"availability": 5
},
{
"date": "2015-06-07",
"availability": 0
},
{
"date": "2015-06-08",
"availability": 1
}
]
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": "string - ISO date",
"availability": "integer"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "UnitType ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List Unit Type Rates ¶
This endpoint will list rates for specified unit type. Currently only standard rate is listed. Results can be filtered by date range.
GET/unit-types/{id}/rates?page=&order_by={order_by}&order_direction={order_direction}&dateFrom={dateFrom}&dateTo={dateTo}
- id
int
(required)Id for unit type we are listing rates for
- dateFrom
string
(optional)Starting date for filtering rates in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- dateTo
string
(optional)Ending date for filtering rates in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: timestampChoices:
timestamp
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"date": "2015-06-05",
"price": 120
},
{
"date": "2015-06-06",
"price": 120
},
{
"date": "2015-06-07",
"price": 110
}
]
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": "string - ISO date",
"price": "float"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "UnitType ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List Unit Type Restrictions ¶
This endpoint will list restrictions for specified unit type. Currently only standard rate is listed. Results can be filtered by date range.
GET/unit-types/{id}/restrictions?page=&order_by={order_by}&order_direction={order_direction}&dateFrom={dateFrom}&dateTo={dateTo}
- id
int
(required)Id for unit type we are listing rates for
- dateFrom
string
(optional)Starting date for filtering rates in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- dateTo
string
(optional)Ending date for filtering rates in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: timestampChoices:
timestamp
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"date": "2018-05-01",
"minStay": 5
},
{
"date": "2018-05-02",
"minStay": 3
},
{
"date": "2018-05-03",
"minStay": 3
},
{
"date": "2018-05-04",
"minStay": 2
},
{
"date": "2018-05-05",
"minStay": 3
}
],
"perPage": 100,
"total": 5
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": "string - ISO date",
"minStay": "integer"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "UnitType ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Update Availability and Rates for Unit Type ¶
This endpoint will update availability, rates and restrictions for unit type for a specific dates. If there are no values already inside rentl.io, new values will be crated.
If this unit type is connected to OTA channels, update will send values to those channels.
Limitations:
Only today and future values can be updated.
We allow 365 updates per api call.
Updates can be made maximum of 3 years in advance.
This endpoint will update only Standard rate.
POST/unit-types/{id}/availrates
- id
int
(required)Id for unit type we are updating values for
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
{
"days": [
{
"date": "2017-08-10",
"price": 75,
"minStay": 2,
"maxStay": 0,
"maxStayArrival": 3,
"minStayArrival": 5,
"maxAdvanceReservation": 172,
"minAdvanceReservation": 48,
"noCheckIn": true,
"noCheckOut": true,
"closed": true
},
{
"date": "2017-08-11",
"minStay": 5
},
{
"date": "2017-08-25",
"availability": 3,
"price": 120
},
{
"date": "2017-08-26",
"availability": 5
},
{
"date": "2017-11-01",
"availability": 0
},
{
"date": "2017-11-02",
"price": 0
}
]
}
Schema
{
"type": "object",
"properties": {
"days": {
"type": "array, required - minimum 1, max 365 updates",
"items": {
"type": "object",
"properties": {
"date": "string, required - ISO format of a day that is updated. Please read limitations on dates that can be updated.",
"availability": "integer, optional - how many units inside this unit type is available for rent.",
"price": "float, optional - on what rate is your unit type rented",
"minStay": "integer, optional - a Minimum length of stay restriction limits availability by specifying a number of nights that must be booked for stays, including the restriction date in any part of the stay date range.",
"maxStay": "integer, optional - a Maximum length of stay restriction limits availability by specifying a number of nights that must be booked for stays, including the restriction date in any part of the stay date range.",
"maxStayArrival": "integer, optional - Maximum stay arrival restriction",
"minStayArrival": "integer, optional - Minimum stay arrival restriction",
"minAdvanceReservation": "integer, optional - The minimum number of days and/or hours that guests must book in advance (before the planned check-in date).",
"maxAdvanceReservation": "integer, optional - The maximum number of days and/or hours that guests must book in advance (before the planned check-in date).",
"noCheckIn": "boolean, optional - No checkin restriction",
"noCheckOut": "boolean, optional - No checkout restriction",
"closed": "boolean, optional - Specifies whether the room is closed (not bookable) on the specified date, for the specified rate."
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"Updated days": 6
}
Schema
{
"type": "object",
"properties": {
"Updated Days": "integer - total number of updated days"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"days": "Validation error on field:days, type:slice for rules:avail-updates()"
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "UnitType ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Error updating values."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Error updating values to OTA Channels."
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List Available Unit Types ¶
This endpoint will list available unit type in some date range for specific number of rooms
GET/properties/{id}/unit-types/available?dateFrom={dateFrom}&dateTo={dateTo}&rooms={rooms}&order_by={order_by}&order_direction={order_direction}
- id
int
(required)Id for property we are listing available unit types
- dateFrom
string
(required)Starting date for filtering date range in
YYYY-mm-dd
format.- dateTo
string
(required)Ending date for filtering date range in
YYYY-mm-dd
format.- rooms
int
(optional) Default: 1Minimum number of rooms that should be available to list this unit type.
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 19824,
"name": "Standard Double Room",
"totalPrice": 450.50
},
{
"id": 19825,
"name": "Suite with Balcony",
"totalPrice": 610.00
},
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "int - unique unit type identificator",
"name": "string - unit type name",
"totalPrice": "float - total price for unit type standard rate in date period for a single room"
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "dateFrom param is required ISO date format""
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "dateTo param is required ISO date format""
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Units ¶
List All Units ¶
GET/properties/{id}/units?page={page}&order_by={order_by}&order_direction={order_direction}
- id
int
(required)Id for property units are listed for
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
modifiedAt
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 199,
"propertiesId": 95,
"unitTypesId": 40,
"name": "Room 45",
"color": "e34c42",
"createdAt": 1422950002,
"modifiedAt": 0
},
{
"id": 200,
"propertiesId": 95,
"unitTypesId": 40,
"name": "Room 46",
"color": "ffba00",
"createdAt": 1422950010,
"modifiedAt": 1422960010
}
],
"perPage": 30,
"total": 2
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page"
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "string",
"propertiesId": "integer",
"unitTypesId": "integer",
"name": "string",
"color": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Availability ¶
List available unit types ¶
List available unit types and it’s rates in given period for specified property IDs.
Unit type is consedered available if it has availability set for each day of the given period (it’s value is not null and it is greater than 0)
GET/availability?propertiesIds={propertiesIds}&dateFrom={dateFrom}&dateTo={dateTo}
- propertiesIds
string
(required)comma separated list of propertyIds, for which to get available units
- dateFrom
string
(required)starting date in YYYY-mm-dd format, for period in which to look for available unit types.
- dateTo
string
(required)ending date in YYYY-mm-dd format. It must come after dateFrom.
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 95,
"name": "Demo objekt",
"unitTypes": [
{
"id": 41,
"name": "PUT",
"availability": [
{
"timestamp": 1584662400,
"value": 1
},
{
"timestamp": 1584748800,
"value": 2
},
{
"timestamp": 1584835200,
"value": 3
},
{
"timestamp": 1584921600,
"value": 4
},
{
"timestamp": 1585008000,
"value": 5
}
],
"rates": [
{
"id": 0,
"name": "Standard rate",
"DailyValues": [
{
"timestamp": 1584662400,
"price": 120
},
{
"timestamp": 1584748800,
"price": 120,
"minStay": 5
},
{
"timestamp": 1584835200,
"price": 120,
"maxStay": 10,
"minStayArrival": 15
},
{
"timestamp": 1584921600,
"price": 100,
"noCheckIn": true,
"noCheckOut": true
},
{
"timestamp": 1585008000,
"price": 100,
"maxStayArrival": 18
}
]
},
{
"id": 1615,
"name": "Holiday Rate",
"DailyValues": [
{
"timestamp": 1584662400,
"price": 200,
"maxStay": 5,
"noCheckIn": true
},
{
"timestamp": 1584748800,
"price": 200,
"maxStay": 5
},
{
"timestamp": 1584835200,
"price": 200,
"maxStay": 5,
"maxStayArrival": 8
},
{
"timestamp": 1584921600,
"price": 200,
"maxStay": 5,
"minStayArrival": 15
},
{
"timestamp": 1585008000,
"price": 2200,
"noCheckOut": true
}
]
}
]
}
]
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique property ID",
"name": "string - property name",
"unitTypes": {
"type": "array",
"items": {
"type": "object",
"items": {
"id": "integer - unique unit type ID",
"name": "unit type name",
"availability": {
"type": "array",
"items": {
"type": "object",
"properties": {
"timestamp": "integer - unix timestamp in seconds",
"value": "integer - number of available unit types on day"
}
}
},
"rates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"timestamp": "integer - unix timestamp in seconds",
"price": "double - price for unit type on day",
"minStay": "integer - minimum stay restriction",
"maxStay": "integer - maximum stay restriction",
"minStayArrival": "integer - minimum stay arrival restriction",
"maxStayArrival": "integer - maximum stay arrival restriction",
"noCheckIn": "boolean - check in restriction",
"noCheckOut": "boolean - check out restriction",
}
}
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "missing propertiesIds param"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Invalid param: propertiesIds"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "propertiesIDs must not be empty"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Please provide both dateFrom and dateTo"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "invalid dateFrom format"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "invalid dateTo format"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "dateFrom must come before dateTo"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "could not get available unit types"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "could not get rate plan values"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Reservations ¶
Reservation or a Booking is a period in which one or more guests are staying in your unit. Reservation has one major guest called Reservation Holder and additional guests. Besides guests, Reservation has other important attributes. Below are endpoints responsible for handling reservations.
Create new reservation ¶
Creates new reservation from input data
POST/reservations
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
{
"unitTypeId": 41,
"dateFrom": "2018-05-23",
"dateTo": "2018-05-25",
"email": "guest@rentl.io",
"fullName": "Jane Doe",
"persons": 4,
"rooms": 2,
"note": "Hello from API",
"cardHolder": "John Doe",
"cardNumber": "422222222222",
"expiryMonth": "12",
"expiryYear": "2020",
"salesChannelsId": 45,
"adults": 4,
"children": [
{
"age": 3
},
{
"age": 15
}
]
}
Schema
{
"type": "object",
"properties": {
"unitTypeId": "integer - Invoice item unique identifier",
"dateFrom": "string - Arrival date of the reservation",
"dateTo": "string - Departure date of the reservation",
"email": "string - Reservation holder email",
"fullName": "string - Reservation holder full name",
"persons": "integer - Number of persons on the reservation (deprecating, use adults and children insteads)",
"rooms": "integer - Number of rooms that we want to book",
"note": "string - Reservation note",
"cardHolder": "string - Credit card holder",
"cardNumber": "string - Credit card number",
"expiryMonth": "string - Month of credit card expiration",
"expiryYear": "string - Year of credit card expiration",
"salesChannelsId": "integer - (optional) Sales channel id",
"adults": "integer - Number of adults on the reservation. If sent persons is ignored.",
"children": {
"type": "array, optional - maximum 20 children can be sent",
"items": {
"type": "object",
"properties": {
"age": "integer, required - The age of child. maximum 17"
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"uuid": "",
"permalink": "",
"reservations": [
{
"id": 10125,
"publicId": "",
"unitsId": 199,
"unitsTypesId": 0,
"guestsId": 14055,
"guestName": "Jane Doe",
"guestEmail": "guest@rentl.io",
"arrivalDate": 1527033600,
"departureDate": 1527206400,
"adults": 6,
"totalPrice": 240,
"accommodationCost": 240,
"totalCost": 271.2,
"totalReservationPrice": 271.2,
"vatAmount": 31.200000000000003,
"vatRate": 13,
"vatRegistered": "Y",
"vatIncluded": "N",
"totalNights": 2,
"pricePerNight": 120,
"origin": 5,
"status": 1,
"unitName": "PUT 1",
"hasCCardData": "N",
"note": "Hello from API",
"currencyId": 1,
"isOverlapped": "N",
"salesChannelsId": 45
},
{
"id": 10126,
"publicId": "",
"unitsId": 200,
"unitsTypesId": 0,
"guestsId": 14055,
"guestName": "Jane Doe",
"guestEmail": "guest@rentl.io",
"arrivalDate": 1527033600,
"departureDate": 1527206400,
"adults": 6,
"totalPrice": 240,
"accommodationCost": 240,
"totalCost": 271.2,
"totalReservationPrice": 271.2,
"vatAmount": 31.200000000000003,
"vatRate": 13,
"vatRegistered": "Y",
"vatIncluded": "N",
"totalNights": 2,
"pricePerNight": 120,
"origin": 5,
"status": 1,
"unitName": "PUT 2",
"hasCCardData": "N",
"note": "Hello from API",
"currencyId": 1,
"isOverlapped": "N",
"salesChannelsId": 45
}
]
}
Schema
{
"type": "object",
"properties": {
"uuid": "string",
"permalink": "string",
"reservations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"publicId": "string",
"unitsId": "integer",
"unitsTypesId": "integer",
"guestName": "string",
"guestEmail": "string",
"arrivalDate": "integer - UTC unix timestamp",
"departureDate": "integer - UTC unix timestamp",
"adults": "integer",
"totalPrice": "integer",
"accommodationCost": "integer",
"totalCost": "integer",
"totalReservationPrice": "integer",
"vatAmount": "integer",
"vatRate": "integer",
"vatRegistered": "string",
"vatIncluded": "string",
"totalNights": "integer",
"pricePerNight": "integer",
"origin": "integer",
"status": "integer",
"unitName": "string",
"hasCCardData": "string",
"note": "string",
"currencyId": "integer",
"isOverlapped": "string",
"salesChannelsId": "integer"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "UnitType ID param missing"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "DateTo has to be greater then DateFrom"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to save credit card data"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to get user"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to get unit type"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to get property settings"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Uknown credit card"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Invalid credit card number"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to save guest"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to create connection"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to set credit card data"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to save credit card data"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to get notifications"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to send notifications"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to get availability from ota channels"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Unable to sync new availability to ota channels"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"global": "Daily prices are missing"
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Cancel Reservation ¶
Attempt to cancel an existing reservation. Trying to cancel already canceled reservation will result in bad request response. On success, availability for the object the reservation has been created on will be increased accordingly.
DELETE/reservations/{reservationId}
- reservationId
int
(required)Id of reservation we want to cancel
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"code": 200,
"message": "Reservation canceled",
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Reservation already canceled",
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Reservation not found",
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Reservation ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Get Reservation Details ¶
This endpoint will get reservation details for reservation with specified ID.
GET/reservations/{reservationId}/details
- reservationId
int
(required)Id of reservation that we want to get details for
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"id": 423978438,
"unitsId": 124453,
"propertiesId": 31875,
"arrivalDate": 1444262400,
"departureDate": 1445040000,
"unitName": "Room 46",
"totalNights": 9,
"note": "Airport transfer",
"status": 7,
"rateNames": "Standard rate",
"origin": 2,
"adults": 3,
"childrenAbove12": 1,
"childrenUnder12": 0,
"salesChannelName": "",
"otaChannelName": "booking.com",
"channelID": "876213523",
"pricePerNight": 10,
"totalPrice": 90,
"accommodationCost": 90,
"totalCost": 101.7,
"discountPercentage": 0,
"discountNominal": 0,
"currencyId": 1,
"depositNominal": 0,
"tentativeValidUntil": 0,
"channelCommissionNominal": 0,
"channelCommissionPercentage": 0,
"totalServicesPrice": 0,
"totalReservationPrice": 101.7,
"vatRate": 13,
"vatAmount": 11.7,
"vatIncluded": "N",
"createdAt": 1433847394,
"bookedAt": 1433846354,
"canceledAt": 1445002837,
"modifiedAt": 1445002837,
"services": [
{
"id": 1,
"servicesId": 5,
"name": "WIFI",
"amount": 10,
"price": 7,
"priceSecondary": 52.5,
"paymentType": {
"id": 1,
"name": "Per Night"
},
"tax": 15
}
],
"holder": {
"id": 14049,
"name": "Šime Basioli",
"email": "holder@rentl.io",
"contactNumber": "091123456789",
"note": "Asked about local gastronomy",
"hostAgain": "Y",
"address": "",
"city": "",
"postalCode": "",
"countryName": "Croatia (Hrvatska)",
"documentNumber": "1234567890",
"genderId": "2",
"cityOfBirth": "",
"cityOfResidence": "Zadar",
"dateOfBirth": "421485748",
"providedServicesTypesId": "1",
"travelDocumentTypesId": "6",
"touristTaxCategoriesId": "1",
"arrivalArrangementsId": "1",
"visaTypesId": "",
"countryOfResidenceId": "",
"countryOfBirthId": "53",
"citizenshipCountryId": "53",
"isAdditional": "N",
"createdAt": 1526023219,
"modifiedAt": 1526023408
},
"additionalGuests": [
{
"id": 14048,
"name": "Barbara Dujic",
"email": "guest@rentl.io",
"contactNumber": "09232412312312",
"note": "",
"hostAgain": "Y",
"address": "",
"city": "",
"postalCode": "",
"countryName": "Ireland",
"documentNumber": "0987654321",
"genderId": "1",
"cityOfBirth": "",
"cityOfResidence": "Zadar",
"dateOfBirth": "642410608",
"providedServicesTypesId": "1",
"travelDocumentTypesId": "11",
"touristTaxCategoriesId": "18",
"arrivalArrangementsId": "1",
"visaTypesId": "",
"countryOfResidenceId": "",
"countryOfBirthId": "53",
"citizenshipCountryId": "53",
"isAdditional": "Y",
"createdAt": 1526023219,
"modifiedAt": 1526023408
}
],
"invoices": [
{
"id": 30,
"year": "2019",
"totalValue": 316.4,
"totalValueSecondary": 2373,
"type": {
"id": 1,
"name": "Invoice"
},
"paymentStatus": {
"id": 2,
"name": "Unpaid"
},
"number": "51-POS1-1"
}
]
}
Schema
{
"type": "object",
"properties": {
"id": "integer - unique reservation ID",
"unitsId": "integer - unique unit ID for reserved unit",
"propertiesId": "integer - unique property ID for reserved property",
"arrivalDate": "integer - UTC unix timestamp",
"departureDate": "integer - UTC unix timestamp",
"unitName": "string - name of reserved unit",
"totalNights": "integer - Total number of reserved nights",
"internalNote": "string - Free text note on reservation",
"note": "string - Free text note on reservation. When reservation is from OTA this field holds guest note",
"status": "integer - Reservation status. Please check reservation statuses enum for possible values",
"rateNames": "string - Comma separated list of rate names from OTA",
"origin": "integer - 1 => manually entered, 2 => from OTA channels",
"adults": "integer - number of adults",
"childrenAbove12": "integer - number of children above 12 years old",
"childrenUnder12": "integer - number of children under 12 years old",
"salesChannelName": "string - name of sales channel this reservation is booked at. This is only for manual channels specified at rentlio UI",
"otaChannelName": "string - name of OTA sales channel this reservation is booked at. This field will be set for reservation retrieved from OTA channels when using channel manager.",
"channelID": "string - unique reservation ID on OTA channel (for example booking.com)",
"pricePerNight": "float - price for single night",
"totalPrice": "float - (pricePerNight * totalNights)",
"accommodationCost": "float - (totalPrice - discountNominal)",
"totalCost": "float - (accommodationCost + vatAmount)",
"discountPercentage": "float - percent of discount applied",
"discountNominal": "float - total nominal amount of discount applied",
"currencyId": "integer - unique currency ID. Check currency enum endpoint for possible values",
"depositNominal": "float - amount of deposit provided",
"tentativeValidUntil": "integer - UNIX Timestamp. When this option is expired. Will be set when reservation status is OPTION",
"channelCommissionNominal": "float - nominal value for channel commission",
"channelCommissionPercentage": "float - percentage value for channel commission",
"totalServicesPrice": "float - total amount for all services attached to reservation",
"totalReservationPrice": "float - (totalCost + totalServicesPrice). Final reservation price",
"vatRate": "float - VAT rate (percentage) applied for this reservation",
"vatAmount": "float - VAT amount for this reservation",
"vatIncluded": "string - Can be Y or N. If VAT is not included it is added to totalCost. If vat is included it is calculated from totalCost",
"bookedAt": "integer - UTC unix timestamp. Specifies when was this reservation booked. If this is manual reservation, bookedAt is same as createdAt.",
"canceledAt": "integer - UTC unix timestamp. Specifies when was this reservation canceled. This field will be available only if reservation status is CANCELED.",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp",
"services": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"servicesId": "integer - unique service type id",
"name": "string - service name",
"amount": "integer - amount of services purchased on the reservation",
"price": "float - price for one service",
"priceSecondary": "float - price for one service",
"paymentType": "object",
"properties": {
"id": "integer - unique service payment type ID",
"name": "string - human readable service payment type name"
},
"tax": "integer - tax amount in %"
}
}
},
"holder": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
"email": "string",
"contactNumber": "string",
"note": "string",
"hostAgain": "string",
"address": "string",
"city": "string",
"postalCode": "string",
"countryName": "string",
"documentNumber": "string",
"genderId": "string",
"cityOfBirth": "string",
"cityOfResidence": "string",
"dateOfBirth": "integer - UTC unix timestamp",
"providedServicesTypesId": "string",
"travelDocumentTypesId": "string",
"touristTaxCategoriesId": "string",
"arrivalArrangementsId": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
},
"additionalGuests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
"email": "string",
"contactNumber": "string",
"note": "string",
"hostAgain": "string",
"address": "string",
"city": "string",
"postalCode": "string",
"countryName": "string",
"documentNumber": "string",
"genderId": "string",
"cityOfBirth": "string",
"cityOfResidence": "string",
"dateOfBirth": "integer - UTC unix timestamp",
"providedServicesTypesId": "string",
"travelDocumentTypesId": "string",
"touristTaxCategoriesId": "string",
"arrivalArrangementsId": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
},
"invoices": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"year": "string",
"totalValue": "float",
"totalValueSecondary": "float",
"type": "object",
"properties": {
"id'": "integer - unique invoice type ID",
"name": "string - human readable invoice type name"
},
"paymentStatus": "object",
"properties": {
"id": "integer - unique invoice payment status ID",
"name": "string - human readable invoice payment status name"
},
"number": "string"
}
}
},
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Reservation ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Reservations Today for a Unit ¶
This endpoint will list current reservation in specified unit, that has checkedIn status to true and checkOut status to false.
GET/units/{unitId}/reservations/today?page={page}&order_by={order_by}&order_direction={order_direction}
- unitId
int
(required)Id for unit reservations are listed for
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
modifiedAt
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 10128,
"arrivalDate": 1480032000,
"departureDate": 1480723200,
"createdAt": 1480084148,
"modifiedAt": 0,
"holder": {
"id": 14014,
"name": "Robert Smith"
}
}
],
"perPage": 30,
"total": 1
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page"
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "string",
"arrivalDate": "integer - UTC unix timestamp",
"departureDate": "integer - UTC unix timestamp"
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
"holder" : {
"type" : "object",
"properties": {
"id" : "integer - reservation holder ID",
"name": "string - reservation holder full name"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Unit ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Reservations ¶
This endpoint will list all available reservations for specified filters. If no filters are specified all user reservations will be listed starting from largest reservation ID.
GET/reservations?perPage={perPage}&page={page}&order_by={order_by}&order_direction={order_direction}&dateFrom={dateFrom}&dateTo={dateTo}&status={status}&unitsId={unitsId}&propertiesId={propertiesId}&bookedAtFrom={bookedAtFrom}&bookedAtTo={bookedAtTo}&canceledAtFrom={canceledAtFrom}&canceledAtTo={canceledAtTo}&createdAtFrom={createdAtFrom}&createdAtTo={createdAtTo}&modifiedAtFrom={modifiedAtFrom}&modifiedAtTo={modifiedAtTo}&checkedInAtFrom={checkedInAtFrom}&checkedInAtTo={checkedInAtTo}&checkedOutAtFrom={checkedOutAtFrom}&checkedOutAtTo={checkedOutAtTo}
- status
int
(optional)Enables filtering by reservation status.
- unitsId
string
(optional)Comma separated list of unit IDs. Enables filtering by units. Single unit ID can also be used.
- propertiesId
string
(optional)Comma separated list of property IDs. Enables filtering by properties. Single property ID can also be used.
- dateFrom
string
(optional)Starting date for dateFrom filter in
YYYY-mm-dd
format. Filters reservations by the arrival date. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- dateTo
string
(optional)Ending date for dateTo filter in YYYY-mm-dd format.Filters reservations by the departure date. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.
- bookedAtFrom
string
(optional)Starting date for bookedAt filter in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- bookedAtTo
string
(optional)Ending date for bookedAt filter in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- canceledAtFrom
string
(optional)Starting date for canceledAt filter in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- canceledAtTo
string
(optional)Ending date for canceledAt filter in
YYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- createdAtFrom
string
(optional)Starting date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored. In manually created reservations createdAt and bookedAt are equal.- createdAtTo
string
(optional)Ending date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored. In manually created reservations createdAt and bookedAt are equal.- modifiedAtFrom
string
(optional)Starting date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- modifiedAtTo
string
(optional)Ending date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- checkedInAtFrom
string
(optional)Starting date for checkedInAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- checkedInAtTo
string
(optional)Ending date for checkedInAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- checkedOutAtFrom
string
(optional)Starting date for checkedOutAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- checkedOutAtTo
string
(optional)Ending date for checkedOutAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- perPage
string
(optional)Number of items per page. Default is 30. Maximum number can be 100.
- page
string
(optional)Results page number.
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
modifiedAt
bookedAt
arrivalDate
departureDate
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 423978438,
"unitsId": 124453,
"propertiesId": 31875,
"arrivalDate": 1444262400,
"departureDate": 1445040000,
"unitName": "Room 46",
"totalNights": 9,
"note": "Airport transfer",
"status": 7,
"checkedIn": "Y",
"checkedOut": "Y",
"rateNames": "Standard rate",
"origin": 2,
"adults": 3,
"childrenAbove12": 1,
"childrenUnder12": 0,
"salesChannelName": "",
"otaChannelName": "booking.com",
"channelID": "876213523",
"guestId": 14014,
"guestName": "Robert Smith",
"guestEmail": "r.smith@emailme.com",
"guestContactNumber": "",
"guestCountryName": "United States",
"pricePerNight": 10,
"totalPrice": 90,
"accommodationCost": 90,
"totalCost": 101.7,
"discountPercentage": 0,
"discountNominal": 0,
"currencyId": 1,
"depositNominal": 0,
"tentativeValidUntil": 0,
"channelCommissionNominal": 0,
"channelCommissionPercentage": 0,
"totalServicesPrice": 0,
"totalReservationPrice": 101.7,
"vatRate": 13,
"vatAmount": 11.7,
"vatIncluded": "N",
"createdAt": 1433847394,
"bookedAt": 1433846354,
"canceledAt": 1445002837,
"modifiedAt": 1445002837,
"checkedInAt": 1445002837,
"checkedOutAt": 1445002837
}
],
"perPage": 30,
"total": 1
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique reservation ID",
"unitsId": "integer - unique unit ID for reserved unit",
"propertiesId": "integer - unique property ID for reserved property",
"arrivalDate": "integer - UTC unix timestamp",
"departureDate": "integer - UTC unix timestamp",
"unitName": "string - name of reserved unit",
"totalNights": "integer - Total number of reserved nights",
"note": "string - Free text note on reservation. When reservation is from OTA this field holds guest note",
"status": "integer - Reservation status. Please check reservation statuses enum for possible values",
"checkedIn": "string - Checked In/Out status. Can be 'Y', 'N' or empty",
"checkedOut": "string - Checked In/Out status. Can be 'Y', 'N' or empty",
"rateNames": "string - Comma separated list of rate names from OTA",
"origin": "integer - 1 => manually entered, 2 => from OTA channels",
"adults": "integer - number of adults",
"childrenAbove12": "integer - number of children above 12 years old",
"childrenUnder12": "integer - number of children under 12 years old",
"salesChannelName": "string - name of sales channel this reservation is booked at. This is only for manual channels specified at rentlio UI",
"otaChannelName": "string - name of OTA sales channel this reservation is booked at. This field will be set for reservation retrieved from OTA channels when using channel manager.",
"channelID": "string - unique reservation ID on OTA channel (for example booking.com)",
"guestId": "integer - unique id for guest that made reservation",
"guestName": "string - full name of guest that made reservation",
"guestEmail": "string - email of guest that made reservation",
"guestContactNumber": "string - contact number of guest that made reservation",
"guestCountryName": "string - country name of guest that made reservation",
"pricePerNight": "float - price for single night",
"totalPrice": "float - (pricePerNight * totalNights)",
"accommodationCost": "float - (totalPrice - discountNominal)",
"totalCost": "float - (accommodationCost + vatAmount)",
"discountPercentage": "float - percent of discount applied",
"discountNominal": "float - total nominal amount of discount applied",
"currencyId": "integer - unique currency ID. Check currency enum endpoint for possible values",
"depositNominal": "float - amount of deposit provided",
"tentativeValidUntil": "integer - UNIX Timestamp. When this option is expired. Will be set when reservation status is OPTION",
"channelCommissionNominal": "float - nominal value for channel commission",
"channelCommissionPercentage": "float - percentage value for channel commission",
"totalServicesPrice": "float - total amount for all services attached to reservation",
"totalReservationPrice": "float - (totalCost + totalServicesPrice). Final reservation price",
"vatRate": "float - VAT rate (percentage) applied for this reservation",
"vatAmount": "float - VAT amount for this reservation",
"vatIncluded": "string - Can be Y or N. If VAT is not included it is added to totalCost. If vat is included it is calculated from totalCost",
"bookedAt": "integer - UTC unix timestamp. Specifies when was this reservation booked. If this is manual reservation, bookedAt is same as createdAt.",
"canceledAt": "integer - UTC unix timestamp. Specifies when was this reservation canceled. This field will be available only if reservation status is CANCELED.",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp",
"checkedInAt": "integer - UTC unix timestamp",
"checkedOutAt": "integer - UTC unix timestamp"
}
}
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Check in ¶
This endpoint will make a check-in for reservation specified with the id.
PUT/reservations/{reservationId}/checkin
- reservationId
int
(required)Id of the reservation that we want to check-in
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
{
"checkIn": true
}
Schema
{
"type": "object",
"properties": {
"checkIn": "boolean - true for check-in, false to annulate check-in"
}
}
200
Headers
Content-Type: application/json
Body
{
"code": "200",
"message": "Check in status updated"
}
Schema
{
"type": "object",
"properties": {
"code": "integer - http code if everything went ok",
"message": "string - status of operation"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Reservation ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Unable to parse request"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Unable to update checkIn status"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Check out ¶
This endpoint will make a check-out for reservation specified with the id.
PUT/reservations/{reservationId}/checkout
- reservationId
int
(required)Id of the reservation that we want to check-out
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
{
"checkOut": true
}
Schema
{
"type": "object",
"properties": {
"checkOut": "boolean - true for check-out, false to annulate check-out"
}
}
200
Headers
Content-Type: application/json
Body
{
"code": "200",
"message": "Check out status updated"
}
Schema
{
"type": "object",
"properties": {
"code": "integer - http code if everything went ok",
"message": "string - status of operation"
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Reservation ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Unable to parse request"
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Unable to update checkIn status"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Guests ¶
Guests section lists endpoints that are responsible for handling all guest related data.
List guests for the reservation ¶
This endpoint will list all the guests that are associated with the reservation. That means that it will return the reservation holder and the list of the additional guests.
The reservation can have only one holder and multiple additional guests.
GET/reservations/{reservationId}/guests
- reservationId
int
(required)Id of the reservation that we want to check-out
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"holder": {
"id": 14049,
"name": "Šime Basioli",
"email": "holder@rentl.io",
"contactNumber": "091123456789",
"note": "Asked about local gastronomy",
"hostAgain": "Y",
"address": "",
"city": "",
"postalCode": "",
"countryName": "Croatia (Hrvatska)",
"documentNumber": "1234567890",
"genderId": "2",
"cityOfBirth": "",
"cityOfResidence": "Zadar",
"dateOfBirth": "421485748",
"providedServicesTypesId": "1",
"travelDocumentTypesId": "6",
"touristTaxCategoriesId": "1",
"arrivalArrangementsId": "1",
"visaTypesId": "",
"countryOfResidenceId": "",
"countryOfBirthId": "53",
"citizenshipCountryId": "53",
"isAdditional": "N",
"createdAt": 1526023219,
"modifiedAt": 1526023408
},
"additionalGuests": [
{
"id": 14048,
"name": "Barbara Dujic",
"email": "guest@rentl.io",
"contactNumber": "09232412312312",
"note": "",
"hostAgain": "Y",
"address": "",
"city": "",
"postalCode": "",
"countryName": "Ireland",
"documentNumber": "0987654321",
"genderId": "1",
"cityOfBirth": "",
"cityOfResidence": "Zadar",
"dateOfBirth": "642410608",
"providedServicesTypesId": "1",
"travelDocumentTypesId": "11",
"touristTaxCategoriesId": "18",
"arrivalArrangementsId": "1",
"visaTypesId": "",
"countryOfResidenceId": "",
"countryOfBirthId": "53",
"citizenshipCountryId": "53",
"isAdditional": "Y",
"createdAt": 1526023219,
"modifiedAt": 1526023408
}
]
}
Schema
{
"type": "object",
"properties": {
"holder": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
"email": "string",
"contactNumber": "string",
"note": "string",
"hostAgain": "string",
"address": "string",
"city": "string",
"postalCode": "string",
"countryName": "string",
"documentNumber": "string",
"genderId": "string",
"cityOfBirth": "string",
"cityOfResidence": "string",
"dateOfBirth": "integer - UTC unix timestamp",
"providedServicesTypesId": "string",
"travelDocumentTypesId": "string",
"touristTaxCategoriesId": "string",
"arrivalArrangementsId": "string",
"visaTypesId": "string",
"countryOfResidenceId": "string",
"countryOfBirthId": "string",
"citizenshipCountryId": "string",
"isAdditional": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
},
"additionalGuests": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
"email": "string",
"contactNumber": "string",
"note": "string",
"hostAgain": "string",
"address": "string",
"city": "string",
"postalCode": "string",
"countryName": "string",
"documentNumber": "string",
"genderId": "string",
"cityOfBirth": "string",
"cityOfResidence": "string",
"dateOfBirth": "integer - UTC unix timestamp",
"providedServicesTypesId": "string",
"travelDocumentTypesId": "string",
"touristTaxCategoriesId": "string",
"arrivalArrangementsId": "string",
"visaTypesId": "string",
"countryOfResidenceId": "string",
"countryOfBirthId": "string",
"citizenshipCountryId": "string",
"isAdditional": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"message": "Reservation ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Checked-In Guests ¶
This endpoint will list reservations with reservation holders that are checked-In at property in some date range.
GET/properties/{propertiesId}/guests/checked-in?from={from}&to={to}&page={page}&order_by={order_by}&order_direction={order_direction}
- propertiesId
int
(required)Id for property we are listing guests of
- from
ISO date
(required)starting date for checkin range, in ISO format
- Example: 2017-12-30
- to
ISO date
(required)Ending date for checkin range, in ISO format
- Example: 2017-12-31
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
modifiedAt
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 10124,
"arrivalDateTs": 1512432000,
"departureDateTs": 1513036800,
"unitName": "Room 46",
"note": "Airport transfer",
"createdAt": 1512466234,
"modifiedAt": 1512466238,
"checkedInAt": 1512466238,
"holder": {
"id": 14010,
"name": "Robert Smith",
"email": "r.smith@emailme.com",
"address": "4240 Elk Street",
"city": "Costa Mesa",
"postalCode": "92627",
"cityOfResidence": "Costa Mesa",
"documentNumber": "T8142160",
"dateOfBirth": "1983-01-06",
"documentType": {
"id": 19,
"name": "Driver's licence (foreign)"
},
"ctizenshipCountry": {
"id": 1,
"name": "United States"
},
"arrivalArrangement": {
"id": 1,
"name": "Personal"
},
"touristTaxCategory": {
"id": 3,
"name": "Tourist staying in a property"
},
"country": {
"id": 1,
"name": "United States"
},
"countryOfBirth": {
"id": 1,
"name": "United States"
}
}
},
{
"id": 10125,
"arrivalDateTs": 1512432000,
"departureDateTs": 1512864000,
"unitName": "Room 47",
"note": "Uknown guest",
"createdAt": 1512484206,
"modifiedAt": 1512484225,
"checkedInAt": 1512484225,
"holder": {}
}
],
"perPage": 30,
"total": 2
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique id",
"arrivalDateTs": "integer - UTC unix timestamp",
"departureDateTs": "integer - UTC unix timestamp",
"unitName": "string",
"note": "string",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp",
"checkedInAt": "integer - UTC unix timestamp",
"holder": {
"type": "object",
"properties": {
"id": "integer - unique id",
"name": "string",
"email": "string",
"address": "string",
"city": "string",
"postalCode": "string",
"cityOfResidence": "string",
"documentNumber": "string",
"dateOfBirth": "string, ISO date format",
"documentType": {
"type": "object",
"properties": {
"id": "integer - unique id",
"name": "string"
}
},
"ctizenshipCountry": {
"type": "object",
"properties": {
"id": "integer - unique id",
"name": "string"
}
},
"arrivalArrangement": {
"type": "object",
"properties": {
"id": "integer - unique id",
"name": "string"
}
},
"touristTaxCategory": {
"type": "object",
"properties": {
"id": "integer - unique id",
"name": "string"
}
},
"country": {
"type": "object",
"properties": {
"id": "integer - unique id",
"name": "string"
}
},
"countryOfBirth": {
"type": "object",
"properties": {
"id": "integer - unique id",
"name": "string"
}
}
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Date range params missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Wrong date param format"
}
400
Headers
Content-Type: application/json
Body
{
"message": "DateTo must be before DateFrom"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List Checked-In Guest Using SmartCard ¶
This endpoint will list guest that is checked-In at property and has smart card code as specified. Also some reservation data will be retuned.
GET/smart-card/{propertiesId}/{code}/guests/checked-in
- propertiesId
int
(required)Id for property we are listing guests of
- code
string
(required)smart card code
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"reservationsId": 10124,
"guestsId": 14048,
"code": "smart01",
"guestName": "John Doe",
"unitName": "Room 101",
"arrivalDate": "1534118400",
"departureDate": "1534723200"
}
Schema
{
"type": "object",
"properties": {
"reservationsId": "integer - unique ID for this reservation",
"guestsId": "integer - unique ID for guest",
"code": "string - smart card code",
"guestName": "string - guest full name",
"unitName": "string - unit name where guest is staying",
"arrivalDate": "integer - UTC unix timestamp",
"departureDate": "integer - UTC unix timestamp"
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Smart Code param missing"
}
404
Headers
Content-Type: application/json
Body
{
"message": "Guest with smart card not found on checked-in reservation"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Services ¶
Services in Rentlio represent something that you can offer to your guests besides accommodation. For example parking, rent a bike, meals… Services are defined per property and can then be added to reservations and/or invoices. Below are endpoints responsible for handling services.
List All Services For Property ¶
This endpoint will list all services with related taxes for specified property.
GET/properties/{id}/services?page={page}&order_by={order_by}&order_direction={order_direction}
- id
int
(required)Id for property services are listed for
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 3,
"name": "Bike",
"paymentType": {
"id": 3,
"name": "Per Adult"
},
"price": 50,
"priceSecondary": 0,
"taxes": [],
"createdAt": 1427206131
},
{
"id": 5,
"name": "WiFi",
"paymentType": {
"id": 1,
"name": "Per Night"
},
"price": 7,
"priceSecondary": 0,
"taxes": [],
"createdAt": 1428647541
},
{
"id": 6,
"name": "Kayak",
"paymentType": {
"id": 1,
"name": "Per Night"
},
"price": 41.12,
"priceSecondary": 0,
"taxes": [
{
"includedInPrice": "N",
"label": "PCD",
"rate": 6.43
}
],
"createdAt": 1428907978
},
{
"id": 7,
"name": "Breakfast",
"paymentType": {
"id": 7,
"name": "Fixed"
},
"price": 10,
"priceSecondary": 0,
"taxes": [
{
"includedInPrice": "Y",
"label": "PNP",
"rate": 3
}
],
"createdAt": 1429735791
}
],
"perPage": 30,
"total": 4
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
"price": "float",
"priceSecondary": "float",
"createdAt": "integer - UTC unix timestamp",
"paymentType": {
"type": "object",
"properties": {
"id": "integer",
"name": "string"
}
},
"taxes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"includedInPrice": "string (enum[Y,N])",
"label": "string",
"rate": "float"
}
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Invoices ¶
An invoice is a document that specifies the amount and cost of products or services that have been provided by a host. Invoice consist of some general data, invoice items and invoice taxes. Below are endpoints responsible for handling Invoices.
Get invoices ¶
This endpoint will provide list of invoices for selected properties.
GET/invoices?propertiesIds={propertiesIds}&page={page}&order_by=&order_direction={order_direction}&createdAtFrom={createdAtFrom}&createdAtTo={createdAtTo}&modifiedAtFrom={modifiedAtFrom}&modifiedAtTo={modifiedAtTo}
- propertiesIds
string
(required)Comma separated list of existing properties
- createdAtFrom
string
(optional)Starting date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- createdAtTo
string
(optional)Starting date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- modifiedAtFrom
string
(optional)Starting date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- modifiedAtTo
string
(optional)Starting date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 28,
"propertiesId": 95,
"reservationsId": 10124,
"canceledInvoicesId": 0,
"reservationsGroupsId": 0,
"number": 50,
"date": 1525954380,
"year": "2018",
"totalNights": 0,
"pricePerNight": 0,
"totalPrice": 0,
"vatRegistered": "Y",
"vatIncluded": "N",
"vatId": "HR12345678",
"vatRate": 13,
"vatAmount": 65,
"discountPercentage": 0,
"exchangeRate": 7.5,
"clientName": "",
"clientEmail": "",
"clientAddress": "",
"clientVatID": "",
"officeNumber": 0,
"deviceNumber": 1,
"jirCode": "some-invoice-jir-code",
"zkiCode": "some-invoice-zki-code",
"status": 3,
"paymentType": 1,
"paymentTypeValue": "Gotovina (Banknotes)",
"deliveryDate": 1525910400,
"dueDate": 1525910400,
"operatorsId": 1,
"operatorsLegalId": "11111111111",
"clientsId": 0,
"businessSpacesId": 7,
"notice": "",
"header": "Sesame Street 23, 23000 Zadar \n t: 0231833253 \n user@rentl.io, www.myproperty.com",
"footer": "Sesame Street 23, 23000 Zadar | t: 023833253 | user@rentl.io, www.myproperty.com",
"isInFiscalisation": "Y",
"fiscalisationStatus": 1,
"paymentStatus": 2,
"cancellationInvoiceId": 0,
"cashDeskLabel": "",
"businessSpacesLabel": "POS1",
"color": "e34c42",
"totalValue": 565,
"totalValueSecondary": 4237.5,
"type": 1,
"numerationType": "P",
"creditCardType": 0,
"currencyId": 1,
"secondaryCurrencyId": 3,
"deletedAt": 0,
"createdAt": 1525954426,
"modifiedAt": 0
}
],
"perPage": 30,
"total": 1
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"propertiesId": "integer",
"reservationsId": "integer",
"canceledInvoicesId": "integer",
"reservationsGroupsId": "integer",
"number": "integer",
"date": "integer - UTC unix timestamp",
"year": "string",
"totalNights": "integer",
"pricePerNight": "float",
"totalPrice": "float",
"vatRegistered": "string - (Y or N)",
"vatIncluded": "string - (Y or N)",
"vatId": "string - legal Id of the issuer",
"vatRate": "float",
"vatAmount": "float",
"discountPercentage": "float",
"exchangeRate": "float - rate used for conversions between primary and secondary currency",
"clientsId": "integer",
"clientName": "string",
"clientEmail": "string",
"clientAddress": "string",
"clientVatID": "string",
"officeNumber": "integer",
"deviceNumber": "integer",
"jirCode": "string",
"zkiCode": "string",
"status": "integer - status of the invoice (1 - draft, 2 - issued, 3 - fiscalised)",
"paymentType": "integer",
"paymentTypeValue": "string",
"deliveryDate": "integer - UTC unix timestamp",
"dueDate": "integer - UTC unix timestamp",
"operatorsId": "integer",
"operatorsLegalId": "string",
"businessSpacesId": "integer",
"notice": "string",
"header": "string",
"footer": "string",
"isInFiscalisation": "string - (Y or N)",
"fiscalisationStatus": "integer",
"paymentStatus": "integer",
"cancellationInvoiceId": "integer",
"cashDeskLabel": "string",
"businessSpacesLabel": "string",
"color": "string",
"totalValue": "float - total cost of the invoice",
"totalValueSecondary": "float - total cost of the invoice in secondary currency",
"type": "integer",
"numerationType": "string - (P (business space) or N (device)",
"creditCardType": "integer",
"currencyId": "integer - id of the primary currency",
"secondaryCurrencyId": "integer - id of the secondary currency",
"deletedAt": "integer - UTC unix timestamp",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Get invoices by property ¶
This endpoint will provide list of invoices for the property.
GET/properties/{propertyId}/invoices?page={page}&order_by=&order_direction={order_direction}&createdAtFrom={createdAtFrom}&createdAtTo={createdAtTo}&modifiedAtFrom={modifiedAtFrom}&modifiedAtTo={modifiedAtTo}
- propertyId
int
(required)Id of the existing property
- createdAtFrom
string
(optional)Starting date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- createdAtTo
string
(optional)Starting date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- modifiedAtFrom
string
(optional)Starting date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- modifiedAtTo
string
(optional)Starting date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 28,
"propertiesId": 95,
"reservationsId": 10124,
"canceledInvoicesId": 0,
"reservationsGroupsId": 0,
"number": 50,
"date": 1525954380,
"year": "2018",
"totalNights": 0,
"pricePerNight": 0,
"totalPrice": 0,
"vatRegistered": "Y",
"vatIncluded": "N",
"vatId": "HR12345678",
"vatRate": 13,
"vatAmount": 65,
"discountPercentage": 0,
"exchangeRate": 7.5,
"clientName": "",
"clientEmail": "",
"clientAddress": "",
"clientVatID": "",
"officeNumber": 0,
"deviceNumber": 1,
"jirCode": "some-invoice-jir-code",
"zkiCode": "some-invoice-zki-code",
"status": 3,
"paymentType": 1,
"paymentTypeValue": "Gotovina (Banknotes)",
"deliveryDate": 1525910400,
"dueDate": 1525910400,
"operatorsId": 1,
"operatorsLegalId": "11111111111",
"clientsId": 0,
"businessSpacesId": 7,
"notice": "",
"header": "Sesame Street 23, 23000 Zadar \n t: 0231833253 \n user@rentl.io, www.myproperty.com",
"footer": "Sesame Street 23, 23000 Zadar | t: 023833253 | user@rentl.io, www.myproperty.com",
"isInFiscalisation": "Y",
"fiscalisationStatus": 1,
"paymentStatus": 2,
"cancellationInvoiceId": 0,
"cashDeskLabel": "",
"businessSpacesLabel": "POS1",
"color": "e34c42",
"totalValue": 565,
"totalValueSecondary": 4237.5,
"type": 1,
"numerationType": "P",
"creditCardType": 0,
"currencyId": 1,
"secondaryCurrencyId": 3,
"deletedAt": 0,
"createdAt": 1525954426,
"modifiedAt": 0
}
],
"perPage": 30,
"total": 1
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"propertiesId": "integer",
"reservationsId": "integer",
"canceledInvoicesId": "integer",
"reservationsGroupsId": "integer",
"number": "integer",
"date": "integer - UTC unix timestamp",
"year": "string",
"totalNights": "integer",
"pricePerNight": "float",
"totalPrice": "float",
"vatRegistered": "string - (Y or N)",
"vatIncluded": "string - (Y or N)",
"vatId": "string - legal Id of the issuer",
"vatRate": "float",
"vatAmount": "float",
"discountPercentage": "float",
"exchangeRate": "float - rate used for conversions between primary and secondary currency",
"clientsId": "integer",
"clientName": "string",
"clientEmail": "string",
"clientAddress": "string",
"clientVatID": "string",
"officeNumber": "integer",
"deviceNumber": "integer",
"jirCode": "string",
"zkiCode": "string",
"status": "integer - status of the invoice (1 - draft, 2 - issued, 3 - fiscalised)",
"paymentType": "integer",
"paymentTypeValue": "string",
"deliveryDate": "integer - UTC unix timestamp",
"dueDate": "integer - UTC unix timestamp",
"operatorsId": "integer",
"operatorsLegalId": "string",
"businessSpacesId": "integer",
"notice": "string",
"header": "string",
"footer": "string",
"isInFiscalisation": "string - (Y or N)",
"fiscalisationStatus": "integer",
"paymentStatus": "integer",
"cancellationInvoiceId": "integer",
"cashDeskLabel": "string",
"businessSpacesLabel": "string",
"color": "string",
"totalValue": "float - total cost of the invoice",
"totalValueSecondary": "float - total cost of the invoice in secondary currency",
"type": "integer",
"numerationType": "string - (P (business space) or N (device)",
"creditCardType": "integer",
"currencyId": "integer - id of the primary currency",
"secondaryCurrencyId": "integer - id of the secondary currency",
"deletedAt": "integer - UTC unix timestamp",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Property ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Get invoices by reservation ¶
This endpoint will provide list of invoices for the specific reservation.
GET/reservations/{reservationsId}/invoices?page={page}&order_by=&order_direction={order_direction}&createdAtFrom={createdAtFrom}&createdAtTo={createdAtTo}&modifiedAtFrom={modifiedAtFrom}&modifiedAtTo={modifiedAtTo}
- reservationsId
int
(required)Id of the existing property
- createdAtFrom
string
(optional)Starting date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- createdAtTo
string
(optional)Starting date for createdAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- modifiedAtFrom
string
(optional)Starting date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- modifiedAtTo
string
(optional)Starting date for modifiedAt filter in either
YYYY-mm-ddThh:mm:ss
orYYYY-mm-dd
format. For this filter to work, both From and To parameters must be specified. If invalid, filter is ignored.- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 28,
"date": 1526039700,
"deliveryDate": 1525996800,
"dueDate": 1525996800,
"year": "2018",
"vatRegistered": "Y",
"vatIncluded": "N",
"vatId": "HR123456789",
"totalValue": 678,
"totalValueSecondary": 5085,
"status": {
"id": 3,
"name": "Fiscalised"
},
"createdAt": 1526039733,
"modifiedAt": 0,
"client": {
"name": "Lovro Predovan",
"email": "lovro@rentl.io",
"address": "France",
"vatId": "123123123"
}
}
],
"perPage": 30,
"total": 1
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique reservation ID",
"date": "float - nominal value for channel commission",
"deliveryDate": "integer - UTC unix timestamp",
"dueDate": "integer - UTC unix timestamp",
"year": "string",
"vatRegistered": "string - Can be Y or N. If VAT is not included it is added to totalCost. If vat is included it is calculated from totalCost",
"vatIncluded": "string - Can be Y or N. If VAT is not included it is added to totalCost. If vat is included it is calculated from totalCost",
"vatId": "string - Can be Y or N. If VAT is not included it is added to totalCost. If vat is included it is calculated from totalCost",
"totalValue": "string - Can be Y or N. If VAT is not included it is added to totalCost. If vat is included it is calculated from totalCost",
"totalValueSecondary": "string - Can be Y or N. If VAT is not included it is added to totalCost. If vat is included it is calculated from totalCost",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp",
"status": {
"type": "object",
"properties": {
"id": "integer - status id",
"name": "string - name of the status"
}
},
"client": {
"type": "object",
"properties": {
"name": "string",
"email": "string",
"address": "string",
"vatId": "string - legal id of the client"
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Reservation ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Get invoice details ¶
This endpoint will provide data about the invoice with its related taxes and items.
GET/invoices/{invoiceId}
- invoiceId
int
(required)Id of the existing invoice
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"id": 28,
"reservationsId": 10124,
"propertiesId": 95,
"date": 1525954380,
"deliveryDate": 1525910400,
"dueDate": 1525910400,
"year": "2018",
"vatRegistered": "Y",
"vatIncluded": "N",
"vatId": "HR1234567890",
"vatRate": 13,
"exchangeRate": 7.5,
"isInFiscalisation": "Y",
"numerationType": "P",
"totalValue": 565,
"totalValueSecondary": 4237.5,
"primaryCurrencyId": 1,
"secondaryCurrencyId": 3,
"status": 3,
"createdAt": 1525954426,
"modifiedAt": 0,
"items": [
{
"id": 4,
"description": "Accommodation in Apartment 1 (08.05. - 13.05.)",
"price": 750,
"quantity": 5,
"discountPercentage": 0,
"totalPrice": 4237.5,
"taxes": [
{
"label": "PDV",
"rate": 13
}
]
}
],
"taxes": [
{
"id": 4,
"label": "PDV",
"rate": 13,
"value": 65,
"valueSecondary": 487.5,
"baseValue": 500,
"baseValueSecondary": 3750
}
]
}
Schema
{
"type": "object",
"properties": {
"id": "integer",
"reservationsId": "integer",
"propertiesId": "integer",
"date": "integer - UTC unix timestamp",
"deliveryDate": "integer - UTC unix timestamp",
"dueDate": "integer - UTC unix timestamp",
"year": "string",
"vatRegistered": "string - (Y or N)",
"vatIncluded": "string - (Y or N)",
"vatId": "string - legal Id of the issuer",
"vatRate": "float",
"exchangeRate": "float - rate used for conversions between primary and secondary currency",
"isInFiscalisation": "string - (Y or N)",
"numerationType": "string - (P (business space) or N (device)",
"totalValue": "float - total cost of the invoice",
"totalValueSecondary": "float - total cost of the invoice in secondary currency",
"primaryCurrencyId": "integer - id of the primary currency",
"secondaryCurrencyId": "integer - id of the secondary currency",
"status": "integer - status of the invoice (1 - draft, 2 - issued, 3 - fiscalised)",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp",
"items": {
"type": "array - invoice items",
"items": {
"type": "object",
"properties": {
"id": "integer",
"description": "string - description of the item",
"price": "float - price for one unit of the item",
"quantity": "float - number of units of the item",
"discountPercentage": "float",
"totalPrice": "float - total price of invoice item",
"taxes": {
"type": "array - items tax",
"properties": {
"label": "string - tax label",
"rate": "float - rate (in %) for tax"
}
}
}
}
},
"taxes": {
"type": "array - invoice taxes",
"items": {
"type": "object",
"properties": {
"id": "integer",
"label": "string - tax label",
"rate": "float - rate (in %) for tax",
"value": "float - value of the tax",
"valueSecondary": "float - value of the tax in secondary currency",
"baseValue": "float - value of the base that we use to calculate tax value",
"baseValueSecondary": "float - value of the base that we use to calculate tax value for secondary currency"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Invoice ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Create Invoice Item for Reservation ¶
This endpoint will add invoice item to first existing draft invoice. If there is no draft invoice for this reservation new one will be created.
When adding invoice items to invoices the default option is vatIncluded = N. This means that Rentlio will add all taxes to the amount you send us.
There are two scenarios: if you’re sending NET amounts for invoice items specify that vatIncluded = N. In this case, when you send an invoice item called “coffee” with value 10 and 25% tax we will display it as 10 + 25% = 12.50.
If you’re sending GROSS amounts for invoice items please specify that vatIncluded = Y. In this case the total amount will remain unchanged, but we will deduct taxes on invoices to display correct NET rates on invoices + taxes.
POST/reservations/{id}/invoices/items
- id
int
(required)Id for reservation draft invoice is handling
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
{
"description": "Coca cola 0.5L",
"discountPercent": 10,
"price": 9.88,
"vatIncluded": "N",
"quantity": 1,
"taxes": [
{
"label": "PDV",
"rate": 25
},
{
"label": "PNP",
"rate": 3
}
]
}
Schema
{
"type": "object",
"properties": {
"description": "string, required - Invoice item description",
"price": "float, required - invoice item single unit price",
"vatIncluded": "string (Y,N), optional - Default value is N. When Y tax is subtracted from price",
"quantity": "float, required - number of invoice items",
"discountPercent": "float [0-100] - invoice item discount",
"taxes": {
"type": "array, optional - maximum 2 taxes can be sent",
"items": {
"type": "object",
"properties": {
"label": "string, required - tax label. Important when using fiscalisation. PP and PNP labels will be fiscalised as consumption tax, all other labels will be fiscalised as Vat",
"rate": "float, required - number larger then 0 and lower or equal then 100"
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"id": 1,
"description": "Coca cola 0.5L",
"price": 10,
"quantity": 3,
"discountPercentage": 10,
"totalPrice": 29.7,
"taxes": [
{
"label": "PDV",
"rate": 25
},
{
"label": "PNP",
"rate": 3
}
]
}
Schema
{
"type": "object",
"properties": {
"id": "int - Invoice item unique identifier",
"description": "string - Invoice item description",
"price": "float- invoice item single unit price",
"quantity": "int - number of invoice items",
"discountPercentage": "float - invoice item discount",
"totalPrice": "float - invoice item total after discount and Vat",
"taxes": {
"type": "array - invoice item taxes",
"items": {
"type": "object",
"properties": {
"label": "string",
"rate": "float"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"quantity": "Validation error on field:quantity, type:int for rules:required()"
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "This property doesn't have exchange rate defined!"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Reservation ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Create Invoice Items for Reservation in bulk ¶
This endpoint can add multiple invoice items to the first existing draft invoice. If there is no draft invoice for this reservation new one will be created.
It behaves just the same as the endpoint for inserting single invoice item as explained in section for inserting single item.
POST/reservations/{id}/invoices/items/bulk
- id
int
(required)Id for reservation draft invoice is handling
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
[
{
"description": "Coca cola 0.5L",
"price": 9.88,
"quantity": 1,
"discountPercent": 10,
"vatIncluded": "N",
"taxes": [
{
"label": "PDV",
"rate": 25
},
{
"label": "PNP",
"rate": 3
}
]
},
{
"description": "Club sandwitch",
"price": 10,
"quantity": 3,
"discountPercent": 0,
"vatIncluded": "Y",
"taxes": [
{
"label": "PDV",
"rate": 25
}
]
}
]
Schema
{
"type": "array - invoice items",
"items": {
"type": "object",
"properties": {
"id": "int - Invoice item unique identifier",
"description": "string - Invoice item description",
"price": "float- invoice item single unit price",
"quantity": "int - number of invoice items",
"discountPercentage": "float - invoice item discount",
"totalPrice": "float - invoice item total after discount and Vat",
"taxes": {
"type": "array - invoice item taxes",
"items": {
"type": "object",
"properties": {
"label": "string",
"rate": "float"
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
[
{
"description": "Coca cola 0.5L",
"price": 9.88,
"quantity": 1,
"discountPercent": 10,
"vatIncluded": "N",
"taxes": [
{
"label": "PDV",
"rate": 25
},
{
"label": "PNP",
"rate": 3
}
]
},
{
"description": "Club sandwitch",
"price": 10,
"quantity": 3,
"discountPercent": 0,
"vatIncluded": "Y",
"taxes": [
{
"label": "PDV",
"rate": 25
}
]
}
]
Schema
{
"type": "array - invoice items",
"items": {
"type": "object",
"properties": {
"id": "int - Invoice item unique identifier",
"description": "string - Invoice item description",
"price": "float- invoice item single unit price",
"quantity": "int - number of invoice items",
"discountPercentage": "float - invoice item discount",
"totalPrice": "float - invoice item total after discount and Vat",
"taxes": {
"type": "array - invoice item taxes",
"items": {
"type": "object",
"properties": {
"label": "string",
"rate": "float"
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"quantity": "Validation error on field:quantity, type:int for rules:required()"
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "this property doesn't have exchange rate defined"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Reservation ID param missing"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Create Invoice Items with smart card in bulk ¶
This endpoint can add multiple invoice items to the first existing draft invoice for some smart card code. If there is no draft invoice for this smart card code on the reservation, the new one will be created.
It behaves almost the same as the endpoint for inserting bulk invoice items. The difference is that it defines the invoice by the guest on the reservation and not by reservation itself as previous two endpoints for creating invoice items.
With this endpoint, it’s possible to create separate invoices for every guest (bearer or additional guests) on the reservation with custom items. The requirement is that smart cards integration is enabled and that guest on the reservation has smart card assigned. Also please take note that this method only works if guest is currently checked-in in property and will not work after check-out has been made.
At one point there can be only one active smart card code in the property.
POST/smart-card/{propertiesId}/{code}/invoices/items/bulk
- propertiesId
integer
(required)ID for property guests is staying in.
- code
string
(required)Code of the smart card that is assigned to the guest on the reservation
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
[
{
"description": "Coca cola 0.5L",
"price": 9.88,
"quantity": 1,
"discountPercent": 10,
"vatIncluded": "N",
"taxes": [
{
"label": "PDV",
"rate": 25
},
{
"label": "PNP",
"rate": 3
}
]
},
{
"description": "Club sandwitch",
"price": 10,
"quantity": 3,
"discountPercent": 0,
"vatIncluded": "Y",
"taxes": [
{
"label": "PDV",
"rate": 25
}
]
}
]
Schema
{
"type": "array - invoice items",
"items": {
"type": "object",
"properties": {
"id": "int - Invoice item unique identifier",
"description": "string - Invoice item description",
"price": "float- invoice item single unit price",
"quantity": "int - number of invoice items",
"discountPercentage": "float - invoice item discount",
"totalPrice": "float - invoice item total after discount and Vat",
"taxes": {
"type": "array - invoice item taxes",
"items": {
"type": "object",
"properties": {
"label": "string",
"rate": "float"
}
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
[
{
"description": "Coca cola 0.5L",
"price": 9.88,
"quantity": 1,
"discountPercent": 10,
"vatIncluded": "N",
"taxes": [
{
"label": "PDV",
"rate": 25
},
{
"label": "PNP",
"rate": 3
}
]
},
{
"description": "Club sandwitch",
"price": 10,
"quantity": 3,
"discountPercent": 0,
"vatIncluded": "Y",
"taxes": [
{
"label": "PDV",
"rate": 25
}
]
}
]
Schema
{
"type": "array - invoice items",
"items": {
"type": "object",
"properties": {
"id": "int - Invoice item unique identifier",
"description": "string - Invoice item description",
"price": "float- invoice item single unit price",
"quantity": "int - number of invoice items",
"discountPercentage": "float - invoice item discount",
"totalPrice": "float - invoice item total after discount and Vat",
"taxes": {
"type": "array - invoice item taxes",
"items": {
"type": "object",
"properties": {
"label": "string",
"rate": "float"
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"code": 400,
"errors": {
"quantity": "Validation error on field:quantity, type:int for rules:required()"
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "this property doesn't have exchange rate defined"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Smart card code param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "No invoice items found in request"
}
404
Headers
Content-Type: application/json
Body
{
"message": "Guest with smart card not found on checked-in reservation"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Sales Channels ¶
Sales Channels section lists all endpoints that are responsible for handling everything related to Sales Channels.
Sales Channels ¶
List all sales channels for property.
GET/properties/{propertiesId}/sales-channels?page={page}&order_by={order_by}&order_direction={order_direction}
- propertiesId
integer
(required)ID of property for which to list sales channels for.
- order_by
string
(optional) Default: idChoices:
id
createdAt
Column to order by
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 96,
"name": "Private Web Site",
"provisionAmount": 0
},
{
"id": 189,
"name": "SomeBookingSite",
"provisionAmount": 11.55
}
],
"perPage": 30,
"total": 2
}
Schema
{
"type": "object",
"properties": {
"total": "integer",
"perPage": "integer",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique Sales Channel ID",
"name": "string - Sales Channel name",
"provisionAmount": "float - Sales Channel provision amount"
}
}
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Rate Plans ¶
Rate plans section lists all endpoints that are responsible for handling everything related to rate plans and restrictions.
List All Rate Plans ¶
List all rate plans for property.
GET/properties/{propertiesId}/rates
- propertiesId
integer
(required)ID of property for which to list sales channels for.
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 0,
"name": "StandardRate",
"type": {
"id": 1,
"name": "Manual"
},
"pricingType": {
"id": 1,
"name": "Per day"
},
"unitTypes": [
{
"id": 40,
"name": "Sea View Apartments"
},
{
"id": 41,
"name": "Double bed rooms"
}
]
},
{
"id": 1,
"name": "New Rate",
"type": {
"id": 1,
"name": "Manual"
},
"pricingType": {
"id": 1,
"name": "Per day"
},
"unitTypes": [
{
"id": 41,
"name": "Double bed rooms"
}
]
},
{
"id": 2,
"name": "Standard plus 10",
"type": {
"id": 2,
"name": "Automatic"
},
"parentRateId": 0,
"pricingType": {
"id": 2,
"name": "Per occupancy"
},
"derivationType": {
"id": 2,
"name": "Percent"
},
"derivationValue": 10,
"unitTypes": [
{
"id": 40,
"name": "Sea View Apartments"
},
{
"id": 41,
"name": "Double bed rooms"
}
]
},
{
"id": 3,
"name": "New plus 5 eur",
"type": {
"id": 2,
"name": "Automatic"
},
"parentRateId": 1,
"derivationType": {
"id": 1,
"name": "Nominal"
},
"derivationValue": 5,
"unitTypes": [
{
"id": 41,
"name": "Double bed rooms"
}
]
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - Unique ID",
"name": "string - rate name",
"type": {
"type": "object",
"properties": {
"id": "integer - rate type ID",
"name": "string - rate type name"
}
},
"pricingTypes": {
"type": "object",
"properties": {
"id": "integer - rate pricing type ID",
"name": "string - rate pricing type name"
}
},
"unitTypes": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - Unique unit type ID",
"name": "string - unit type name"
}
}
}
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List prices and restrictions for unit type rate ¶
Get a list of prices and restrictions for rate on unit type within given time period. Maximum allowed time period span is 2 years.
GET/unit-types/{id}/rates/{ratesId}?dateFrom={dateFrom}&dateTo={dateTo}
- id
int
(required)id for unit type
- ratesId
int
(required)Id for rate to list prices and restrictions for (use
0
for standard rate)- dateFrom
string
(required)start date in
YYYY-mm-dd
format. Maximum time distance between dateFrom and dateTo is 2 years.- dateTo
string
(required)end date in
YYYY-mm-dd
format. Maximum time distance between dateFrom and dateTo is 2 years.
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"date": "2019-05-20",
"price": 60,
"minStay": 2,
"maxStay": 5,
"minStayArrival": 3,
"maxStayArrival": 6,
"noCheckOut": true,
"occupancyPrices": [
{
"occupancy": 1,
"price": 50,
"derivationAmount": -10,
"derivationType": {
"id": "N",
"name": "Nominal"
}
},
{
"occupancy": 2,
"price": 60,
"derivationAmount": 0,
"derivationType": {
"id": "N",
"name": "Nominal"
}
},
{
"occupancy": 3,
"price": 66,
"derivationAmount": 20,
"derivationType": {
"id": "P",
"name": "Percentage"
}
}
]
},
{
"date": "2019-05-21",
"price": 60,
"minStay": 2,
"maxStay": 5,
"minStayArrival": 3,
"maxStayArrival": 6,
"noCheckOut": true,
"occupancyPrices": [
{
"occupancy": 1,
"price": 50,
"derivationAmount": -10,
"derivationType": {
"id": "N",
"name": "Nominal"
}
},
{
"occupancy": 2,
"price": 60,
"derivationAmount": 0,
"derivationType": {
"id": "N",
"name": "Nominal"
}
},
{
"occupancy": 3,
"price": 66,
"derivationAmount": 20,
"derivationType": {
"id": "P",
"name": "Percentage"
}
}
]
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"date": "string - UTC date in format yyyy-mm-dd that price and restrictions are applied on",
"price": "float - rate price",
"minStay": "integer - minimum stay restriction",
"maxStay": "integer - maximum stay restriction",
"minStayArrival": "integer - minimum stay arrival restriction",
"maxStayArrival": "integer - maximum stay arrival restriction",
"noCheckIn": "boolean - check in restriction",
"noCheckOut": "boolean - check out restriction",
"occupancyPrices": {
"type": "array",
"description": "these values are only returned for Per Occupancy rate",
"items": {
"type": "object",
"properties": {
"occupancy": "integer - number of people for which the price is applicable",
"price": "float - price for occupancy",
"derivationAmount": "float - amount by which base price is changed for this occupancy - calculation depends on derivationType",
"derivationType": {
"type": "object",
"properties": {
"id": "string - enum 'P', 'N' - can be either percentage or nominal, depending of this type occupancy price is modified by derivationAmount from base price",
"name": "string - enum Percentage, Nominal"
}
}
}
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "Unit Type ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Rates ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "DateFrom and dateTo params are required"
}
400
Headers
Content-Type: application/json
Body
{
"message": "dateFrom must be before dateTo"
}
400
Headers
Content-Type: application/json
Body
{
"message": "dateTo must be within 2 years range of dateFrom"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
404
Headers
Content-Type: application/json
Body
{
"message": "Rate not found"
}
Update Rate Plan ¶
Update rate plan on unit type.
Updating both price and restrictions is allowed on manual rate plans.
Prices on automatic rates cannot be updated. Doing so will result in an error response.
While mirrored restrictions on automatic rates cannot be directly updated. It's done via parent rate automatically
Limitations:
Only today and future values can be updated.
Restrictions and prices for up to 365 can be updated in single api call.
Per occupancy updates
All occupancy prices are derived from base price. That means that you cannot directly set occupancy price. Instead you need to send for each occupancy it's derivation amount and type (percentage, nominal).
Percentage derivation example: occupancyPrice = basePrice + basePrice * (1 + amount/100)
Nominal derivation example: occupancyPrice = basePrice + amount
If derivation causes price to drop below zero, we save the price as 0.
Mirrored occupancy values on automatic rates cannot be directly updated. It's done via parent rate automatically
POST/unit-types/{unitTypesId}/rates-restrictions/{ratePlansId}
- unitTypesId
integer
(required)ID of unit type on which to update the rate plan on
- ratePlansId
integer
(required)ID of rate plan to update
- Per Day
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
{
"days": [
{
"date": "2017-08-10",
"price": 75,
"minStay": 2,
"maxStay": 8,
"minStayArrival": 3,
"maxStayArrival": 5,
"minAdvanceReservation": 48,
"maxAdvanceReservation": 172,
"noCheckIn": true,
"noCheckOut": true,
"closed": true
},
{
"date": "2017-08-11",
"minStay": 5
},
{
"date": "2017-08-25",
"price": 120
},
{
"date": "2017-08-26",
"price": 120
},
{
"date": "2017-11-01",
"maxStay": 8
},
{
"date": "2017-11-02",
"noCheckOut": true
}
]
}
Schema
{
"type": "object",
"properties": {
"days": {
"type": "array, required - minimum 1, max 365 updates",
"items": {
"type": "object",
"properties": {
"date": "string, required - ISO format of a day that is updated. Please read limitations on dates that can be updated.",
"price": "float, optional - on what rate is your unit type rented",
"minStay": "integer, optional - a Minimum length of stay restriction limits availability by specifying a number of nights that must be booked for stays, including the restriction date in any part of the stay date range.",
"maxStay": "integer, optional - a Maximum length of stay restriction limits availability by specifying a number of nights that must be booked for stays, including the restriction date in any part of the stay date range.",
"minStayArrival": "integer, optional - Minimum stay arrival restriction",
"maxStayArrival": "integer, optional - Maximum stay arrival restriction",
"minAdvanceReservation": "integer, optional - The minimum number of days and/or hours that guests must book in advance (before the planned check-in date).",
"maxAdvanceReservation": "integer, optional - The maximum number of days and/or hours that guests must book in advance (before the planned check-in date).",
"noCheckIn": "boolean, optional - No checkin restriction",
"noCheckOut": "boolean, optional - No checkout restriction",
"closed": "boolean, optional - Specifies whether the room is closed (not bookable) on the specified date, for the specified rate."
}
}
}
}
}
- Per Occupancy
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
Body
{
"days": [
{
"date": "2021-05-20",
"price": 75,
"minStay": 2,
"maxStay": 8,
"minStayArrival": 3,
"maxStayArrival": 5,
"minAdvanceReservation": 48,
"maxAdvanceReservation": 172,
"noCheckIn": true,
"noCheckOut": true,
"closed": true,
"occupancyValues": [
{
"occupancy": 2,
"amount": -10,
"type": "N"
},
{
"occupancy": 4,
"amount": 10,
"type": "P"
}
]
},
{
"date": "2021-05-21",
"price": 75,
"minStay": 2,
"maxStay": 8,
"minStayArrival": 3,
"maxStayArrival": 5,
"minAdvanceReservation": 48,
"maxAdvanceReservation": 172,
"noCheckIn": true,
"noCheckOut": true,
"closed": true,
"occupancyValues": [
{
"occupancy": 2,
"amount": -10,
"type": "N"
},
{
"occupancy": 4,
"amount": 10,
"type": "P"
}
]
}
]
}
Schema
{
"type": "object",
"properties": {
"days": {
"type": "array, required - minimum 1, max 365 updates",
"items": {
"type": "object",
"properties": {
"date": "string, required - ISO format of a day that is updated. Please read limitations on dates that can be updated.",
"price": "float, optional - on what rate is your unit type rented",
"minStay": "integer, optional - a Minimum length of stay restriction limits availability by specifying a number of nights that must be booked for stays, including the restriction date in any part of the stay date range.",
"maxStay": "integer, optional - a Maximum length of stay restriction limits availability by specifying a number of nights that must be booked for stays, including the restriction date in any part of the stay date range.",
"minStayArrival": "integer, optional - Minimum stay arrival restriction",
"maxStayArrival": "integer, optional - Maximum stay arrival restriction",
"minAdvanceReservation": "integer, optional - The minimum number of days and/or hours that guests must book in advance (before the planned check-in date).",
"maxAdvanceReservation": "integer, optional - The maximum number of days and/or hours that guests must book in advance (before the planned check-in date).",
"noCheckIn": "boolean, optional - No checkin restriction",
"noCheckOut": "boolean, optional - No checkout restriction",
"closed": "boolean, optional - Specifies whether the room is closed (not bookable) on the specified date, for the specified rate."
}
}
}
}
}
200
Headers
Content-Type: application/json
Body
{
"Updated days": 6
}
Schema
{
"type": "object",
"properties": {
"Updated Days": "integer - total number of updated days"
}
}
400
Headers
Content-Type: application/json
Body
{
"message": "UnitType ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Rate ID param missing"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Rate Plan does not exist on this unit type"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Error updating values to OTA Channels."
}
400
Headers
Content-Type: application/json
Body
{
"message": "Error updating values"
}
400
Headers
Content-Type: application/json
Body
{
"message": "Cannot directly update rate with mirrored restrictions"
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Webhooks ¶
Webhooks section lists all endpoints that are responsible for handling everything related to Webhooks. Use webhooks to be notified about events that happen in a your Rentlio account.
List All Webhooks ¶
List all webhooks for a user.
GET/webhooks?page={page}&order_by={order_by}&order_direction={order_direction}
- page
string
(optional)Results page number
- order_direction
string
(optional) Default: ASCChoices:
ASC
DESC
Results ordering
- order_by
string
(optional) Default: idChoices:
id
createdAt
modifiedAt
Column to order by
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
{
"data": [
{
"id": 1,
"url": "https://mywebhook-hanlder.com/handle-webhook",
"token": "someToken",
"numberOfFailures": 0,
"createdAt": 1621412619,
"status": "active"
},
{
"id": 2,
"url": "https://nonexistent-url.com/404",
"token": "",
"numberOfFailures": 50,
"createdAt": 1621414155,
"status": "suspended"
}
],
"perPage": 30,
"total": 2
}
Schema
{
"type": "object",
"properties": {
"total": "integer - total number of items",
"perPage": "integer - how many items is returned in single page",
"data": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "string",
"url": "string",
"token": "string",
"numberOfFailures": "integer",
"createdAt": "integer - UTC unix timestamp",
"modifiedAt": "integer - UTC unix timestamp",
"status": "string - (active | suspended)"
}
}
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
Enums ¶
Enums are list of objects used inside other resources, for example reservations statuses. Enum values will be used in other endpoints as values for some fields and that field values will be validated by enum members.
List All Services Payment Types ¶
This endpoint will list all payment types available for use within service
GET/enums/services/payment-types
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 0,
"name": "None"
},
{
"id": 1,
"name": "Per Night"
},
{
"id": 2,
"name": "Per Person"
},
{
"id": 3,
"name": "Per Adult"
},
{
"id": 4,
"name": "Per Child Under 12"
},
{
"id": 5,
"name": "Per Child Above 12"
},
{
"id": 6,
"name": "Per Child Per Night"
},
{
"id": 7,
"name": "Fixed"
},
{
"id": 8,
"name": "Percentage"
},
{
"id": 9,
"name": "Not Applicable"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Reservation Statuses ¶
These are all statuses reservation can be in.
GET/enums/reservations/statuses
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Confirmed"
},
{
"id": 2,
"name": "Waiting for Approval"
},
{
"id": 3,
"name": "Refused"
},
{
"id": 4,
"name": "Accepted"
},
{
"id": 5,
"name": "Cancelled"
},
{
"id": 6,
"name": "Deleted with penalty"
},
{
"id": 7,
"name": "Option"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Currencies ¶
Rentlio supports many currencies. For complete list (118 items), call this endpoint.
GET/enums/currencies
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"symbol": "€",
"code": "EUR",
"name": "Euro"
},
{
"id": 2,
"symbol": "$",
"code": "USD",
"name": "US Dollar"
},
{
"id": 3,
"symbol": "kn",
"code": "HRK",
"name": "Croatian Kuna"
},
{
"id": 4,
"symbol": "د.إ.",
"code": "AED",
"name": "United Arab Emirates Dirham"
},
{
"id": 5,
"symbol": "؋",
"code": "AFN",
"name": "Afghan Afghani"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"symbol": "string",
"code": "string",
"name": "string"
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Document Types ¶
This endpoint returns all document types an guest can be checked in.
GET/enums/guests/document-types
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Border crossing pass (foreign)"
},
{
"id": 2,
"name": "Travel documents for refugees issued by RH"
},
{
"id": 3,
"name": "Other"
},
{
"id": 4,
"name": "Sailor's booklet (Croatian)"
},
{
"id": 5,
"name": "Children's passport (foreign)"
},
{
"id": 6,
"name": "Official passport (Croatian)"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Arrival Arrangements ¶
This endpoint returns all arrival arrangements supported for a guest
GET/enums/guests/arrival-arrangements
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Personal"
},
{
"id": 2,
"name": "Agency (group)"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Tourist Tax Categories ¶
This endpoint returns all tourist tax categories
GET/enums/guests/tax-categories
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "N - Tourist staying in a property"
},
{
"id": 2,
"name": "N - Tourist using charter services"
},
{
"id": 3,
"name": "J - Children: between 12 and 18 years"
},
{
"id": 4,
"name": "N - Persons up to 29 years: members of international youth association"
},
{
"id": 5,
"name": "J - Children between 12 and 18 years : charter"
},
{
"id": 6,
"name": "A - Children: up to 12 years"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Provided Service types ¶
This endpoint returns all provided service types.
GET/enums/guests/provided-services-types
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Accommodation"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer",
"name": "string",
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Invoice Types ¶
This endpoint returns all provided invoice types.
GET/enums/invoices/types
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Invoice"
},
{
"id": 2,
"name": "Proforma"
},
{
"id": 3,
"name": "Cancellation"
},
{
"id": 4,
"name": "Offer"
},
{
"id": 5,
"name": "Deposit"
},
{
"id": 6,
"name": "Proforma Deposit"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id'": "integer - unique invoice type ID",
"name": "string - human readable invoice type name"
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Countries ¶
This endpoint returns all provided countries.
GET/enums/countries
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"code": "US",
"name": "United States"
},
{
"id": 2,
"code": "CA",
"name": "Canada"
},
{
"id": 3,
"code": "AF",
"name": "Afghanistan"
},
{
"id": 4,
"code": "AL",
"name": "Albania"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique ID",
"code": "string - country code",
"name": "string - country name"
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Rate Types ¶
This endpoint returns all rate plan types.
GET/enums/rate-plans/types
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Manual"
},
{
"id": 2,
"name": "Automatic"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique ID",
"name": "string - rate type name"
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Rate Derivation Types ¶
This endpoint returns all rate plan derivation types. Derivation is a way how automatic rates are calculated using its base rate data.
GET/enums/rate-plans/derivation-types
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Nominal"
},
{
"id": 2,
"name": "Percent"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique ID",
"name": "string - rate derivation type name"
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}
List All Rate Pricing Types ¶
This endpoint returns all rate plan pricing types. Pricing type is used to determine how can rate prices be read or updated.
GET/enums/rate-plans/pricing-types
Headers
Content-Type: application/json
ApiKey: 32eb16dc070a41d5c5b58d9d3d725be3
200
Headers
Content-Type: application/json
Body
[
{
"id": 1,
"name": "Per day"
},
{
"id": 2,
"name": "Per occupancy"
}
]
Schema
{
"type": "array",
"items": {
"type": "object",
"properties": {
"id": "integer - unique ID",
"name": "string - rate pricing type name"
}
}
}
403
Headers
Content-Type: application/json
Body
{
"message": "Invalid authentication credentials"
}