Introduction
Welcome to the Lodgable API Documentation. You can use our API to get started developing Lodgable API endpoints, which will provide you with everything you need to integrate with Lodgable for property distribution or to enhance your users' management functionality.
We have provided AngularJS request and response examples. You can view code examples in the dark area to the right.
Quick Start
To begin developing your integration you will want to have access to our sandbox environment to provide as close an experience to production as possible during your development cycle. From here you can create and activate properties without the worry of affecting real channels with changes. We can even generate fake bookings for you to test against
1. Sandbox Account
Reach out to Lodgable for a sandbox account. Send an email over to our business development team to get things started. Provide us with an email address you would like to use for the sandbox account. We will set it up and send you a password
2. Company Questionnaire
Fill out our company questionnaire
3. API Terms of Use
Sign and send over the API Terms of Use to our business development team
4. Development
Setup your sandbox account
Sign in to your sandbox account and run through the new account setup checklist to prime the account for development (you can use test data for this setup, such as test credit cards,ex: 4111111111111111)
Make an API call
Try making your first API call
Create a property
Create a property via the API
Activate the property
Activate a property via the API
Setup rates and availability maintenance
Setup your system to propagate property information changes (especially rates and availability)
Pull reservations
Periodically pull reservations via the API
Pull reservation credit card information (optional)
Periodically pull reservation credit card information via the API
5. Get Certified
After you are certified we will activate your OAuth client account on production. This will allow you to obtain user permission to access their account information on Lodgable
6. Get CC info (optional)
Provide attestation of PCI compliance
Send your attestation of PCI / DSS compliance over to our business development team
Common Questions
Is Lodgable capable of processing regular updates with the API?
Yes, when you send listing information to Lodgable, events are fired to distribute the changes to the channels. When bookings are received, webhooks are fired to distribute them to the PMS. You can pull our API endpoints for updates but webhooks are recommended.
Can we automatically build and publish new listings to channels using your API?
Yes, when our API endpoints are implemented correctly you can create and update listings whenever you push new content.
Is your system able to only publish my listings to selected channels?
Yes, we will just need to know which channels to exclude for each of your customers. Currently this must be done from within the Lodgable platform. We have plans to make this available in the API in the future.
Is your system able to pause listings in channels automatically when our API alerts you to do this?
Yes, marking a listing as deactivate or activate in Lodgable will unpublish the listing from all channels. This can be triggered via the API.
Is your system able to reactivate listings in channels automatically when our API alerts you to this?
No, currently you must request this from the Lodgable platform. We may make this functionality available in the future.
Is your system capable of supporting real-time or nearly real-time rate and availability updates?
Yes, we use webhooks to keep calendaring in near real time. However, the PMS can cause delays if their API doesn’t push updates when they change. Can you pass credit card credentials to my merchant processor when the channel requires my hosts to charge the guests? Yes, however you must be PCI DSS compliant and provide a valid attestation of compliance. We will also charge a $150 monthly fee to monitor and validate your continued compliance, paid to our security partner.
Do you support installment based payments?
Sometimes. When the channel is merchant of record a 100% payment is required. When the host is merchant on record installments can be made.
Are your rates based on nightly rates or on the entire length of stay?
We accept net nightly rates and then offer length of stay discounts as an added option.
How do you apply discounts using nightly rates?
Discounts are calculated based on the length of stay and discount period.
Do you support extra guest fees?
Yes, per guest over a standard guest count.
Are we able to send you rental license numbers via API and you are automatically providing those to channels?
Yes, we can display rental licenses in the property description. Not all channels have a specific field that we can map too. Are you able to pass through to us, via API, the external channel listing IDs, URLs, statuses, and errors? Our API does not currently support sharing the external ID, URL, status or listing errors. This is something that we may be adding in the future.
Can you send guest reviews from all or any of the channels to us via API?
No, this information is rarely provided to us by the channels and we don’t support it in our API.
Where a channel has a “messenger” functionality, are you to share those messages with us via API?
No, while some channels make this available to us we currently do not provide a proxy message API.
Are you able to provide info about the page ranking, page views, or other channel metrics?
No, this information is rarely shared with us by the channel and we do not offer a service to gather and export this information to you via API.
Can I push my listings to a single account or multiple accounts?
We can structure this however you would like. Typically with other PMS companies, each customer has their own account but we could do a master account.
How are currencies handled in Lodgable?
We support one currency per account.
What kind of customer support does Lodgable offer?
We have chat, phone, and email support. You will also get a dedicated account manager. Typical response time is 5 to 30 minutes during local business times for chat.
How long does it take to publish a listing for all the sales channels?
It depends on the channel and how responsive the host is. Most listing are published within 24 to 48 hours. Some channels accept the listings within minutes. Some have a 1 week to 2 week approval process.
How do payments work with Lodgable?
When the channel is merchant on record, they will issue a payout. Depending on the channel, Lodgable may act as a limited payment agent to facilitate the distribution of funds. When the host is merchant of record, the channel will issue credit card details to Lodgable and it will be populated inside each reservation. If you wish to accept payments in your own system, please reference the question above about PCI DSS compliance.
Authentication
Single account
// To authorize in angular use:
$http.post(
"https://app.lodgable.com/oauth",
{
grant_type: "password",
username: "[email protected]", // Email address
password: "", // Your password here
client_id: "frontend"
}
);
// The client in the example is provided by Lodgable. On success this returns
{
"access_token": "827b82828a93397c55b87c136915d630bd2c21ee",
"expires_in": 3600,
"token_type": "Bearer",
"scope": null,
"refresh_token": "fa04eaea934945a6264eaac91ff868db561dc55c",
"host_id": 42,
"user_id": 72
}
OAuth2 serves as the Lodgable API authentication mechanism. Prior to requesting information from the Lodgable API, you will need to retrieve an access token to send with your requests to authenticate and authorize the requests. The simplest process for doing this is to use a public oAuth client
// In Angular a request would look like
$http.post(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-calendar-range/1",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
Lodgable OAuth Workflow
This process begins after you authorize the app in a browser and receive an authorization token. We
assume in this example that an oath client exists with the client_id=testclient and the
client_secret=testsecret with a redirect uri of: https://app.lodgable.com/oauth/receivecode
1. In the browser request a new token by navigating to:
https://app.lodgable.com/oauth/authorize?response_type=code&client_id=testclient&redirect_uri=https://app.lodgable.com/oauth/receivecode&state=999
An authorization code will be issued and can be used in the RESTFUL call below.
2. Get an access token
POST https://app.lodgable.com/oauth
Accept: application/json
Content-Type: application/json
{
"redirect_uri": "https://app.lodgable.com/oauth/receivecode",
"client_id": "testclient",
"client_secret": "testsecret",
"code": "9ff58ba2c09ba93c901b6f0e1e88fdbc0d446464",
"grant_type" : "authorization_code"
}
{
"access_token": "ae6a9aaea39facde2f89bc8d3bd8de0c93f422ff",
"expires_in": 3600,
"token_type": "Bearer",
"scope": null,
"refresh_token": "cfc45b2b17a8dcc5fbbaf9ecb0434d770b3c8c8a",
"host_id": 42,
"user_id": 72
}
3. Test a resource
GET https://app.lodgable.com/oauth/resource HTTP/1.1
Accept: application/json
Authorization: Bearer ae6a9aaea39facde2f89bc8d3bd8de0c93f422ff
{
"success": true,
"message": "You accessed my APIs!"
}
4. Get a new access token
POST https://app.lodgable.com/oauth HTTP/1.1
Accept: application/json
Content-Type: application/json
{
"grant_type": "refresh_token",
"refresh_token": "cfc45b2b17a8dcc5fbbaf9ecb0434d770b3c8c8a",
"client_id": "testclient",
"client_secret": "testsecret"
}
{
"access_token": "18c41d5d7c8aec0336306b9e046a8376d02787da",
"expires_in": 3600,
"token_type": "Bearer",
"scope": null,
"refresh_token": "edcaa0d6879ef850db59b51bbe18ef43e442d620",
"host_id": 42,
"user_id": 72
}
Multi account
If you are integrating for multiple accounts you will want to leverage OAuth2's ability to delegate access to keep the control with the user.
- Request access from a Lodgable user by sending your user to:
https://app.lodgable.com/oauth/authorize?response_type=code&client_id=<client_id>&redirect_uri=<redirect_uri>&state=<csrf_token>
Parameter | Required | Description |
---|---|---|
response_type | yes | What will be returned. Always use code here |
client_id | yes | Your assigned oAuth client ID |
redirect_uri | no | URI to redirect to after authorization has been approved/denied. Defaults to the redirect uri provided during client account setup if it was provided |
state | yes | CSRF token you provide and can use for validation |
- If access is approved, use the authorization code provided to the redirect uri to request an access token. The authorization code will be provided in the query string of the redirect uri
// To obtain an access token in angular use:
$http.post(
"https://app.lodgable.com/oauth",
{
grant_type: "authorization_code",
client_id: "<client_id>",
client_secret: "<client_secret>",
code: "<authorization code>",
redirect_uri: "<redirect_uri>"
}
);
// On success this returns
{
"access_token": "94807c3fcdad85fa1aa3ec8202a875630d7e1261",
"expires_in": 3600,
"token_type": "Bearer",
"scope": null,
"refresh_token": "1f0d490be73ce3893b0ca4306173a5874bac43c6",
"host_id": 42,
"user_id": 72
}
POST https://app.lodgable.com/oauth
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
redirect_uri | yes | null | string | Your redirect URI |
client_id | yes | null | string | Your sandbox client id |
client_secret | yes | null | string | Your sandbox client secret |
code | yes | null | string | This is the authorization code you received in the query string |
grant_type | yes | null | string | Use "authorization_code" in this case |
- Store the access token and refresh token for use. By default access tokens are good for one hour
Dictionary Data
Countries
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/country",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/country?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/country"
},
"last": {
"href": "https://app.lodgable.com/api/v2/country?page=1"
}
},
"_embedded": {
"country": [
{
"isoAlpha3": "AND",
"isoNumeric": 20,
"fipsCode": "AN",
"name": "Andorra",
"capital": "Andorra la Vella",
"areaInSqKm": 468,
"population": 84000,
"continent": "EU",
"tld": ".ad",
"currency": "EUR",
"currencyName": "Euro",
"Phone": "376",
"postalCodeFormat": "AD###",
"postalCodeRegex": "^(?:AD)*(d{3})$",
"languages": "ca",
"neighbours": null,
"equivalentFipsCode": null,
"geonameId": 3041565,
"id": "AD",
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/country/AD"
}
}
}
]
},
"page_count": 1,
"page_size": 300,
"total_items": 252,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/country/AU",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"isoAlpha3": "AUS",
"isoNumeric": 36,
"fipsCode": "AS",
"name": "Australia",
"capital": "Canberra",
"areaInSqKm": 7686850,
"population": 21515754,
"continent": "OC",
"tld": ".au",
"currency": "AUD",
"currencyName": "Dollar",
"Phone": "61",
"postalCodeFormat": "####",
"postalCodeRegex": "^(d{4})$",
"languages": "en-AU",
"neighbours": null,
"equivalentFipsCode": null,
"geonameId": 2077456,
"id": "AU",
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/country/AU"
}
}
}
Provides a list of all countries that can be associated with a property and profile
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/country
GET /api/v2/country/:id
Currencies
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/currency",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/currency?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/currency"
},
"last": {
"href": "https://app.lodgable.com/api/v2/currency?page=1"
}
},
"_embedded": {
"currency": [
{
"name": "Australian Dollar",
"code": "AUD",
"before": "$",
"after": null,
"zero": "$0.00",
"places": 2,
"thousands": ",",
"decimals": ".",
"negative": "()",
"escape": false,
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/currency/1"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 25,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/currency/3",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Canadian Dollar",
"code": "CAD",
"before": "$",
"after": null,
"zero": "$0.00",
"places": 2,
"thousands": ",",
"decimals": ".",
"negative": "()",
"escape": false,
"id": 3,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/currency/3"
}
}
}
Provides a list of all currencies
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/currency
GET /api/v2/currency/:id
Languages
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/language",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/language?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/language"
},
"last": {
"href": "https://app.lodgable.com/api/v2/language?page=1"
}
},
"_embedded": {
"language": [
{
"name": "English",
"code": "en",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/language/1"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 11,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/language/2",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Spanish",
"code": "es",
"id": 2,
"propertyRule": {},
"bedroomDescription": {},
"propertyDescription": {},
"propertyRentalAgreement": {},
"propertyWelcome": {},
"guests": {},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/language/2"
}
}
}
Provides access to languages supported by Lodgable that can be used for description translations or to specify a user or guest's native language
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/language
GET /api/v2/language/:id
States & Territories
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/state",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/state?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/state"
},
"last": {
"href": "https://app.lodgable.com/api/v2/state?page=13"
},
"next": {
"href": "https://app.lodgable.com/api/v2/state?page=2"
}
},
"_embedded": {
"state": [
{
"code": "BI.17",
"name": "Makamba",
"geonameId": 422233,
"id": 300,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/state/300"
}
}
}
]
},
"page_count": 13,
"page_size": 300,
"total_items": 3870,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/state/4",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"code": "AD.02",
"name": "Canillo",
"geonameId": 3041203,
"id": 4,
"locationProperty": {},
"location": {},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/state/4"
}
}
}
Provides a list of all states associated with each country
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/state
GET /api/v2/state/:id
Time Zones
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/time-zone",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/time-zone?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/time-zone"
},
"last": {
"href": "https://app.lodgable.com/api/v2/time-zone?page=6"
},
"next": {
"href": "https://app.lodgable.com/api/v2/time-zone?page=2"
}
},
"_embedded": {
"time_zone": [
{
"zone": "America/Caracas",
"display": "(GMT-04:00) Caracas",
"id": 25,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/time-zone/25"
}
}
}
]
},
"page_count": 6,
"page_size": 25,
"total_items": 142,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/time-zone/6",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"zone": "America/Los_Angeles",
"display": "(GMT-08:00) Pacific Time (US & Canada)",
"id": 6,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/time-zone/6"
}
}
}
Provides a list of world time zones
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/time-zone
GET /api/v2/time-zone/:id
Property Static Data
Activation
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/activate-property-check/2340",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this on success:
{
"status": "Ok",
"results": {...},
"message": "Property can be activated"
}
// would return JSON structured like this on error:
{
"incompleteSteps": [
{
"name": "Description",
"url": "/properties/update_description/2340"
},
{
"name": "Bedroom Details",
"url": "/properties/update_bedrooms/2340"
},
{
"name": "Amenities",
"url": "/properties/update_amenities/2340"
},
{
"name": "Photos",
"url": "/properties/update_images/2340"
},
{
"name": "Rates & Availability",
"url": "/properties/update_baseRates/2340"
},
{
"name": "Fees & Taxes",
"url": "/properties/update_fees/2340"
},
{
"name": "Policies",
"url": "/properties/update_conditions/2340"
},
{
"name": "Address",
"url": "/properties/update_address/2340"
}
],
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Unprocessable Entity",
"status": 422,
"detail": "Property could not be activated"
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/lodgable/property/2340/activate",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this on success:
{
"id": 2340,
"name": "Whistler Two Bed Townhome steps to ski lifts and village! Best location!"
}
// would return JSON structured like this on error:
{
"validationMessages": {
"Property Description": "The property description is incomplete",
"Property Bedroom Details": "The bedroom details are incomplete",
"Property Amenities": "The property's amenities are incomplete",
"Property Photos": "The property's photos are incomplete",
"Property Rates & Availability": "The property's rates and availability are incomplete",
"Property Fees & Taxes": "The property's fees and taxes are incomplete",
"Property Policies": "The property's policies are incomplete",
"Property Address": "The property's address is incomplete"
},
"type": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"title": "Unprocessable Entity",
"status": 422,
"detail": "Could not activate the property"
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/lodgable/property/2340/deactivate",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this on success:
{
"id": 2340,
"name": "Whistler Two Bed Townhome steps to ski lifts and village! Best location!"
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-steps-remaining/2802",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this on success:
{
"numberOfStepsRemaining": 3,
"stepsRemaining": [
{
"name": "Bedroom Details",
"url": "/properties/update_bedrooms/2802",
"description": "The bedroom details are incomplete"
},
{
"name": "Amenities",
"url": "/properties/update_amenities/2802",
"description": "The property's amenities are incomplete"
},
{
"name": "Photos",
"url": "/properties/update_images/2802",
"description": "The property's photos are incomplete"
}
]
}
Provides property activation management
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/activate-property-check/:id
GET /api/lodgable/property/:id/activate
GET /api/lodgable/property/:id/deactivate
GET /api/v2/property-steps-remaining/:id
Minimum requirements for property activation in Lodgable are as follows (channels may have additional/varying requirements):
Property info - * Property name * Property type * Property owner * Floor number * Rent space * Living area * Occupancy - 1 person minimum * Bedrooms - if none, set to 0 * Full bathrooms - if none, set to 0 * Half bathrooms - if none, set to 0
Address - * Street address * City * State/District/Province * Zip code * Country
Description - * Property description - 400 characters minimum
Bedroom Details - * Bedrooms - 1 bed minimum
Amenities - * 1 amenity minimum
Photos - * 10 photos minimum
Rates and Availability - * Weekday nightly base rate - $10 minimum cost * Weekend nightly base rate - $10 minimum cost * Minimum night stay * Maximum night stay
Fees and Taxes - * Include/exclude taxes - must set
Policies - * Calendar lead time - default enabled, 1 day
Amenity List
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/amenity",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/amenity?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/amenity"
},
"last": {
"href": "https://app.lodgable.com/api/v2/amenity?page=15"
},
"next": {
"href": "https://app.lodgable.com/api/v2/amenity?page=2"
}
},
"_embedded": {
"amenity": [
{
"name": "Air Conditioning",
"haName": "AMENITIES_AIR_CONDITIONING",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/amenity/1"
}
}
}
]
},
"page_count": 15,
"page_size": 25,
"total_items": 355,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/amenity/1",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Air Conditioning",
"haName": "AMENITIES_AIR_CONDITIONING",
"id": 1,
"_embedded": {
"amenityType": {
"name": "Most Popular",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/amenity-type/1"
}
}
}
},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/amenity/1"
}
}
}
Provides a list of property amenities, these amenities do not change and may safely be cached, periodically we may add a new amenities so it is recommended to periodically pull for new records
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/amenity
GET /api/v2/amenity/:id
Associated Amenities
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-amenity",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-amenity?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-amenity"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-amenity?page=7"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-amenity?page=2"
}
},
"_embedded": {
"property_amenity": [
{
"id": 448,
"property": 1535,
"amenity": 205,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-amenity/448"
}
}
}
]
},
"page_count": 7,
"page_size": 25,
"total_items": 162,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-amenity/435",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"id": 435,
"property": 1535,
"amenity": 47,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-amenity/435"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-amenity",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"property": 1535,
"amenity": 4
}
}
);
// would return JSON structured like this:
{
"id": 3424,
"property": 1535,
"amenity": 4,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/lodgable/property-amenity/3424"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-amenity/3424",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Associates an amenity with a property
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-amenity
GET /api/v2/property-amenity/:id
POST /api/v2/property-amenity
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
property | yes | null | int | Property ID |
amenity | yes | null | int | Amenity type ID |
DELETE /api/v2/property-amenity/:id
Bed Types
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bed-type",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bed-type?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/bed-type"
},
"last": {
"href": "https://app.lodgable.com/api/v2/bed-type?page=1"
}
},
"_embedded": {
"bed_type": [
{
"name": "King",
"haName": "",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bed-type/1"
}
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 10,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bed-type/2",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Queen",
"haName": "",
"id": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bed-type/2"
}
}
}
Provides a list of property bed types associated with a bedroom
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/bed-type
GET /api/v2/bed-type/:id
Bedrooms
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bedroom",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/bedroom"
},
"last": {
"href": "https://app.lodgable.com/api/v2/bedroom?page=27"
},
"next": {
"href": "https://app.lodgable.com/api/v2/bedroom?page=2"
}
},
"_embedded": {
"bedroom": [
{
"name": "Bedroom 1",
"description": null,
"importId": null,
"id": 98,
"bedroomDescription": [
231
],
"bedroomBedType": [
66
],
"property": 1535,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom/98"
}
}
}
]
},
"page_count": 27,
"page_size": 25,
"total_items": 658,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bedroom/98",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Bedroom 1",
"description": null,
"importId": null,
"id": 98,
"bedroomDescription": [
231
],
"bedroomBedType": [
66
],
"property": 1535,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom/98"
}
}
}
Provides the ability to manage a host's properties bedrooms
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/bedroom
GET /api/v2/bedroom/:id
Bedroom Descriptions
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bedroom-description",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-description?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/bedroom-description"
},
"last": {
"href": "https://app.lodgable.com/api/v2/bedroom-description?page=9"
},
"next": {
"href": "https://app.lodgable.com/api/v2/bedroom-description?page=2"
}
},
"_embedded": {
"bedroom_description": [
{
"description": "asdf",
"id": 231,
"bedroom": 98,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-description/231"
}
}
}
]
},
"page_count": 9,
"page_size": 25,
"total_items": 216,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bedroom-description/313",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"description": "boom",
"id": 313,
"bedroom": 1015,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-description/313"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-description",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"bedroom": 134,
"language": 1,
"description": "sweet crib"
}
}
);
// would return JSON structured like this:
{
"description": "sweet crib",
"id": 577,
"bedroom": 134,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-description/577"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/bedroom-description/577",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"bedroom": 135,
"language": 2,
"description": "sweet crib room"
}
}
);
// would return JSON structured like this:
{
"description": "sweet crib room",
"id": 577,
"bedroom": 135,
"language": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-description/577"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/bedroom-description/577",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the ability to manage bedroom descriptions for properties
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/bedroom-description
GET /api/v2/bedroom-description/:id
POST /api/v2/bedroom-description
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
bedroom | yes | null | int | Bedroom ID |
language | yes | null | int | Language ID |
description | yes | null | string | Description message |
PATCH /api/v2/bedroom-description/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
bedroom | no | null | int | Bedroom ID |
language | no | null | int | Language ID |
description | no | null | string | Description message |
DELETE /api/v2/bedroom-description/:id
Cancellation Policies
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/cancellation-policy",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy"
},
"last": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy?page=4"
},
"next": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy?page=2"
}
},
"_embedded": {
"cancellation_policy": [
{
"withinDays": 7,
"amount": 0,
"active": true,
"id": 29,
"property": 1548,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy/29"
}
}
}
]
},
"page_count": 4,
"page_size": 25,
"total_items": 84,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/cancellation-policy/25",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"withinDays": 7,
"amount": 40,
"active": false,
"id": 25,
"property": 1535,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy/25"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/cancellation-policy",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"withinDays": 3,
"amount": 75,
"property": 1535
}
}
);
// would return JSON structured like this:
{
"withinDays": 3,
"amount": 75,
"active": 1,
"id": 555,
"property": 1535,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy/555"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/cancellation-policy/554",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"amount": 70,
"property": 1547
}
}
);
// would return JSON structured like this:
{
"withinDays": 3,
"amount": 70,
"active": true,
"id": 557,
"property": 1547,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/cancellation-policy/557"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/cancellation-policy/556",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the property cancellation policies
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/cancellation-policy
GET /api/v2/cancellation-policy/:id
POST /api/v2/cancellation-policy
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
withinDays | yes | null | int | Number of days before check in the policy will start to take effect |
amount | yes | null | int | Cancellation policy charge percentage |
property | yes | null | int | The associated property's ID. See the properties endpoint for more information |
PATCH /api/v2/cancellation-policy/:id
Updating a cancellation policy does not actually update the existing record. It will mark the current policy as inactive and create a new policy with the changes. This provides consistency for bookings using cancellation policies. If a cancellation policy in use by a reservation was updated it would invalidate the agreed upon cancellation policy at the time of the booking
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
withinDays | no | null | int | Number of days before check in the policy will start to take effect |
amount | no | null | int | Cancellation policy charge percentage |
property | no | null | int | The associated property's ID. See the properties endpoint for more information |
DELETE /api/v2/cancellation-policy/:id
It is important to note that deleting a cancellation policy effectively marks it as inactive. Since there are bookings that may be using the cancellation policy it cannot be outright deleted
Change Over Policies
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property/change-over",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/change-over?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property/change-over"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property/change-over?page=1"
}
},
"_embedded": {
"change_over": [
{
"checkInMonday": true,
"checkInTuesday": true,
"checkInWednesday": true,
"checkInThursday": true,
"checkInFriday": true,
"checkInSaturday": true,
"checkInSunday": true,
"checkOutMonday": true,
"checkOutTuesday": true,
"checkOutWednesday": true,
"checkOutThursday": true,
"checkOutFriday": true,
"checkOutSaturday": true,
"checkOutSunday": true,
"defaultCheckInDay": 3,
"id": 30,
"property": 1553,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/change-over/30"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 14,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property/change-over/8",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property/change-over",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"checkInMonday": true,
"checkInTuesday": true,
"checkInWednesday": true,
"checkInThursday": true,
"checkInFriday": true,
"checkInSaturday": true,
"checkInSunday": false,
"checkOutMonday": true,
"checkOutTuesday": false,
"checkOutWednesday": false,
"checkOutThursday": true,
"checkOutFriday": true,
"checkOutSaturday": false,
"checkOutSunday": false,
"defaultCheckInDay": null,
"property": 2032,
"propertyCalendarRanges": [],
}
}
);
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property/change-over/32",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"checkInMonday": false,
"checkInTuesday": false,
"property": 2032
}
}
);
// would return JSON structured like this:
{
"checkInMonday": false,
"checkInTuesday": false,
"checkInWednesday": true,
"checkInThursday": true,
"checkInFriday": true,
"checkInSaturday": true,
"checkInSunday": false,
"checkOutMonday": true,
"checkOutTuesday": false,
"checkOutWednesday": false,
"checkOutThursday": true,
"checkOutFriday": true,
"checkOutSaturday": false,
"checkOutSunday": false,
"defaultCheckInDay": 2,
"id": 32,
"property": 2032,
"propertyCalendarRanges": [],
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/change-over/32"
}
}
}
Provides management of change over day policies. When creating a policy, if a property is provided, the policy created will be the base policy for the property. If a property calendar range is provided, the policy will apply only to the range it is associated with.
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property/change-over
GET /api/v2/property/change-over/:id
POST /api/v2/property/change-over
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
checkInMonday | no | null | boolean | Monday check in allowed |
checkInTuesday | no | null | boolean | Tuesday check in allowed |
checkInWednesday | no | null | boolean | Wednesday check in allowed |
checkInThursday | no | null | boolean | Thursday check in allowed |
checkInFriday | no | null | boolean | Friday check in allowed |
checkInSaturday | no | null | boolean | Saturday check in allowed |
checkInSunday | no | null | boolean | Sunday check in allowed |
checkOutMonday | no | null | boolean | Monday check out allowed |
checkOutTuesday | no | null | boolean | Tuesday check out allowed |
checkOutWednesday | no | null | boolean | Wednesday check out allowed |
checkOutThursday | no | null | boolean | Thursday check out allowed |
checkOutFriday | no | null | boolean | Friday check out allowed |
checkOutSaturday | no | null | boolean | Saturday check out allowed |
checkOutSunday | no | null | boolean | Sunday check out allowed |
defaultCheckInDay | no | null | integer | Default check in day (0-6, 0 is Sunday) |
property | no | null | int | The associated property's ID. See the properties endpoint for more information |
propertyCalendarRange | no | null | int | The associated property calendar range's ID. See the calendar endpoint for more information. The ID will be from a range type calendar entry |
PATCH /api/v2/property/change-over/:change_over_id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
checkInMonday | no | null | boolean | Monday check in allowed |
checkInTuesday | no | null | boolean | Tuesday check in allowed |
checkInWednesday | no | null | boolean | Wednesday check in allowed |
checkInThursday | no | null | boolean | Thursday check in allowed |
checkInFriday | no | null | boolean | Friday check in allowed |
checkInSaturday | no | null | boolean | Saturday check in allowed |
checkInSunday | no | null | boolean | Sunday check in allowed |
checkOutMonday | no | null | boolean | Monday check out allowed |
checkOutTuesday | no | null | boolean | Tuesday check out allowed |
checkOutWednesday | no | null | boolean | Wednesday check out allowed |
checkOutThursday | no | null | boolean | Thursday check out allowed |
checkOutFriday | no | null | boolean | Friday check out allowed |
checkOutSaturday | no | null | boolean | Saturday check out allowed |
checkOutSunday | no | null | boolean | Sunday check out allowed |
defaultCheckInDay | no | null | integer | Default check in day (0-6, 0 is Sunday) |
DELETE /api/v2/property/change-over/:id
Check In/Out Times
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/check-in-out",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/check-in-out?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/check-in-out"
},
"last": {
"href": "https://app.lodgable.com/api/v2/check-in-out?page=3"
},
"next": {
"href": "https://app.lodgable.com/api/v2/check-in-out?page=2"
}
},
"_embedded": {
"check_in_out": [
{
"checkInFrom": 14,
"checkInTo": 17,
"checkOutUntil": 11,
"autoCheckInAfter": 12,
"createdAt": null,
"lastModifiedAt": null,
"id": 48,
"property": 1623,
"createdBy": null,
"lastModifiedBy": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/check-in-out/48"
}
}
}
]
},
"page_count": 3,
"page_size": 25,
"total_items": 66,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property/check-in-out/22",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property/check-in-out",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"checkInFrom": 14,
"checkInTo": 17,
"checkOutUntil": 11,
"property": 2032
}
}
);
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property/change-in-out/260",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"checkInFrom": 15,
"checkInTo": 18,
"property": 2032
}
}
);
// would return JSON structured like this:
{
"checkInFrom": 15,
"checkInTo": 18,
"checkOutUntil": 11,
"autoCheckInAfter": "12",
"createdAt": {
"date": "2018-06-08 18:52:55.024795",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2018-06-08 18:52:55.024831",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 260,
"property": 2032,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/check-in-out/260"
}
}
}
Provides the time of day a guest can check in and out for a property (24hr format)
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/check-in-out
GET /api/v2/check-in-out/:id
POST /api/v2/check-in-out
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
checkInFrom | no | null | int | Starting time a guest can check in |
checkInTo | no | null | int | Ending time a guest can check in |
checkOutUntil | no | null | int | Ending time a guest can check out |
property | yes | null | int | The associated property's ID. See the properties endpoint for more information |
PATCH /api/v2/check-in-out/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
checkInFrom | no | null | int | Starting time a guest can check in |
checkInTo | no | null | int | Ending time a guest can check in |
checkOutUntil | no | null | int | Ending time a guest can check out |
Description
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-description",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-description?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-description"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-description?page=6"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-description?page=2"
}
},
"_embedded": {
"property_description": [
{
"description": "great ocean view",
"createdAt": {
"date": "2017-03-27 22:34:29.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 38,
"property": 1548,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-description/38"
}
}
},
"page_count": 6,
"page_size": 25,
"total_items": 149,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-description/38",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"description": "great ocean view",
"createdAt": {
"date": "2017-03-27 22:34:29.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 38,
"property": 1548,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-description/38"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-description",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"property": 1557,
"language": 1,
"description": "api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description"
}
}
);
// would return JSON structured like this:
{
"description": "api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description",
"createdAt": {
"date": "2018-12-19 01:42:55.468898",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 362,
"property": 1557,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-description/362"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-description/362",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"language": 2,
"description": "api test description in another language, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description"
}
}
);
// would return JSON structured like this:
{
"description": "api test description in another language, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description, api test description",
"createdAt": {
"date": "2018-12-19 01:42:55.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 362,
"property": 1557,
"language": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-description/362"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-description/36",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the ability to manage the property description associated with an accounts properties
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-description
GET /api/v2/property-description/:id
POST /api/v2/property-description
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
property | yes | null | int | Property ID |
language | yes | null | int | Language ID |
description | yes | null | string | Description message |
PATCH /api/v2/property-description/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
property | no | null | int | Property ID |
language | no | null | int | Language ID |
description | no | null | string | Description message |
DELETE /api/v2/property-description/:id
Listing
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property?page=1"
}
},
"_embedded": {
"property": [
{
"name": "Split level 80's with charm",
"area": 445,
"bedroomCount": 1,
"fullBathroomCount": 0,
"halfBathroomCount": 1,
"address": "123 Street",
"city": "Pleasantville",
"postalCode": "63551",
"latitude": "40.2188914",
"longitude": "-92.5748523",
"minimumGuestCount": 1,
"standardGuestCount": 0,
"maximumGuestCount": 2,
"minimumNightStay": 1,
"minimumNotice": 2,
"cleaningTime": null,
"floor": 0,
"hasInstantBooking": true,
"leadTime": 0,
"lastModifiedAt": {
"date": "2018-05-31 16:26:27.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"createdAt": {
"date": "2017-10-10 02:34:12.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"featured": null,
"bedCount": 1,
"uid": "59dc31a40bf0b8-24412345",
"importId": null,
"leadTimeInDays": 3,
"id": 12345,
"changeOver": null,
"propertyDeposit": null,
"propertyCalendarBaseRate": 12345,
"propertyRule": [],
"cancellationPolicy": [
12345
],
"propertyFee": [],
"propertyTax": [],
"propertyRestriction": [],
"propertyAmenity": [
12345
],
"bedroom": [
12345
],
"propertyVideo": [],
"propertyStorageAssetImage": {
"0": {
"storageAsset": {
"url": "https://lodgable-images.s3.amazonaws.com/lodgableDefault5adfb3d9fe",
"thumbUrl": "https://lodgable-images.s3.amazonaws.com/lodgableThumb5ad3a3da45",
"mediumUrl": "https://lodgable-images.s3.amazonaws.com/lodgableMedium5ad3b3da87",
"metadata": {
"ContentType": "image/jpeg"
},
"id": 12345,
"propertyManager": null,
"originalUrl": "https://lodgable-images.s3.amazonaws.com/lodgable5ad3a7fac9",
"isOptimized": false,
"userProfile": {},
"propertyManagerStorageAsset": {},
"propertyStorageAssetImage": {},
"invoiceStorageAsset": null
}
}
},
"propertyDescription": [
12345
],
"propertyRentalAgreement": [],
"propertyWelcome": [],
"areaType": 1,
"state": "Missouri",
"propertyType": 12,
"rentalType": 1,
"propertyGroup": "My Rentals",
"propertyManager": 12345,
"user": 12345,
"status": {},
"location": null,
"createdBy": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/12345"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 1,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property/12345",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Split level 80's with charm",
"area": 322,
"bedroomCount": 1,
"fullBathroomCount": 0,
"halfBathroomCount": 1,
"address": "123 Street",
"city": "Pleasantville",
"postalCode": "63551",
"latitude": "40.2188914",
"longitude": "-92.5748523",
"minimumGuestCount": 1,
"standardGuestCount": 0,
"maximumGuestCount": 2,
"minimumNightStay": 1,
"minimumNotice": 2,
"cleaningTime": null,
"floor": 0,
"hasInstantBooking": true,
"leadTime": 0,
"lastModifiedAt": {
"date": "2018-05-30 19:23:40.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"createdAt": {
"date": "2017-10-10 02:34:12.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"featured": null,
"bedCount": 1,
"uid": "59dc31a40bf0b8-24412345",
"importId": null,
"leadTimeInDays": 3,
"id": 12345,
"changeOver": null,
"propertyDeposit": null,
"propertyCalendarBaseRate": 12345,
"propertyRule": [],
"cancellationPolicy": [
12345
],
"propertyFee": [],
"propertyTax": [],
"propertyRestriction": [],
"propertyAmenity": [
12345,
],
"bedroom": [
12345,
],
"propertyVideo": [],
"propertyStorageAssetImage": {
"0": {
"storageAsset": {
"url": "https://lodgable-images.s3.amazonaws.com/lodgableDefault5afb3d9fe",
"thumbUrl": "https://lodgable-images.s3.amazonaws.com/lodgableThumb5assdfa7fb3da45",
"mediumUrl": "https://lodgable-images.s3.amazonaws.com/lodgableMedium5aa7asdfsdffb3da87",
"metadata": {},
"id": 12345,
"propertyManager": null,
"originalUrl": "https://lodgable-images.s3.amazonaws.com/lodgable5adsadfsdfsada7fc9",
"isOptimized": false,
"userProfile": {},
"propertyManagerStorageAsset": {},
"propertyStorageAssetImage": {},
"invoiceStorageAsset": null
}
},
},
"propertyDescription": [],
"propertyRentalAgreement": [],
"propertyWelcome": [],
"areaType": 1,
"state": "Missouri",
"propertyType": 12,
"rentalType": 1,
"propertyGroup": "My Rentals",
"propertyManager": 12345,
"user": 12345,
"status": {},
"location": null,
"createdBy": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/12345"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"name": "Split level 80's with charm",
"area": 322,
"bedroomCount": 1,
"fullBathroomCount": 0,
"halfBathroomCount": 1,
"address": "123 Street",
"city": "Pleasantville",
"postalCode": "63551",
"minimumGuestCount": 1,
"standardGuestCount": 0,
"maximumGuestCount": 2,
"minimumNightStay": 1,
"minimumNotice": 2,
"cleaningTime": null,
"hasInstantBooking": true,
"leadTime": 0,
"status": 1,
"featured": null,
"esignatureLocation": null,
"leadTimeInDays": 3,
"areaType": 1,
"floor": 0,
"country": "US",
"state": "Missouri",
"propertyType": 12,
"rentalType": 1,
"propertyGroup": "My Rentals",
"timeZone": 3,
"bedCount": 1
}
}
);
// would return JSON structured like this:
{
"name": "Split level 80's with charm",
"area": 322,
"bedroomCount": 1,
"fullBathroomCount": 0,
"halfBathroomCount": 1,
"address": "123 Street",
"city": "Pleasantville",
"postalCode": "63551",
"latitude": "40.2188914",
"longitude": "-92.5748523",
"minimumGuestCount": 1,
"standardGuestCount": 0,
"maximumGuestCount": 2,
"minimumNightStay": 1,
"minimumNotice": 2,
"cleaningTime": null,
"floor": 0,
"hasInstantBooking": true,
"leadTime": 0,
"lastModifiedAt": {
"date": "2018-05-30 19:23:40.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"createdAt": {
"date": "2017-10-10 02:34:12.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"featured": null,
"bedCount": 1,
"uid": "59dc31a40bf0b8-24412345",
"importId": null,
"leadTimeInDays": 3,
"id": 12345,
"changeOver": null,
"propertyDeposit": null,
"propertyCalendarBaseRate": 12345,
"propertyRule": [],
"cancellationPolicy": [
12345
],
"propertyFee": [],
"propertyTax": [],
"propertyRestriction": [],
"propertyAmenity": [
12345,
],
"bedroom": [
12345,
],
"propertyVideo": [],
"propertyStorageAssetImage": {
"0": {
"storageAsset": {
"url": "https://lodgable-images.s3.amazonaws.com/lodgableDefault5afb3d9fe",
"thumbUrl": "https://lodgable-images.s3.amazonaws.com/lodgableThumb5assdfa7fb3da45",
"mediumUrl": "https://lodgable-images.s3.amazonaws.com/lodgableMedium5aa7asdfsdffb3da87",
"metadata": {},
"id": 12345,
"propertyManager": null,
"originalUrl": "https://lodgable-images.s3.amazonaws.com/lodgable5adsadfsdfsada7fc9",
"isOptimized": false,
"userProfile": {},
"propertyManagerStorageAsset": {},
"propertyStorageAssetImage": {},
"invoiceStorageAsset": null
}
},
},
"propertyDescription": [],
"propertyRentalAgreement": [],
"propertyWelcome": [],
"areaType": 1,
"state": "Missouri",
"propertyType": 12,
"rentalType": 1,
"propertyGroup": "My Rentals",
"propertyManager": 12345,
"user": 12345,
"status": {},
"location": null,
"createdBy": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/12345"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property/12345",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"name": "Split level 90's with charm",
"area": 323,
"bedroomCount": 2,
"fullBathroomCount": 1,
"halfBathroomCount": 2,
"minimumGuestCount": 2,
"standardGuestCount": 1,
"maximumGuestCount": 3
}
}
);
// would return JSON structured like this:
{
"name": "Split level 90's with charm",
"area": 323,
"bedroomCount": 2,
"fullBathroomCount": 1,
"halfBathroomCount": 2,
"address": "123 Street",
"city": "Pleasantville",
"postalCode": "63551",
"latitude": "40.2188914",
"longitude": "-92.5748523",
"minimumGuestCount": 2,
"standardGuestCount": 1,
"maximumGuestCount": 3,
"minimumNightStay": 1,
"minimumNotice": 2,
"cleaningTime": null,
"floor": 0,
"hasInstantBooking": true,
"leadTime": 0,
"lastModifiedAt": {
"date": "2018-05-30 19:23:40.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"createdAt": {
"date": "2017-10-10 02:34:12.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"featured": null,
"bedCount": 1,
"uid": "59dc31a40bf0b8-24412345",
"importId": null,
"leadTimeInDays": 3,
"id": 12345,
"changeOver": null,
"propertyDeposit": null,
"propertyCalendarBaseRate": 12345,,
"propertyRule": [],
"cancellationPolicy": [
12345
],
"propertyFee": [],
"propertyTax": [],
"propertyRestriction": [],
"propertyAmenity": [
12345,
],
"bedroom": [
12345,
],
"propertyVideo": [],
"propertyStorageAssetImage": {
"0": {
"storageAsset": {
"url": "https://lodgable-images.s3.amazonaws.com/lodgableDefault5afb3d9fe",
"thumbUrl": "https://lodgable-images.s3.amazonaws.com/lodgableThumb5assdfa7fb3da45",
"mediumUrl": "https://lodgable-images.s3.amazonaws.com/lodgableMedium5aa7asdfsdffb3da87",
"metadata": {},
"id": 12345,
"propertyManager": null,
"originalUrl": "https://lodgable-images.s3.amazonaws.com/lodgable5adsadfsdfsada7fc9",
"isOptimized": false,
"userProfile": {},
"propertyManagerStorageAsset": {},
"propertyStorageAssetImage": {},
"invoiceStorageAsset": null
}
},
},
"propertyDescription": [],
"propertyRentalAgreement": [],
"propertyWelcome": [],
"areaType": 1,
"state": "Missouri",
"propertyType": 12,
"rentalType": 1,
"propertyGroup": "My Rentals",
"propertyManager": 12345,
"user": 12345,
"status": {},
"location": null,
"createdBy": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/12345"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property/12345",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Manages all of a host's property records
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property
GET /api/v2/property/:id
POST /api/v2/property
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
name | yes | null | string | Property name |
area | yes | null | int | Property area |
bedroomCount | yes | null | int | Number of bedrooms |
fullbathroomCount | yes | null | int | Number of full bathrooms |
halfbathroomCount | no | null | int | Number of half bathrooms |
address | no | null | string | Property street address |
city | no | null | string | Property city |
postalCode | no | null | string | Property postal code |
latitude | no | null | float | Property latitude |
longitude | no | null | float | Property longitude |
minimumGuestCount | yes | null | int | Property minimum guest count |
standardGuestCount | yes | null | int | Property standard guest count |
maximumGuestCount | yes | null | int | Property maximum guest count |
mimimumNightStay | yes | null | int | Property minimum guest count |
cleaningTime | no | null | int | Property cleaning time |
hasInstantBooking | yes | null | boolean | Property instant booking receive status |
leadTime | yes | 1 | boolean | Property lead time set status |
status | no | 0 | boolean | Property activation status |
featured | no | null | string | Property featured date |
leadTimeInDays | no | 1 | int | Property lead time in days |
areaType | yes | null | int | Property area type ID |
floor | no | null | int | Property floor level ID |
country | no | null | int | Property country ID |
state | no | null | int | Property state ID |
propertyType | yes | null | int | Property type ID |
rentalType | yes | null | int | Property rental type ID |
propertyGroup | no | null | int | Property group ID |
timeZone | no | null | int | Property time zone ID |
bedCount | no | null | int | Number of beds in property |
PATCH /api/v2/property/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
name | no | null | string | Property name |
area | no | null | int | Property area |
bedroomCount | no | null | int | Number of bedrooms |
fullbathroomCount | no | null | int | Number of full bathrooms |
halfbathroomCount | no | null | int | Number of half bathrooms |
address | no | null | string | Property street address |
city | no | null | string | Property city |
postalCode | no | null | string | Property postal code |
latitude | no | null | float | Property latitude |
longitude | no | null | float | Property longitude |
minimumGuestCount | no | null | int | Property minimum guest count |
standardGuestCount | no | null | int | Property standard guest count |
maximumGuestCount | no | null | int | Property maximum guest count |
mimimumNightStay | no | null | int | Property minimum guest count |
cleaningTime | no | no | int | Property cleaning time |
hasInstantBooking | no | null | boolean | Property instant booking receive status |
leadTime | no | 1 | boolean | Property lead time set status |
status | no | 0 | boolean | Property activation status |
featured | no | null | string | Property featured date |
leadTimeInDays | no | 1 | int | Property lead time in days |
areaType | no | null | int | Property area type ID |
floor | no | null | int | Property floor level ID |
country | no | null | int | Property country ID |
state | no | null | int | Property state ID |
propertyType | no | null | int | Property type ID |
rentalType | no | null | int | Property rental type ID |
propertyGroup | no | null | int | Property group ID |
timeZone | no | null | int | Property time zone ID |
bedCount | no | null | int | Number of beds in property |
DELETE /api/v2/property/:id
Property Groups
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-group",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-group?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-group"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-group?page=1"
}
},
"_embedded": {
"property_group": [
{
"name": "My Rentals",
"createdAt": {
"date": "2016-12-05 20:32:01.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"description": null,
"leadTimeInDays": 1,
"id": 35,
"propertyManager": 42,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-group/35"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 2,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-group/36",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "mansion2",
"createdAt": {
"date": "2016-12-05 23:37:35.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"description": "huge properties",
"leadTimeInDays": 1,
"id": 36,
"propertyManager": 42,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-group/36"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-group/36",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"name": "lit rents",
"leadTimeInDays": 2,
"description": "describe me"
}
}
);
// would return JSON structured like this:
{
"name": "lit rents",
"createdAt": {
"date": "2016-12-05 23:37:35.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"description": "describe me",
"leadTimeInDays": 2,
"id": 36,
"propertyManager": 42,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-group/36"
}
}
}
Provides a list of property groups for a host
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-group
GET /api/v2/property-group/:id
PATCH /api/v2/property-group/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
name | no | null | string | Property group name |
leadTimeInDays | no | null | int | Property group lead time |
description | no | null | string | Property group description |
Property Images
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property/2110/image",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/2110/image"
}
},
"_embedded": {
"property_image": [
{
"sort": 0,
"caption": "front view",
"id": 831,
"property": {
"id": 2110,
"name": "coastal cottage tripadvisor 2"
},
"storageAsset": {},
"imageType": 3,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/2110/image/831"
}
}
},
]
},
"total_items": 11
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property/2110/image/832",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"sort": 1,
"caption": "interior view",
"id": 832,
"property": {
"id": 2110,
"name": "coastal cottage tripadvisor 2"
},
"storageAsset": {},
"imageType": 4,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/2110/image/832"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property/2110/image",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"file": 'file path',
"caption": "this is a test"
}
}
);
// would return JSON structured like this:
{
"sort": 12,
"caption": "this is a test",
"id": 853,
"property": {
"id": 2110,
"name": "coastal cottage tripadvisor 2"
},
"storageAsset": {},
"imageType": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/2110/image/853"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property/2110/image/853",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"caption": "this is another test"
}
}
);
// would return JSON structured like this:
{
"sort": 12,
"caption": "this is another test",
"id": 853,
"property": {
"id": 2110,
"name": "coastal cottage tripadvisor 2"
},
"storageAsset": {},
"imageType": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property/2110/image/853"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property/2110/image/853",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides a way to upload property images and captions to a particular property.
When creating a new image with the POST
method, either the file
or
url
field must be provided.
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property/:property_id/image
GET /api/v2/property/:property_id/image/:image_id
POST /api/v2/property/:property_id/image
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
file | no | null | file | File to upload |
url | no | null | string | Url of the image to upload |
caption | no | null | string | Image caption |
PATCH /api/v2/property/:property_id/image/:image_id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
caption | no | null | string | Image caption |
DELETE /api/v2/property/:property_id/image/:image_id
Property Manager
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-manager",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"companyName": "lodgable rents",
"doingBusinessAs": "dba2",
"phone": "",
"email": "[email protected]",
"address": "9220 S 1310 E",
"city": "Sandy",
"postalCode": "84094",
"accountingMethod": "accrual",
"website": "google.com",
"serviceFeePercent": "4.51",
"processingFeePercent": 2.997219075084967,
"customerServicePhone": "+1 801-555-5555",
"customerServiceEmail": "[email protected]",
"companyDescription": "business 2",
"createdAt": {
"date": "2018-06-27 15:45:33.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"serviceFeeChargedToGuest": false,
"processingFeeChargedToGuest": false,
"hash": "EES8VE37",
"isCompany": null,
"feePercentageChargedToGuest": 99,
"lastModifiedAt": {
"date": "2019-03-06 19:21:49.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 42,
"country": "US",
"currency": 25,
"state": 3603,
"companyType": 6,
"timeZone": 9,
"status": {
"id": 1,
"name": "Active"
},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-manager"
}
}
}
Returns the property manager of the current account
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-manager
Property Types
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-type",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-type?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-type"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-type?page=1"
}
},
"_embedded": {
"property_type": [
{
"name": "Townhome",
"id": 17,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-type/17"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 20,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-type/12",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "House",
"id": 12,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-type/12"
}
}
}
Provides a list of all property types
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-type
GET /api/v2/property-type/:id
Rental Types
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/rental-type",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/rental-type?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/rental-type"
},
"last": {
"href": "https://app.lodgable.com/api/v2/rental-type?page=1"
}
},
"_embedded": {
"rental_type": [
{
"name": "Shared Room",
"image": "http://quintessenceblog.com/wp-content/uploads/%2522Man-Cave%2522-room-at-Tom-Delavans-home-200x200.jpg",
"popDescription": "You're renting out part of a common area, such as a bed in a living room.",
"id": 3,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/rental-type/3"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 3,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/rental-type/1",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Entire House",
"image": "http://www.kiawahresort.com/images/premier-home-200x200.jpg",
"popDescription": "You're renting out an entire home or private space.",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/rental-type/1"
}
}
}
Provides a list of all rental types
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/rental-type
GET /api/v2/rental-type/:id
Room Configuration
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bedroom-bed-type",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-bed-type?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/bedroom-bed-type"
},
"last": {
"href": "https://app.lodgable.com/api/v2/bedroom-bed-type?page=17"
},
"next": {
"href": "https://app.lodgable.com/api/v2/bedroom-bed-type?page=2"
}
},
"_embedded": {
"bedroom_bed_type": [
{
"quantity": 1,
"id": 66,
"bedroom": 98,
"bedType": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-bed-type/66"
}
}
}
]
},
"page_count": 17,
"page_size": 25,
"total_items": 407,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/bedroom-bed-type/66",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"quantity": 1,
"id": 66,
"bedroom": 98,
"bedType": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/bedroom-bed-type/66"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/bedroom-bed-type",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"quantity": 4,
"bedType": 5,
"bedroom": 103
}
}
);
// would return JSON structured like this:
{
"quantity": 4,
"id": 1094,
"bedroom": 103,
"bedType": 5,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/lodgable/bedroom-bed-type/1094"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/bedroom-bed-type/66",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"quantity": 2,
"bedType": 2,
"bedroom": 99
}
}
);
// would return JSON structured like this:
{
"quantity": 2,
"id": 66,
"bedroom": 99,
"bedType": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/lodgable/bedroom-bed-type/66"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/bedroom-bed-type/66",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Associates a bedtype with a bedroom
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/bedroom-bed-type
GET /api/v2/bedroom-bed-type/:id
POST /api/v2/bedroom-bed-type
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
quantity | yes | null | int | Bed type quantity |
bedType | yes | null | int | Bed type ID |
bedroom | yes | null | int | Bedroom ID associated with property |
PATCH /api/v2/bedroom-bed-type/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
quantity | no | null | int | Bed type quantity |
bedType | no | null | int | Bed type ID |
bedroom | no | null | int | Bedroom ID associated with property |
DELETE /api/v2/bedroom-bed-type/:id
Rules
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-rule",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-rule?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-rule"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-rule?page=4"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-rule?page=2"
}
},
"_embedded": {
"property_rule": [
{
"description": "no smoking",
"createdAt": {
"date": "2017-04-03 20:52:05.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 54,
"property": 1608,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-rule/54"
}
}
}
]
},
"page_count": 4,
"page_size": 25,
"total_items": 98,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-rule/32",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"description": "no smoking",
"createdAt": {
"date": "2017-03-27 22:50:31.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 32,
"property": 1548,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-rule/32"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-rule",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"property": 1558,
"language": 2,
"description": "no partying"
}
}
);
// would return JSON structured like this:
{
"description": "no partying",
"createdAt": {
"date": "2018-12-21 02:38:39.510642",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 271,
"property": 1558,
"language": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-rule/271"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-rule/271",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"language": 1,
"description": "no partying, smoking, or drinking"
}
}
);
// would return JSON structured like this:
{
"description": "no partying, smoking, or drinking",
"createdAt": {
"date": "2018-12-21 02:38:39.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 271,
"property": 1558,
"language": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-rule/271"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-rule/271",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the ability to manage the property rule associated with an accounts properties
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-rule
GET /api/v2/property-rule/:id
POST /api/v2/property-rule
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
property | yes | null | int | Property ID |
language | yes | null | int | Language ID |
description | yes | null | string | Rule message |
PATCH /api/v2/property-rule/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
property | no | null | int | Property ID |
language | no | null | int | Language ID |
description | no | null | string | Rule message |
DELETE /api/v2/property-rule/:id
Welcome Details
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-welcome",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-welcome?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-welcome"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-welcome?page=6"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-welcome?page=2"
}
},
"_embedded": {
"property_welcome": [
{
"description": "welcome",
"createdAt": {
"date": "2017-03-27 18:16:09.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 35,
"language": 1,
"property": 1547,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-welcome/35"
}
}
},
"page_count": 4,
"page_size": 25,
"total_items": 98,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-welcome/38",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"description": "welcome",
"createdAt": {
"date": "2017-04-03 15:52:57.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 38,
"language": 1,
"property": 1580,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-welcome/38"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-welcome",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"property": 1558,
"language": 1,
"description": "welcome to my crib"
}
}
);
// would return JSON structured like this:
{
"description": "welcome to my crib",
"createdAt": {
"date": "2018-12-21 18:44:48.547157",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 323,
"language": 1,
"property": 1558,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-welcome/323"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-welcome/323",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"language": 2,
"description": "welcome to my crib in another language"
}
}
);
// would return JSON structured like this:
{
"description": "welcome to my crib in another language",
"createdAt": {
"date": "2018-12-21 18:44:48.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 323,
"language": 2,
"property": 1558,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-welcome/323"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-welcome/323",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the ability to manage the property welcome message associated with an accounts properties
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-welcome
GET /api/v2/property-welcome/:id
POST /api/v2/property-welcome
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
property | yes | null | int | Property ID |
language | yes | null | int | Language ID |
description | yes | null | string | Welcome message |
PATCH /api/v2/property-welcome/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
property | no | null | int | Property ID |
language | no | null | int | Language ID |
description | no | null | string | Welcome message |
DELETE /api/v2/property-welcome/:id
Property Dynamic Data
Base Rates
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-calendar-base-rate/12345",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-calendar-base-rate/12345",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"weekdayRate": "675.00",
"weekendRate": "675.00",
"minimumStay": 3,
"maximumStay": 30,
}
}
);
// would return JSON structured like this:
{
"weekdayRate": "675.00",
"weekendRate": "675.00",
"minimumStay": 3,
"maximumStay": 30,
"id": 12345,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-base-rate/12345"
}
}
}
This endpoint provides the default rates and stay requirements for the property
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-calendar-base-rate
GET /api/v2/property-calendar-base-rate/:id
PATCH /api/v2/property-calendar-base-rate/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
weekdayRate | no | null | float | Defines the nightly booking rate for a property during weekdays. Friday and Saturday night are considered weekends |
weekendRate | no | null | float | Defines the nightly booking rate for a property during weekends |
minimumStay | no | null | int | Defines the minimum number of nights allowed when booking the associated property |
maximumStay | no | null | int | Defines the maximum number of nights allowed when booking the associated property |
Calendar
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property/2030/calendar",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
[
{
"id": "2695954",
"type": "range",
"status": 1,
"note": null,
"startAt": {
"date": "2018-06-01 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"endAt": {
"date": "2018-06-08 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"available": true,
"weekendRate": "140.00",
"weekdayRate": "120.00",
"minimumStay": "3",
"maximumStay": "14"
}
]
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property/2030/calendar",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"startAt": "2018-06-12",
"endAt": "2018-06-13",
"minimumStay": 2
}
}
);
// would return JSON structured like this:
[
{
"startAt": {
"date": "2018-06-13 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"endAt": {
"date": "2018-06-13 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"weekdayRate": null,
"weekendRate": null,
"minimumStay": 2,
"maximumStay": null,
"id": 2719053,
"propertyCalendarStatus": 1,
"propertyCalendarCategory": null,
"property": 2030,
"uid": "5b1dbe046ba3e6-25777254",
"note": "Unavailable",
"createdAt": {
"date": "2018-06-11 00:10:44.440694",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2018-06-11 00:10:44.440728",
"timezone_type": 3,
"timezone": "UTC"
},
"createdBy": 72,
"lastModifiedBy": 72
}
]
Consolidates property calendar information into a single contiguous set of data, this endpoint takes the property's base rates, calendar edits, and reservations into consideration to produce an accurate presentation of the calendar and all associated information
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property/:id/calendar
Query Parameters
When performing a GET
request, you can customize the date range retrieved
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
startAt | no | today | string | Start date of range |
endAt | no | today + 1 month | string | End date of range |
PATCH /api/v2/property/:id/calendar
To update your calendar you will need to define what the date range and provide the information you want to update. This call will update the calendar but does not affect any reservations.
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
startAt | yes | null | string | Start date of range |
endAt | yes | null | string | End date of range |
weekdayRate | no | null | float | Weekday rate amount |
weekendRate | no | null | float | Weekend rate amount |
minimumStay | no | null | int | Minimum night stay |
maximumStay | no | null | int | Maximum night stay |
propertyCalendarStatus | no | null | int | Calendar range availability status. Checkout the property calendar status endpoint for available values |
note | no | null | string | Calendar range note |
Calendar Statuses
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-calendar-status",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-status?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-calendar-status"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-calendar-status?page=1"
}
},
"_embedded": {
"property_calendar_status": [
{
"name": "Available",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-status/1"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 4,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-calendar-status/4",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Unavailable: Maintenance",
"id": 4,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-status/4"
}
}
}
Provides a list of all the property calendar statuses
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-calendar-status
GET /api/v2/property-calendar-status/:id
Fees
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-fee",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-fee?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-fee"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-fee?page=35"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-fee?page=2"
}
},
"_embedded": {
"property_fee": [
{
"amount": "11.50",
"extraData": "3",
"optional": true,
"name": null,
"id": 2,
"property": 1501,
"fee": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-fee/2"
}
}
},
"page_count": 35,
"page_size": 25,
"total_items": 871,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-fee/4",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"amount": "4.00",
"extraData": "1",
"optional": true,
"name": null,
"id": 4,
"property": 1502,
"fee": 2,
"_links": {
"self": {
"href": "https://staging-app.lodgable.com/api/v2/property-fee/4"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-fee",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"amount": "11.60",
"property": 2035,
"fee": 1,
"language": 1
}
}
);
// would return JSON structured like this:
{
"amount": "11.60",
"extraData": null,
"optional": true,
"name": null,
"id": 872,
"property": 2035,
"fee": 1,
"_links": {
"self": {
"href": "https://staging-app.lodgable.com/api/v2/property-fee/872"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-fee/4",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"amount": "11.60",
"extra_data": "2",
"name": "abc",
"applicableTaxTypes": [1,2]
}
}
);
// would return JSON structured like this:
{
"amount": "11.60",
"extraData": "2",
"optional": true,
"name": "abc",
"id": 4,
"property": 1502,
"fee": 2,
"applicableTaxTypes": [
1,
2
],
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-fee/4"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-fee/25",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the ability to manage the property fee associated with an accounts properties
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-fee
GET /api/v2/property-fee/:id
POST /api/v2/property-fee
The fee field can be one of three integer values:
1 - Cleaning Fee
2 - Extra Guest Fee
3 - Custom Fee
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
amount | yes | null | float | Fee amount |
property | yes | null | int | Property ID |
fee | yes | null | int | Fee type |
name | no | null | string | Fee name |
extra_data | required only for extra guest fee type | null | int | Flag set for extra guest fee |
language | yes | null | int | Fee name language |
applicableTaxTypes | no | null | int array | Applicable tax types to apply to fee. Each integer represents a tax type that will be applied, checkout the taxes endpoint for available values |
PATCH /api/v2/property-fee/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
amount | no | null | float | Fee amount |
property | no | null | int | Property ID |
fee | no | null | int | Fee type |
name | no | null | string | Fee name |
extra_data | required only for extra guest fee type | null | int | Flag set for extra guest fee |
applicableTaxTypes | no | null | int array | Applicable tax types to apply to fee. Each integer represents a tax type that will be applied, checkout the taxes endpoint for available values |
DELETE /api/v2/property-fee/:id
Long Stay Discounts
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount?page=2"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount?page=2"
}
},
"_embedded": {
"property_calendar_long_stay_discount": [
{
"startAt": "2017-01-17",
"endAt": "2017-06-06",
"discountPercentage": "10.00",
"minimumStay": 3,
"maximumStay": 7,
"createdAt": null,
"lastModifiedAt": null,
"id": 15,
"createdBy": null,
"lastModifiedBy": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount/15"
}
}
}
]
},
"page_count": 2,
"page_size": 25,
"total_items": 30,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount/29",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"startAt": "2017-03-29",
"endAt": "2019-03-29",
"discountPercentage": "15.00",
"minimumStay": 1,
"maximumStay": 20,
"createdAt": null,
"lastModifiedAt": null,
"id": 29,
"createdBy": null,
"lastModifiedBy": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount/29"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"startAt": "2017-05-29",
"endAt": "2018-10-29",
"discountPercentage": "20",
"minimumStay": 2,
"maximumStay": 14,
"property": 2030
}
}
);
// would return JSON structured like this:
{
"startAt": "2017-05-29",
"endAt": "2018-10-29",
"discountPercentage": "20",
"minimumStay": 2,
"maximumStay": 14,
"createdAt": {
"date": "2018-06-11 04:18:32.463519",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2018-06-11 04:18:32.463579",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 114,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount/114"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount/114",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"discountPercentage": "10",
"minimumStay": 3,
"maximumStay": 21
}
}
);
// would return JSON structured like this:
{
"startAt": "2017-05-29",
"endAt": "2018-10-29",
"discountPercentage": "10",
"minimumStay": 3,
"maximumStay": 21,
"createdAt": {
"date": "2018-06-11 04:18:32.463519",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2018-06-11 04:18:32.463579",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 114,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount/114"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-calendar-long-stay-discount/114",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the property's long stay discounts, discounts can take the form of either a percentage or flat rate. When resolving long stay discounts with overlapping dates the priority is treated in descending order for each field. Discount with the longest minimum stay that satisfies the requirements is used, next in precedence is the type of discount, percentage rates always take priority. Finally last is the discount amount with the highest amount taking precedence. In example if two different types intersect in the instance of a flat rate and a percentage the percentage discount is always used first even with it's a smaller amount then the flat rate due to cascading rules. If you are defining multiple long stay discount ranges and want to have them work as a contiguous set of discounts be sure to start the next discount on the same day the preceding discount ends. For example, if you set a discount for 2019-11-01 until 2019-11-05 and then set another on 2019-11-06 until 2019-11-07, the night of 2019-11-05 will not have a discount. To apply a discount to all days you must have the policies touch such as 2019-11-01 until 2019-11-05 and then set another on 2019-11-05 until 2019-11-07.
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-calendar-long-stay-discount
GET /api/v2/property-calendar-long-stay-discount/:id
POST /api/v2/property-calendar-long-stay-discount
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
startAt | yes | null | string | Start date of long stay discount |
endAt | yes | null | string | End date of long stay discount |
discountPercentage | yes | null | int | % of the discount |
minimumStay | yes | null | int | Minimum night stay for long stay discount to take effect |
maximumStay | yes | null | int | Maximum night stay for long stay discount to take effect |
property | yes | null | int | The associated property's ID. See the properties endpoint for more information |
PATCH /api/v2/property-calendar-long-stay-discount/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
startAt | no | null | string | Start date of long stay discount |
endAt | no | null | string | End date of long stay discount |
discountPercentage | no | null | int | % of the discount |
minimumStay | no | null | int | Minimum night stay for long stay discount to take effect |
maximumStay | no | null | int | Maximum night stay for long stay discount to take effect |
DELETE /api/v2/property-calendar-long-stay-discount/:id
Security Deposit
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/deposit-type",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/deposit-type?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/deposit-type"
},
"last": {
"href": "https://app.lodgable.com/api/v2/deposit-type?page=1"
}
},
"_embedded": {
"deposit_type": [
{
"name": "Percentage of accommodation",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/deposit-type/1"
}
}
},
{
"name": "Fixed amount per day",
"id": 2,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/deposit-type/2"
}
}
},
{
"name": "Flat amount",
"id": 3,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/deposit-type/3"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 3,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/deposit-type/3",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Flat amount",
"id": 3,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/deposit-type/3"
}
}
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-deposit",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-fee?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-fee"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-fee?page=35"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-fee?page=2"
}
},
"_embedded": {
"property_deposit": [
{
"name": "",
"amount": "120.00",
"isRefundable": false,
"createdAt": {
"date": "2017-04-03 22:47:37.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 55,
"property": 1625,
"depositType": {
"id": 3,
"name": "Flat amount"
},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-deposit/55"
}
}
}
]
},
"page_count": 20,
"page_size": 25,
"total_items": 492,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-deposit/55",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "",
"amount": "120.00",
"isRefundable": false,
"createdAt": {
"date": "2017-04-03 22:47:37.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 55,
"property": 1625,
"depositType": {
"id": 3,
"name": "Flat amount"
},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-deposit/55"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-deposit",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"amount":85.12,
"name":"deposit",
"isRefundable":true,
"depositType":3,
"property":1600
}
}
);
// would return JSON structured like this:
{
"name": "deposit",
"amount": 85.12,
"isRefundable": true,
"createdAt": {
"date": "2019-08-27 23:32:49.848306",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 723,
"property": 1600,
"depositType": {
"id": 3,
"name": "Flat amount"
},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-deposit/723"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-deposit/723",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"amount":86.23,
"name":"deposit requirement",
"isRefundable":false,
"depositType":2
}
}
);
// would return JSON structured like this:
{
"name": "deposit requirement",
"amount": 86.23,
"isRefundable": false,
"createdAt": {
"date": "2019-08-27 23:32:49.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 723,
"property": 1600,
"depositType": {
"id": 2,
"name": "Fixed amount per day"
},
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-deposit/723"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-deposit/723",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the ability to manage the security deposit associated with a property
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/deposit-type
GET /api/v2/deposit-type/:id
GET /api/v2/property-deposit
GET /api/v2/property-deposit/:id
POST /api/v2/property-deposit
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
amount | yes | null | float | Deposit amount |
property | yes | null | int | Property ID |
depositType | yes | null | int | Deposit type |
name | yes | null | string | Deposit name |
isRefundable | no | false | boolean | Deposit refund status |
PATCH /api/v2/property-deposit/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
amount | no | null | float | Deposit amount |
depositType | no | null | int | Deposit type |
name | no | null | string | Deposit name |
isRefundable | no | false | boolean | Deposit refund status |
DELETE /api/v2/property-deposit/:id
Taxes
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-tax",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-tax?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/property-tax"
},
"last": {
"href": "https://app.lodgable.com/api/v2/property-tax?page=6"
},
"next": {
"href": "https://app.lodgable.com/api/v2/property-tax?page=2"
}
},
"_embedded": {
"property_tax": [
{
"taxRate": "5.00",
"lastModified": {
"date": "2017-01-19 18:49:51.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 25,
"property": 1537,
"taxType": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-tax/25"
}
}
}
]
},
"page_count": 6,
"page_size": 25,
"total_items": 142,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/property-tax/1",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"taxRate": "0.00",
"lastModified": {
"date": "2016-08-17 15:15:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 1,
"property": 1501,
"taxType": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-tax/1"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/property-tax",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"taxType": 1,
"property": 2030,
"taxRate": "15.00"
}
}
);
// would return JSON structured like this:
{
"taxRate": "15.00",
"lastModified": {
"date": "2018-06-02 00:32:14.458226",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 143,
"property": 2030,
"taxType": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-tax/143"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/property-tax/143",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"taxRate": "16.11",
"excludedBookingOrigins": [3,4]
}
}
);
// would return JSON structured like this:
{
"taxRate": 16.11,
"lastModified": {
"date": "2018-06-02 00:32:14.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 143,
"property": 2030,
"taxType": 1,
"excludedBookingOrigins": [
3,
4
],
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/property-tax/143"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/property-tax/143",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides the ability to manage the property tax associated with an accounts properties
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/property-tax
GET /api/v2/property-tax/:id
POST /api/v2/property-tax
The tax type field can be one of six integer values:
1 - General Taxes
2 - Occupancy Taxes
3 - Sales Taxes
4 - VAT
5 - Lodging Taxes
6 - No Tax
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
taxType | yes | null | int | Type of tax |
property | yes | null | int | Property ID |
taxRate | yes | null | float | Tax amount |
excludedBookingOrigins | no | null | int array | Applicable booking origins to not apply tax. Each integer represents a booking origin that will be applied, checkout the origins endpoint for available values |
PATCH /api/v2/property-tax/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
taxType | no | null | int | Type of tax |
property | no | null | int | Property ID |
taxRate | no | null | float | Tax amount |
excludedBookingOrigins | no | null | int array | Applicable booking origins to not apply tax. Each integer represents a booking origin that will be applied, checkout the origins endpoint for available values |
DELETE /api/v2/property-tax/:id
Booking Data
Bookings
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/reservation",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/reservation?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/reservation"
},
"last": {
"href": "https://app.lodgable.com/api/v2/reservation?page=205"
},
"next": {
"href": "https://app.lodgable.com/api/v2/reservation?page=2"
}
},
"_embedded": {
"reservation": [
{
"createdAt": {
"date": "2016-12-05 21:48:28.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"startAt": "2016-12-12",
"endAt": "2016-12-13",
"scheduledCheckoutDate": {
"date": "2016-12-14 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"checkedIn": {
"date": "2016-12-05 23:06:25.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"checkedOut": {
"date": "2016-12-05 23:07:34.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2017-05-02 22:29:26.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"guestCount": 1,
"notes": "hi",
"guestComment": null,
"reservationNumber": "DXJP5P",
"securityDeposit": "80.00",
"lengthOfStayNights": 2,
"lengthOfStayDays": 3,
"securityDepositClaimed": null,
"uid": "59090830756055-22006513",
"id": 88,
"invoice": {
"id": 88,
"balance": "276.35",
"balanceStatus": "overdue",
"total": "418.85",
"payment": [
{
"id": 122,
"amount": "442.50",
"invoice": 88,
"notes": null,
"paymentRefund": [
{
"id": 12,
"createdAt": {
"date": "2016-12-05 22:27:30.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paymentStatus": {
"id": 2,
"name": "Received"
},
"notes": "overpayment",
"amount": "442.50"
}
],
"paymentStatus": {
"id": 2,
"name": "Received"
},
"createdAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
]
},
"cancellationPolicies": [
{
"withinDays": 1,
"amount": 110,
"revision": null,
"id": 15,
"property": 1535,
"active": false
}
],
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/reservation/88"
}
}
}
]
},
"page_count": 205,
"page_size": 25,
"total_items": 5114,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/reservation/88",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"createdAt": {
"date": "2016-12-05 21:48:28.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"startAt": "2016-12-12",
"endAt": "2016-12-13",
"scheduledCheckoutDate": {
"date": "2016-12-14 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"checkedIn": {
"date": "2016-12-05 23:06:25.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"checkedOut": {
"date": "2016-12-05 23:07:34.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2017-05-02 22:29:26.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"guestCount": 1,
"notes": "hi",
"guestComment": null,
"reservationNumber": "DXJP5P",
"securityDeposit": "80.00",
"lengthOfStayNights": 2,
"lengthOfStayDays": 3,
"securityDepositClaimed": null,
"uid": "59090830756055-22006513",
"id": 88,
"invoice": {
"id": 88,
"balance": "276.35",
"balanceStatus": "overdue",
"total": "418.85",
"payment": [
{
"id": 122,
"amount": "442.50",
"invoice": 88,
"notes": null,
"paymentRefund": [
{
"id": 12,
"createdAt": {
"date": "2016-12-05 22:27:30.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paymentStatus": {
"id": 2,
"name": "Received"
},
"notes": "overpayment",
"amount": "442.50"
}
],
"paymentStatus": {
"id": 2,
"name": "Received"
},
"createdAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
]
},
"cancellationPolicies": [
{
"withinDays": 1,
"amount": 110,
"revision": null,
"id": 15,
"property": 1535,
"active": false
}
],
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/reservation/88"
}
}
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/reservation?createdAt=2016-12-05",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/reservation?createdAt=2016-12-05&page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/reservation?createdAt=2016-12-05"
},
"last": {
"href": "https://app.lodgable.com/api/v2/reservation?createdAt=2016-12-05&page=205"
},
"next": {
"href": "https://app.lodgable.com/api/v2/reservation?createdAt=2016-12-05&page=2"
}
},
"_embedded": {
"reservation": [
{
"createdAt": {
"date": "2016-12-05 21:48:28.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"startAt": "2016-12-12",
"endAt": "2016-12-13",
"scheduledCheckoutDate": {
"date": "2016-12-14 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"checkedIn": {
"date": "2016-12-05 23:06:25.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"checkedOut": {
"date": "2016-12-05 23:07:34.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"cancelledDate": null,
"lastModifiedAt": {
"date": "2017-05-02 22:29:26.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"guestCount": 1,
"notes": "hi",
"guestComment": null,
"reservationNumber": "DXJP5P",
"securityDeposit": "80.00",
"lengthOfStayNights": 2,
"lengthOfStayDays": 3,
"rentalsUnitedId": null,
"securityDepositClaimed": null,
"securityDepositClaimReason": null,
"securityDepositClaimDetails": null,
"finalized": null,
"uid": "59090830756055-22006513",
"cancellationReasonText": null,
"id": 88,
"comment": {},
"invoice": {
"id": 88,
"balance": "276.35",
"balanceStatus": "overdue",
"total": "418.85",
"payment": [
{
"id": 122,
"amount": "442.50",
"invoice": 88,
"notes": null,
"paymentRefund": [
{
"id": 12,
"createdAt": {
"date": "2016-12-05 22:27:30.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paymentStatus": {
"id": 2,
"name": "Received"
},
"notes": "overpayment",
"amount": "442.50"
}
],
"paymentStatus": {
"id": 2,
"name": "Received"
},
"createdAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
{
"id": 123,
"amount": "500.00",
"invoice": 88,
"notes": "hi",
"paymentRefund": [
{
"id": 15,
"createdAt": {
"date": "2016-12-05 22:31:10.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paymentStatus": {
"id": 2,
"name": "Received"
},
"notes": "",
"amount": "57.50"
},
{
"id": 16,
"createdAt": {
"date": "2016-12-05 22:36:07.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paymentStatus": {
"id": 2,
"name": "Received"
},
"notes": "",
"amount": "300.00"
}
],
"paymentStatus": {
"id": 2,
"name": "Received"
},
"createdAt": {
"date": "2016-12-05 22:12:14.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2016-12-05 22:12:14.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
]
},
"cancellationReason": null,
"cancellationPolicies": [
{
"withinDays": 1,
"amount": 110,
"revision": null,
"id": 15,
"property": 1535,
"active": false
}
],
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/reservation/88"
}
}
}
]
},
"page_count": 205,
"page_size": 25,
"total_items": 5114,
"page": 1
}
Provides information on a host's reservations
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/reservation
GET /api/v2/reservation/:id
Checkout the filtering section on how to filter reservations by creation time and guest ID
Cancellations
Agreements with the channels prevent Lodgable or the System of Record (SoR) from canceling a booking via an API or on their personal platforms.
Guests or the channel should be the only parties that are allowed to cancel a reservation unless a property manager, homeowner, or another host (Supplier) has an extenuating circumstance that prevents honoring the booking. For extenuating circumstances, the Supplier must contact Lodgable and/or the channel to request a cancellation. Supplier initiated cancellations may be liable to penalties.
Once a booking has been canceled, Lodgable will modify the booking status and make the update available.
Estimated Earnings
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/reservation/30698/estimated-earnings",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"grossAmountGuestPaid": "287.73",
"channelHostFee": "0.00",
"channelGuestFee": "0.00",
"lodgableGuestFee": "12.95",
"bookingSettled": null,
"refundableAmount": "0.00",
"taxesWitheld": null,
"netEarning": "266.13",
"id": 30253,
"reservation": 30698,
"creditCardFee": "8.65",
"transferFee": "0.00"
}
Provides the estimated earnings for a reservation
HTTP Request
GET /api/v2/reservation/:id/estimated-earnings
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
Guests
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/guest",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/guest?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/guest"
},
"last": {
"href": "https://app.lodgable.com/api/v2/guest?page=307"
},
"next": {
"href": "https://app.lodgable.com/api/v2/guest?page=2"
}
},
"_embedded": {
"guest": [
{
"firstName": "John",
"lastName": "Doe",
"address": "9400 S 1306 E",
"city": "Sandy",
"postalCode": "84093",
"phone": "+1 801-555-5555",
"email": "[email protected]",
"id": 23,
"guestCompany": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/guest/23"
}
}
},
]
},
"page_count": 307,
"page_size": 25,
"total_items": 7668,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/guest/24",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"firstName": "Antonio",
"lastName": "Sanders",
"address": null,
"city": null,
"postalCode": null,
"phone": "+1 801-555-5555",
"email": "[email protected]",
"id": 24,
"guestCompany": null,
"country": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/guest/24"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/guest",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"firstName": "John",
"lastName": "Doe",
"address": "9402 S 1303 E",
"city": "Sandy",
"postalCode": "84093",
"birthday": "1987-03-15",
"phone": "+1 801-777-5555",
"email": "[email protected]",
"state": 3603,
"country": "US",
"propertyManager": 42,
"language": 1
}
}
);
// would return JSON structured like this:
{
"firstName": "John",
"lastName": "Doe",
"address": "9402 S 1303 E",
"city": "Sandy",
"postalCode": "84093",
"phone": "+1 801-777-5555",
"email": "[email protected]",
"id": 46710,
"guestCompany": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/guest/46710"
}
}
}
// An angularjs PATCH request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/guest/46710",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"firstName": "Jane",
"lastName": "Doole",
"address": "9410 S 1311 E",
"phone": "+1 801-666-7777",
"email": "[email protected]"
}
}
);
// would return JSON structured like this:
{
"firstName": "Jane",
"lastName": "Doole",
"address": "9410 S 1311 E",
"city": "Sandy",
"postalCode": "84093",
"phone": "+1 801-666-7777",
"email": "[email protected]",
"id": 46710,
"guestCompany": null,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/guest/46710"
}
}
}
Provides information on a host's guests
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/guest
GET /api/v2/guest/:id
POST /api/v2/guest
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
firstName | yes | null | string | First name |
lastName | yes | null | string | Last name |
address | no | null | string | Street address |
city | no | null | string | City |
postalCode | no | null | string | Postal code |
birthday | no | null | string | Birthday |
phone | no | null | string | Phone number contact |
yes | null | string | E-mail contact address | |
state | no | null | int | State ID. See the states endpoint for more information |
country | no | null | string | Country ID. See the countries endpoint for more information |
propertyManager | yes | null | int | Property manager ID |
language | no | null | int | Language ID. See the languages endpoint for more information |
PATCH /api/v2/guest/:id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
firstName | no | null | string | First name |
lastName | no | null | string | Last name |
address | no | null | string | Street address |
city | no | null | string | City |
postalCode | no | null | string | Postal code |
birthday | no | null | string | Birthday |
phone | no | null | string | Phone number contact |
no | null | string | E-mail contact address | |
state | no | null | int | State ID. See See the states endpoint for more information |
country | no | null | string | Country ID. See the countries endpoint for more information |
language | no | null | int | Language ID. See the languages endpoint for more information |
Invoices
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/invoice",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/invoice?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/invoice"
},
"last": {
"href": "https://app.lodgable.com/api/v2/invoice?page=213"
},
"next": {
"href": "https://app.lodgable.com/api/v2/invoice?page=2"
}
},
"_embedded": {
"invoice": [
{
"dueDate": {
"date": "2016-12-06 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"invoiceDate": {
"date": "2016-12-05 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paid": 142.5,
"createdAt": {
"date": "2016-12-05 21:48:28.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"balance": 276.35,
"balanceStatus": "overdue",
"total": "418.85",
"lastModifiedAt": {
"date": "2018-08-06 19:08:29.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 88,
"invoiceItem": [
569,
570,
571,
2402
],
"payment": [
{
"id": 122,
"amount": "442.50",
"invoice": 88,
"notes": null,
"paymentRefund": [
{
"id": 12,
"createdAt": {
"date": "2016-12-05 22:27:30.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paymentStatus": {
"id": 2,
"name": "Received"
},
"notes": "overpayment",
"amount": "442.50"
}
],
"paymentStatus": {
"id": 2,
"name": "Received"
},
"createdAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
],
},
"invoiceTerm": 1,
"guest": 23,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/invoice/88"
}
}
}
]
},
"page_count": 213,
"page_size": 25,
"total_items": 5311,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/invoice/88",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"dueDate": {
"date": "2016-12-06 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"invoiceDate": {
"date": "2016-12-05 00:00:00.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paid": 142.5,
"createdAt": {
"date": "2016-12-05 21:48:28.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"balance": 276.35,
"balanceStatus": "overdue",
"total": "418.85",
"lastModifiedAt": {
"date": "2018-08-06 19:08:29.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"id": 88,
"invoiceItem": [
569,
570,
571,
2402
],
"payment": [
{
"id": 122,
"amount": "442.50",
"invoice": 88,
"notes": null,
"paymentRefund": [
{
"id": 12,
"createdAt": {
"date": "2016-12-05 22:27:30.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"paymentStatus": {
"id": 2,
"name": "Received"
},
"notes": "overpayment",
"amount": "442.50"
}
],
"paymentStatus": {
"id": 2,
"name": "Received"
},
"createdAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
},
"lastModifiedAt": {
"date": "2016-12-05 22:11:50.000000",
"timezone_type": 3,
"timezone": "UTC"
}
},
],
"invoiceTerm": 1,
"guest": 23,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/invoice/88"
}
}
}
Provides information on a host's invoices
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/invoice
GET /api/v2/invoice/:id
Origins
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/booking-origin",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/booking-origin?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/booking-origin"
},
"last": {
"href": "https://app.lodgable.com/api/v2/booking-origin?page=4"
},
"next": {
"href": "https://app.lodgable.com/api/v2/booking-origin?page=2"
}
},
"_embedded": {
"booking_origin": [
{
"name": "HomeAway",
"url": "https://www.homeaway.com/",
"id": 3,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/booking-origin/3"
}
}
}
]
},
"page_count": 4,
"page_size": 25,
"total_items": 80,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/booking-origin/4",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "FlipKey",
"url": "https://www.flipkey.com/",
"id": 4,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/booking-origin/4"
}
}
}
Provides a list of all booking channel origins for a reservation
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/booking-origin
GET /api/v2/booking-origin/:id
Checkout the filtering section on how to filter booking origins
Checkout the sorting section on how to sort booking origins
Statuses
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/booking-status",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/booking-status?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/booking-status"
},
"last": {
"href": "https://app.lodgable.com/api/v2/booking-status?page=1"
}
},
"_embedded": {
"booking_status": [
{
"name": "Confirmed",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/booking-status/1"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 6,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/booking-status/1",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"name": "Confirmed",
"id": 1,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/booking-status/1"
}
}
}
Provides a list of all booking statuses in the lifecycle of a reservation
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/javascript; application/*+javascript |
Content-Type | application/javascript |
GET /api/v2/booking-status
GET /api/v2/booking-status/:id
Billing Data
Billing
Management
Billing methods can be managed from the account profile page under the Billing tab. A stripe account can be set up quickly from the 'Guest Payments' section by selecting an appropriate plan and clicking 'Manage' stripe, a development mode prompt should appear, click to finish setup and connect stripe, see Stripe section for more info.
Set Up
Adding a new billing method:
After creating an account from the main dashboard click on the user profile image in the top right hand corner to open a dropdown menu and select 'Account Settings' then select 'Billing Method'.
On the billing method page click the button that says 'Add billing method' which will then bring a dialog box up.
Enter the required field info, the bank name should automatically fill based on your routing number, the submit button will become active to click. Test cards are permitted to be used due to stripe being in development mode.
The added payment method should now show on the billing page, if previous billing info has been set up the latest one will automatically be set as the default payment method, other billing methods can be changed at anytime.
Host's Payout Address
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/location",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/location?page=1"
},
"first": {
"href": "https://app.lodgable.com/api/v2/location"
},
"last": {
"href": "https://app.lodgable.com/api/v2/location?page=1"
}
},
"_embedded": {
"location": [
{
"address": "6900 S Highland Dr",
"city": "Murray",
"postalCode": "84121",
"lat": null,
"lng": null,
"formatted_address": null,
"id": 27,
"propertyManager": 42,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/location/27"
}
}
}
]
},
"page_count": 1,
"page_size": 25,
"total_items": 6,
"page": 1
}
// An angularjs GET request such as:
$http(
{
"method": "GET",
"url": "https://app.lodgable.com/api/v2/location/27",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return JSON structured like this:
{
"address": "6900 S Highland Dr",
"city": "Murray",
"postalCode": "84121",
"lat": null,
"lng": null,
"formatted_address": null,
"id": 27,
"propertyManager": 42,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/location/27"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "POST",
"url": "https://app.lodgable.com/api/v2/location",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"address": "6910 S Highland Dr",
"city": "Murray",
"state": 3603,
"postalCode": "84121",
"country": "US"
}
}
);
// would return JSON structured like this:
{
"address": "6910 S Highland Dr",
"city": "Murray",
"postalCode": "84121",
"lat": null,
"lng": null,
"formatted_address": null,
"id": 35,
"propertyManager": 42,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/location/35"
}
}
}
// An angularjs POST request such as:
$http(
{
"method": "PATCH",
"url": "https://app.lodgable.com/api/v2/location/35",
"headers": {
"Authorization": "Bearer " + access_token
},
"data": {
"address": "6920 S Highland Dr"
}
}
);
// would return JSON structured like this:
{
"address": "6920 S Highland Dr",
"city": "Murray",
"postalCode": "84121",
"lat": null,
"lng": null,
"formatted_address": null,
"id": 35,
"propertyManager": 42,
"_links": {
"self": {
"href": "https://app.lodgable.com/api/v2/location/35"
}
}
}
// An angularjs DELETE request such as:
$http(
{
"method": "DELETE",
"url": "https://app.lodgable.com/api/v2/location/35",
"headers": {
"Authorization": "Bearer " + access_token
}
}
);
// would return: 204 No Content
Provides a list of all payout addresses associated with the host
HTTP Request
Request Headers
Header | Value |
---|---|
Accept | application/json; application/*+json |
Content-Type | application/json |
GET /api/v2/location
GET /api/v2/location/:location_id
POST /api/v2/location
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
address | yes | null | string | Street address |
city | no | null | string | City |
lat | no | null | float | World latitude |
lng | no | null | float | World longitude |
formatted_address | no | null | string | Complete address |
postalCode | no | null | string | Postal code |
country | no | null | string | Country |
state | no | null | string | State |
PATCH /api/v2/location/:location_id
Request Parameters
Parameter | Required | Default | Type | Description |
---|---|---|---|---|
address | no | null | string | Street address |
city | no | null | string | City |
lat | no | null | float | World latitude |
lng | no | null | float | World longitude |
formatted_address | no | null | string | Complete address |
postalCode | no | null | string | Postal code |
country | no | null | string | Country |
state | no | null | string | State |
DELETE /api/v2/location/:location_id
Payouts
Management
Payout methods can be managed from the account profile page under the Payouts tab.
Set Up
Adding a new payout method:
After creating an account from the main dashboard click on the user profile image in the top right hand corner to open a dropdown menu and select 'Account Settings' then 'Payouts'.
On the payouts method page click the button that says 'Add payout method' which will then bring a dialog box up.
Enter the required contact field info including an address associated with the payout , the submit button will become active to click
The added payout method should now show on the payouts page, if previous payout info has been set up the latest one will automatically be set as the default payment method, other payout methods can be changed at anytime.
Stripe
Management
Stripe can be managed from the account profile page under the Guest Payments tab.
Set Up
Adding a new stripe account:
After creating an account from the main dashboard click on the user profile image in the top right hand corner to open a dropdown menu and select 'Account Settings' then 'Guest Payments'.
On the guest payments page select an appropriate stripe plan to begin setup.
Sign into an existing account to connect it, proceed to create a new account or alternatively skip sign up by clicking the development mode prompt to connect stripe.
The connected stripe account dashboard should now be accessible from the guest payments page by clicking 'Manage Stripe' on the currently set plan.
Proceed to set up a billing method if not already done.
Webhooks
Management
Webhooks can be managed from the lodgable administration page under the development dropdown menu at Callback URLs on a per property manager basis. If you are an integrator connecting with multiple property managers and wish to have webhooks configured for all connected hosts, please contact Lodgable support. On clicking the option you will be routed to the webhooks page which lists all currently setup urls for the account. Adding a new url is simple, click on the 'add a new callback url' button to get started. On the 'create a callback url' page enter the url of the server you will be testing on and then select the information event you want it to listen for in the 'listens for' dropdown and save. The new webhook should now show on the listing page and be active and ready for testing. Each individual webhook can be updated with a new url, what to listen for, and enabled/disabled accordingly using the dropdown menu on the right hand corner of that url and clicking update. The listing page also supports filtering for and searching by specific parameters to quickly find specific urls.
Testing
Testing is done by opening up an active socket listening session on the server you will be testing on with the appropriate active webhook then using the dropdown menu and clicking send test. If everything in the webhook and listening server was configured correctly and the appropriate changed data is available to send you should receive a url encoded string message of that information from your account on the server you're testing on. If the test data was successfully sent you will receive a toast notification saying so otherwise a notification will tell you if the data is unavailable.
Base Rates and Stay Information
Sends information on weekday and weekend base rates, minimum and maximum night stays, as well as the associated property ID, host ID, and property name.
Invoices
// Here is an example of an invoice payload:
{
"id":"30957",
"dueDate":{
"date":"2019-05-28 00:00:00.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"paid":"10.00",
"taxRate":"0.0000",
"invoiceItem":[
{
"id":"39157",
"amount":"403.15",
"product":"Nightly Rental Charge",
"description":"#2341 - Whistler Three Bed Townhome Steps to ski and village"
},
{
"id":"39158",
"amount":"10.77",
"product":"Nightly Rental Charge",
"description":"#2341 - Whistler Three Bed Townhome Steps to ski and village"
},
{
"id":"39159",
"amount":"10.77",
"product":"Nightly Rental Charge",
"description":"#2341 - Whistler Three Bed Townhome Steps to ski and village"
},
{
"id":"39160",
"amount":"403.15",
"product":"Nightly Rental Charge",
"description":"#2341 - Whistler Three Bed Townhome Steps to ski and village"
},
{
"id":"39161",
"amount":"403.15",
"product":"Nightly Rental Charge",
"description":"#2341 - Whistler Three Bed Townhome Steps to ski and village"
}
],
"balance":"1220.99",
"balanceStatus":"unpaid",
"total":"1230.99",
"payment":[
{
"id":"31067",
"amount":"20.00",
"paymentRefund":[
{
"id":"545",
"amount":"10.00",
"createdAt":{
"date":"2019-05-06 19:29:16.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"paymentStatus":{
"id":"2",
"name":"Received"
},
"notes":""
}
],
"paymentStatus":{
"id":"2",
"name":"Received"
},
"createdAt":{
"date":"2019-05-06 19:29:01.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"lastModifiedAt":{
"date":"2019-05-06 19:29:01.000000",
"timezone_type":"3",
"timezone":"UTC"
}
},
{
"id":"31068",
"amount":"15.10",
"notes":"test payment",
"paymentRefund":[
{
"id":"546",
"amount":"15.10",
"createdAt":{
"date":"2019-05-06 19:31:04.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"paymentStatus":{
"id":"2",
"name":"Received"
},
"notes":"test refund"
}
],
"paymentStatus":{
"id":"2",
"name":"Received"
},
"createdAt":{
"date":"2019-05-06 19:30:50.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"lastModifiedAt":{
"date":"2019-05-06 19:30:50.000000",
"timezone_type":"3",
"timezone":"UTC"
}
}
],
"host":"42"
}
Sends information on the invoice and line items for a reservation including the reservation ID and host ID associated with the invoice, due date, balance status, tax rate, item ID, item number, product or service, description, and amount.
Rates, Availability, and Stay Information
Sends information on calendar information including range status weekday, weekend, minimum, maximum night stay information as well as range status such as blocked and reason. The associated property ID, host ID, and property name is also sent along in the associated string.
Reservations
// Here is an example of a reservation payload:
{
"id":"88",
"uid":"59090830756055-22006513",
"reservationNumber":"DXJP5P",
"guestCount":"1",
"notes":"hi",
"invoice":{
"id":"88",
"dueDate":{
"date":"2016-12-06 00:00:00.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"paid":"142.50",
"taxRate":"0.0500",
"invoiceItem":[
{
"id":"569",
"amount":"209.00",
"product":"Nightly Rental Charge",
"description":"#0 - the mansion"
},
{
"id":"570",
"amount":"40.00",
"product":"Long Stay Discount",
"description":"20.00% discount for a 1- to 7-night stay"
},
{
"id":"571",
"amount":"209.00",
"product":"Nightly Rental Charge",
"description":"#0 - the mansion"
},
{
"id":"2402",
"amount":"20.90",
"product":"Cleaning Fee",
"description":"Covers the cost of cleaning the rental"
}
],
"balance":"276.35",
"balanceStatus":"overdue",
"total":"418.85",
"payment":[
{
"id":"122",
"amount":"442.50",
"paymentRefund":[
{
"id":"12",
"amount":"442.50",
"createdAt":{
"date":"2016-12-05 22:27:30.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"paymentStatus":{
"id":"2",
"name":"Received"
},
"notes":"overpayment"
}
],
"paymentStatus":{
"id":"2",
"name":"Received"
},
"createdAt":{
"date":"2016-12-05 22:11:50.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"lastModifiedAt":{
"date":"2016-12-05 22:11:50.000000",
"timezone_type":"3",
"timezone":"UTC"
}
},
]
},
"property":{
"id":"1535",
"name":"the mansion1"
},
"startAt":{
"date":"2016-12-12 00:00:00.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"endAt":{
"date":"2016-12-13 00:00:00.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"securityDeposit":"80.00",
"lengthOfStayNights":"2",
"scheduledCheckoutDate":{
"date":"2016-12-14 00:00:00.000000",
"timezone_type":"3",
"timezone":"UTC"
},
"guest":{
"id":"23",
"firstName":"Vincent",
"lastName":"Holt",
"address":"",
"city":"",
"postalCode":"",
"email":"[email protected]",
"phone":"+1 801-661-7855",
"country":{
"id":"US",
"name":"United States"
},
"state":{
"id":"3603",
"name":"Utah"
},
"language":{
"id":"1",
"name":"English"
}
},
"bookingOrigin":{
"id":"1",
"name":"Lodgable"
},
"bookingStatus":{
"id":"4",
"name":"Checked Out"
},
"cancellationPolicies":[
{
"id":"15",
"withinDays":"1",
"amount":"110",
"active":"0"
}
],
"currency":{
"id":"25",
"name":"US Dollars"
},
"host":"42"
}
Sends information on reservation information including the host ID, reservation ID, number, booking origin ID, booking status, balance status, security deposit amount, length of stay, cancellation policy amount, LSD amount, guest count, invoice items, start/end date, scheduled checkout date, associated property ID and name. Invoice item info sent includes the due date, tax rate, item ID, item number, product or service, description and cost. Standard guest information is also sent over in the payload such as the first name, last name, guest ID, street address, city, state, country, postal code, phone number, email, and language.
Property Status Updates
// Here is an example of a property status update payload:
{
"id": 1500,
"host": 100,
"status": {
"id": 1,
"name": "Active"
},
"message": "Property status changed"
}
Send information on property status changes including the host ID, property ID, a message, status ID and name.
Filtering
Filtering is accomplished by passing query parameters to the endpoint. For example, to pull all of the reservations created since July 4th, 2018 3:45 PM you could use:
/api/v2/reservation?filter%5B0%5D%5Bfield%5D=createdAt&filter%5B0%5D%5Btype%5D=gte&filter%5B0%5D%5Bformat%5D=Y-m-d+H%3Ai&filter%5B0%5D%5Bvalue%5D=2018-07-04+15%3A45
Let's checkout how this is made in Javascript and PHP to simplify it a bit ->
// Using angularjs's $http service
$http(
{
method: "GET",
url: "https://app.lodgable.com/api/v2/reservation",
data: {
"filter":[
{
"field": "createdAt",
"type": "gte",
"format": "Y-m-d H:i",
"value": "2018-07-04 15:45"
}
]
}
}
)
// In the background this encodes the data structure for inclusion as a query string
<?php
$data = [
'filter' => [
[
'field' => 'createdAt',
'type' => 'gte',
'format' => 'Y-m-d H:i',
'value' => '2018-07-04 15:45'
]
]
];
echo http_build_query($data);
// filter%5B0%5D%5Bfield%5D=createdAt&filter%5B0%5D%5Btype%5D=gte&filter%5B0%5D%5Bformat%5D=Y-m-d+H%3Ai&filter%5B0%5D%5Bvalue%5D=2018-07-04+15%3A45
Here is another example on how to filter by guest ID, in this example we pull all of the reservations with a guest ID of 23:
/api/v2/reservation?filter%5B0%5D%5Bconditions%5D=&filter%5B0%5D%5Bfield%5D=guest&filter%5B0%5D%5Btype%5D=innerjoin&filter%5B0%5D%5Bwhere%5D=&filter%5B0%5D%5Balias%5D=g&filter%5B0%5D%5Bvalue%5D=&filter%5B1%5D%5Bconditions%5D=&filter%5B1%5D%5Bfield%5D=id&filter%5B1%5D%5Btype%5D=eq&filter%5B1%5D%5Bwhere%5D=&filter%5B1%5D%5Balias%5D=g&filter%5B1%5D%5Bvalue%5D=23&order-by%5B0%5D%5Bfield%5D=startAt&order-by%5B0%5D%5Btype%5D=field&order-by%5B0%5D%5Bdirection%5D=asc
Let's checkout how this is made in Javascript and PHP to simplify it a bit ->
// Using angularjs's $http service
$http(
{
method: "GET",
url: "https://app.lodgable.com/api/v2/reservation",
data: {
"filter":[
{
"field": "guest",
"type": "innerjoin",
"alias": "g"
}
{
"field": "id",
"type": "field",
"value": "23"
}
]
}
}
)
<?php
$data = [
'filter' => [
[
'field' => 'guest',
'type' => 'innerjoin',
'alias' => 'g',
]
[
'field' => 'id',
'type' => 'field',
'value' => '23'
]
]
];
echo http_build_query($data);
// filter%5B0%5D%5Bconditions%5D=&filter%5B0%5D%5Bfield%5D=guest&filter%5B0%5D%5Btype%5D=innerjoin&filter%5B0%5D%5Bwhere%5D=&filter%5B0%5D%5Balias%5D=g&filter%5B0%5D%5Bvalue%5D=&filter%5B1%5D%5Bconditions%5D=&filter%5B1%5D%5Bfield%5D=id&filter%5B1%5D%5Btype%5D=eq&filter%5B1%5D%5Bwhere%5D=&filter%5B1%5D%5Balias%5D=g&filter%5B1%5D%5Bvalue%5D=23&order-by%5B0%5D%5Bfield%5D=startAt&order-by%5B0%5D%5Btype%5D=field&order-by%5B0%5D%5Bdirection%5D=asc
Here is an example on how to filter a booking origin by name, in this example we pull all of the booking origin names in that start with the letter 'A':
/api/v2/booking-origin?filter%5B0%5D%5Bconditions%5D=&filter%5B0%5D%5Bfield%5D=name&filter%5B0%5D%5Btype%5D=like&filter%5B0%5D%5Bwhere%5D=&filter%5B0%5D%5Bvalue%5D=A%
Let's checkout how this is made in Javascript and PHP to simplify it a bit ->
// Using angularjs's $http service
$http(
{
method: "GET",
url: "https://app.lodgable.com/api/v2/booking-origin",
data: {
"filter":[
{
"field": "name",
"type": "eq",
"value": "A"
}
]
}
}
)
<?php
$data = [
'filter' => [
[
'field' => 'name',
'type' => 'eq',
'value' => 'A',
]
]
];
echo http_build_query($data);
// filter%5B0%5D%5Bconditions%5D=&filter%5B0%5D%5Bfield%5D=name&filter%5B0%5D%5Btype%5D=like&filter%5B0%5D%5Bwhere%5D=&filter%5B0%5D%5Bvalue%5D=A%
Sorting
Sorting is accomplished by passing query parameters to the endpoint. For example, to sort booking origins by alphabetical order you could use:
/api/v2/booking-origin?order-by%5B0%5D%5Bfield%5D=name&order-by%5B0%5D%5Btype%5D=field&order-by%5B0%5D%5Bdirection%5D=asc
Let's checkout how this is made in Javascript and PHP to simplify it a bit ->
// Using angularjs's $http service
$http(
{
method: "GET",
url: "https://app.lodgable.com/api/v2/booking-origin",
data: {
"order-by":[
{
"field": "name",
"type": "field",
"direction": "asc"
}
]
}
}
)
<?php
$data = [
'order-by' => [
[
'field' => 'name',
'type' => 'field',
'direction' => 'asc',
]
]
];
echo http_build_query($data);
// order-by%5B0%5D%5Bfield%5D=name&order-by%5B0%5D%5Btype%5D=field&order-by%5B0%5D%5Bdirection%5D=asc
Errors
The Lodgable API uses the following error codes:
Error Code | Name | Meaning |
---|---|---|
400 | Bad Request | Something that you sent up does not quite jive with what we expected |
401 | Unauthorized | Did you provide an access token? Is it still good or does it need refreshed? |
403 | Forbidden | The access token you provided does not have permission to access the requested resource |
404 | Not Found | The API could not locate the requested information |
405 | Method Not Allowed | The API does not allow the provided HTTP method on the requested resource |
406 | Not Acceptable | Check your Accept HTTP header. It may be set to a value the API cannot provide |
409 | Conflict | Indicates that the request could not be processed because of conflict in the request, such as an edit conflict between multiple simultaneous updates |
410 | Gone | The requested resource has been removed |
415 | Unsupported Media Type | The request entity has a media type which the server or resource does not support. For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format |
422 | Unprocessable Entity | The request was well-formed but was unable to be followed due to semantic errors. Check your payload |
423 | Locked | The resource that is being accessed is locked |
424 | Failed Dependency | The request failed because it depended on another request and that request failed |
429 | Too Many Requests | The user has sent too many requests in a given amount of time |
500 | Internal Server Error | A generic error message, given when an unexpected condition was encountered and no more specific message is suitable |
501 | Not Implemented | The server either does not recognize the request method, or it lacks the ability to fulfil the request |
503 | Service Unavailable | The server is currently unavailable (because it is overloaded or down for maintenance). Generally, this is a temporary state |