Getting Started
Start using the Alpinebits-Gateway API
- Version: 1.0
- Author: Thomas Eccheli
- Created: 5. February, 2024
- Updated: 5. May, 2026
Authentication
In order to use the API-Endpoint, an authentication is required:
A basic username:password authentication method is implemented throughout the endpoint. The credentials need to be provided for every HTTP-Request in form of a Base64-encoded Authorization-Header.
Please note, that your username has access to one single property.
If you require credentials, feel free to contact our support: [email protected]
Endpoint
Following the endpoint where you can send all your requests to:
https://alpinebits-gateway.ando.cloud/api/v1
The current API-Version is v1.
Request structure
Requests can be sent with the methods GET and POST. Based on the method and the function, some parameters could be additionally sent with the request.
- In case of a GET request, these parameters have to be sent as query parameters with the url
- In case of a POST request, the parameters need to be sent in the request-body and in the JSON-Format. In this case the Content-Type Header needs to be set to application/json
Any mandatory or optional parameters are specified in the single function details below.
Response structure
Successful response
Responses are always returned in the JSON-Format.
By default, all successful responses include a JSON-Object payload a success and a data value. The success value determines the result of the response, while the data value represents the actual response-data.
The data value could be either an object or an array, depending on the requested function. Please find more information in the single function below. The HTTP-Code is 200.
This is how a successful response looks like:
{
"success": true,
"data": [...]
}Unsuccessful response
In case of an unsuccessful response, value of the success variable will be false while the data variable will be replaced by the error variable. This value rappresents a short description of the error. Moreover, the response HTTP-Code will be returned accordingly (400, 401, ...).
This is how an unsuccessful response looks like:
{
"success": false,
"error": '...'
}
Different error messages are returned according to the requested function. All possible error messages are described below.
Functions
Interact with the Alpinebits-Gateway API
syncRoomCapacity GET
This request returns the current inventory (number of rooms) for every roomcategory in the system.
| Parameter | Mandatory / Optional | Description | Format |
|---|---|---|---|
| from | optional | The start date to apply the filter on (included) | YYYY-MM-DD |
| until | optional | The end date (included) to apply the filter on | YYYY-MM-DD |
| categories | optional | A comma separated list of categorycodes to be included in the query | String,String,... |
Succesful request example
GET https://alpinebits-gateway.ando.cloud/api/v1/syncRoomCapacity?from=2024-02-01&until=2024-02-10&categories=EZ,DZ
HTTP/1.1 200
Content-Type: "application-json; charset=utf-8"
{
"success": true,
"data": [
{
"day": "2024-02-01",
"asa_roomcat_code": "EZ",
"effective_capacity": "3",
"category_roomcount": "1",
"category_occupancyrate": "0.00",
"total_occupancyrate": "50.00"
},
{
"day": "2024-02-01",
"asa_roomcat_code": "DZ",
"effective_capacity": "1",
"category_roomcount": "3",
"category_occupancyrate": "66.67",
"total_occupancyrate": "50.00"
},
...
]
}
If no start or until date is provided, the default timespan is 30 days starting from today.
Please also note, that for every single combination of day and asa_roomcat_code, a single row will be returned.
syncRate GET
This request returns the roomprices for every category and rateplan in the system.
| Parameter | Mandatory / Optional | Description | Format |
|---|---|---|---|
| from | optional | The start date to apply the filter on (included) | YYYY-MM-DD |
| until | optional | The end date (included) to apply the filter on | YYYY-MM-DD |
| categories | optional | A comma separated list of categorycodes to be included in the query | String,String,... |
| rateplans | optional | A comma separated list of rateplans to be included in the query | String,String,... |
Succesful request example
GET https://alpinebits-gateway.ando.cloud/api/v1/syncRate?from=2024-02-01&until=2024-02-10&categories=EZ,DZ&rateplans=STD_BB
HTTP/1.1 200
Content-Type: "application-json; charset=utf-8"
{
"success": true,
"data": [
{
"day": "2024-02-01",
"rate": 80,
"asa_roomcat_code": "EZ",
"asa_rate_code": "STD_BB",
"room_type": "EZ",
"change_datetime": "2024-01-28T10:28:02.048Z"
},
{
"day": "2024-02-01",
"rate": 110,
"asa_roomcat_code": "DZ",
"asa_rate_code": "STD_BB",
"room_type": "EZ",
"change_datetime": "2024-01-28T10:28:02.029Z"
},
...
]
}
If no start or until date is provided, the default timespan is 30 days starting from today.
Please also note, that for every single combination of day, asa_roomcat_code, asa_rate_code and room_type, a single row will be returned.
It is very important to notice, that the value 0 has to be interpreted as not available. The value 0 does not mean that the cost is free.
syncAvailability GET
This request returns the status of a single roomcategory for every single day.
| Parameter | Mandatory / Optional | Description | Format |
|---|---|---|---|
| from | optional | The start date to apply the filter on (included) | YYYY-MM-DD |
| until | optional | The end date (included) to apply the filter on | YYYY-MM-DD |
| categories | optional | A comma separated list of categorycodes to be included in the query | String,String,... |
| rateplans | optional | A comma separated list of rateplans to be included in the query | String,String,... |
Succesful request example
GET https://alpinebits-gateway.ando.cloud/api/v1/syncAvailability?from=2024-02-01&until=2024-02-10&categories=EZ,DZ&rateplans=STD_BB
HTTP/1.1 200
Content-Type: "application-json; charset=utf-8"
{
"success": true,
"data": [
{
"day": "2024-02-01",
"asa_roomcat_code": "DZ",
"asa_rate_code": "2TAGE",
"availability_id": 1,
"change_datetime": "2024-02-06T10:23:29.886Z"
},
{
"day": "2024-02-01",
"asa_roomcat_code": "DZ",
"asa_rate_code": "STD_BB",
"availability_id": 1,
"change_datetime": "2024-02-06T10:23:29.717Z"
},
{
"day": "2024-02-01",
"asa_roomcat_code": "EZ",
"asa_rate_code": "2TAGE",
"availability_id": 1,
"change_datetime": "2024-02-06T10:23:29.871Z"
},
{
"day": "2024-02-01",
"asa_roomcat_code": "EZ",
"asa_rate_code": "STD_BB",
"availability_id": 1,
"change_datetime": "2024-02-06T10:23:29.693Z"
},
...
]
}
If no start or until date is provided, the default timespan is 30 days starting from today.
Please also note, that for every single combination of day, asa_roomcat_code and asa_rate_code, a single row will be returned.
sendReservation POST
Use this request to send a new reservation through the system.
| Parameter | Mandatory / Optional | Description | Format | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| status | mandatory | The current status / type of the reservation (request or reservation) | Either 'reservation' or 'request' | ||||||||||||||
| externalid | optional | The own id to be attached to this request / reservation. If not provided, an internal id will be used instead. | [^A-Za-z0-9] - All other characters will be removed | ||||||||||||||
| from | mandatory | The start (checkin) date for the reservation | YYYY-MM-DD | ||||||||||||||
| until | mandatory | The end (checkout) date for the reservation | YYYY-MM-DD | ||||||||||||||
| guest | mandatory | An object containing primary guest's information | Object {} | ||||||||||||||
| - language | optional | The guest's main language | Valid ISO 639 2-letter language code ("de", "en", "it", ...) | ||||||||||||||
| - title | optional | The guest's salutation (Anrede). Example: Mr. / Ms., Family, ... | String | ||||||||||||||
| - nametitle | optional | The guest's title (Titel). Example: Dr. | String | ||||||||||||||
| - firstname | optional | The guest's first name | String | ||||||||||||||
| - lastname | mandatory | The guest's last name | String | ||||||||||||||
| - gender | optional | The guest's gender (if specified) | String("m", "f") | ||||||||||||||
| - birthdate | optional | The guest's birthdate | YYYY-MM-DD | ||||||||||||||
| - address | optional | The guest's address | String | ||||||||||||||
| - city | optional | The guest's city | String | ||||||||||||||
| - zipcode | optional | The guest's city | String | ||||||||||||||
| - country | optional | The guest's country | Valid ISO 3166 2-letter country code ("de", "gb", "fr", ...) | ||||||||||||||
| - telephone | optional | The guest's main telephone number | String | ||||||||||||||
| optional | The guest's main email address contact | String | |||||||||||||||
| - newsletter | optional | Indicates weather the guest would like to subscribe to the newsletter. This value is parsed only if an email address is provided as well (see email above). | Boolean | ||||||||||||||
| rooms | mandatory | Array containing the booked / requested rooms | Array [Object, Object, ...] | ||||||||||||||
| - category | optional / mandatory | The selected categorycode for the room. Optional if status is request. Mandatory if status is reservation | String | ||||||||||||||
| - rateplan | optional | The selected rateplan for the room | String | ||||||||||||||
| - total | optional | The total only for the selected room and for the entire stay, including fees and taxes. Decimals separated by a dot (.). This value is will be considered only if the rateplan is sent too. | Float | ||||||||||||||
| - occupants | mandatory | Object containing information about the occupants | Object | ||||||||||||||
| adults | optional / mandatory | The number of adults in the room (aged 18+). Can be 0 if children > 0 | Integer | ||||||||||||||
| children | optional / mandatory | Array containing the ages of the children in the room (can be empty if adults > 0) | Array [Integer, Integer, ...] | ||||||||||||||
| comment | optional | Comment attached to the reservation | String | ||||||||||||||
| deposits | optional | Array of objects containing deposits, that can be used to indicate weather a specific (partial or full) amount has been already paid upfront by the guest. | Array [Object, Object, ...] | ||||||||||||||
| - type | mandatory | The type of the paid deposit. Values can be either card (for online or card payments) or banktransfer (for payments over bank wire) | String("card", "banktransfer") | ||||||||||||||
| - amount | mandatory | The amount that has been paid. Value must be positive (> 0). Decimals separated by a dot (.) | Float | ||||||||||||||
| services | optional | Array of services, which are booked together with the rooms | Array [Object, Object, ...] | ||||||||||||||
| - type | mandatory |
The type of the service. Value can be one of the following:
|
String("activity", "spa", "food", "beverage", "board", "supplement", "touristtax", "transport", "other") | ||||||||||||||
|
Please note the following remarks
|
|||||||||||||||||
| - code | mandatory | The reference code of the item booked on the PMS | String | ||||||||||||||
| - pricing | mandatory |
Indicates how a service is priced in relation to the quantity. Value can be one of the following:
|
String("per_stay", "per_person", "per_night", "per_person_per_night", "per_use") | ||||||||||||||
| - quantity | mandatory | Indicates the quantity of the booked services. Also serves as the number of persons/nights when pricing is set per person or per person per night. Value must be >= 1 | Integer | ||||||||||||||
| - inclusive | mandatory | Indicates weather the service is already included in the room rate | Boolean | ||||||||||||||
| - total | mandatory | This value represents the total cost for the service (already multiplied by quantity). Value must be >= 0. Decimals separated by a dot (.) | Float | ||||||||||||||
| - description | mandatory | The description for this servicebooking | String | ||||||||||||||
| utm_source | optional | Code that specifies the source of the request/reservation (ex. google.com, newsletter, ...). ASA equivalent: Werbepartner | String | ||||||||||||||
| utm_medium | optional | Code that specifies the used medium for booking (ex. cpc, email, referral). ASA equivalent: Werbemedium | String | ||||||||||||||
| utm_campaign | optional | Code that specifies the Marketing Campaign (es. Newsletter April German Guests). ASA equivalent: Werbekampagne | String | ||||||||||||||
| total | optional | The grand total of the reservation, including fees, taxes and supplements. Decimals separated by a dot (.) | Float | ||||||||||||||
| forceavailability | optional | If true, the verification of room and rate availability will be entirely skipped and the booking will be forced regardless. Be careful, as this could lead to overbookings. If false, the booking will be accepted only if room and rate availability is given. | Boolean (default false) | ||||||||||||||
Succesful request example
POST https://alpinebits-gateway.ando.cloud/api/v1/sendReservation
Content-Type: "application-json; charset=utf-8"
Body:
{
"status": "reservation",
"externalid": "BOOK2413",
"from": "2024-02-01",
"until": "2024-02-03",
"guest": {
"language": "de",
"firstname": "Max",
"lastname": "Mustermann",
"gender": "m",
"birthdate": "1980-06-15",
"address": "Landesstraße 14",
"city": "München",
"zipcode": "80538",
"country": "de",
"telephone": "+390123444555",
"email": "[email protected]"
},
"rooms": [{
"category": "SUITE",
"rateplan": "STD_BB",
"occupants": {
"adults": 2,
"children": [7]
},
"total": 580.00
}],
"comment": "A room with a nice view please.",
"deposits": [{
"type": "card",
"amount": 120.00
}],
"services": [{
"type": "beverage",
"code": "COLA",
"pricing": "per_use",
"quantity": 1,
"inclusive": false,
"total": "3.50",
"description": "Coca Cola"
}],
"utm_source": "google.com",
"utm_medium": "referral",
"utm_campaign": "Newsletter April",
"total": 580.00,
"forceavailability": "false"
}
HTTP/1.1 200
Content-Type: "application-json; charset=utf-8"
{
"success": true,
"data": {
"id": "114",
"externalid": "BOOK2413"
}
}
In case of successful response, the (internal) id and the external id of the reservation (if provided) are returned.
sendRequestForm POST
Use this request to send a new booking request through a HTML Form on your website. Please note that no authentication is required for this request.
The expected Content-Type for this request can be either application/json or application/x-www-form-urlencoded (ideal for direct embedding in own website).
| Parameter | Mandatory / Optional | Description | Format |
|---|---|---|---|
| propertykey | mandatory | The propertykey provided by us. This value must be present. | String |
| externalid | optional | The own id to be attached to this request / reservation. If not provided, an internal id will be used instead. | [^A-Za-z0-9] - All other characters will be removed |
| from | mandatory | The start (checkin) date for the reservation | YYYY-MM-DD |
| until | mandatory | The end (checkout) date for the reservation | YYYY-MM-DD |
| guest_language | optional | The guest's main language | Valid ISO 639 2-letter language code ("de", "en", "it", ...) |
| guest_title | optional | The guest's salutation (Anrede). Example: Mr. / Ms., Family, ... | String |
| guest_nametitle | optional | The guest's title (Titel). Example: Dr. | String |
| guest_firstname | optional | The guest's first name | String |
| guest_lastname | mandatory | The guest's last name | String |
| guest_gender | optional | The guest's gender (if specified) | String("m", "f") |
| guest_birthdate | optional | The guest's birthdate | YYYY-MM-DD |
| guest_address | optional | The guest's address | String |
| guest_city | optional | The guest's city | String |
| guest_zipcode | optional | The guest's city | String |
| guest_country | optional | The guest's country | Valid ISO 3166 2-letter country code ("de", "gb", "fr", ...) |
| guest_telephone | optional | The guest's main telephone number | String |
| guest_email | optional | The guest's main email address contact | String |
| guest_newsletter | optional | Indicates weather the guest would like to subscribe to the newsletter. This value is parsed only if an email address is provided as well (see guest_email above). | Boolean |
|
The following fields can be dynamically added based on how many rooms the guest is requesting. The variable R represents the number of room in the request and the variable C the number of the child in the room R. Replace R and C with the number of rooms and children in your form. |
|||
| room_R_category | optional | The selected categorycode for the room | String |
| room_R_rateplan | optional | The selected rateplan for the room R | String |
| room_R_mealplan | optional | The selected mealplan (treatment) for the room R. If a rateplan is provided, this value will be ignored and the associated mealplancode of the rateplan will be used instead. | One of the following:
|
| room_R_total | optional | The total only for the selected room R and for the entire stay, including fees and taxes. Decimals separated by a dot (.). This value is will be considered only if the rateplan is sent too. | Float |
| room_R_adults | optional / mandatory | The number of adults in the room R (aged 18+). Can be 0 if children > 0 | Integer |
| room_R_child_C_age | optional / mandatory | The age of the child C in room R (can be empty if adults > 0) | Integer |
|
Please note that the number of rooms (R) and the number of children (C) in each room must always start at 1. There is no max. limit for rooms and children as long as they are counted incrementally. |
|||
| comment | optional | Comment attached to the reservation | String |
| utm_source | optional | Code that specifies the source of the request/reservation (ex. google.com, newsletter, ...). ASA equivalent: Werbepartner | String |
| utm_medium | optional | Code that specifies the used medium for booking (ex. cpc, email, referral). ASA equivalent: Werbemedium | String |
| utm_campaign | optional | Code that specifies the Marketing Campaign (es. Newsletter April German Guests). ASA equivalent: Werbekampagne | String |
| total | optional | The grand total of the reservation, including fees, taxes and supplements. Decimals separated by a dot (.) | Float |
Succesful request example
POST https://alpinebits-gateway.ando.cloud/api/v1/sendRequestForm
Content-Type: "application/x-www-form-urlencoded; charset=utf-8"
Form data:
"propertykey": "abc123"
"externalid": "BOOK2413"
"from": "2024-02-01"
"until": "2024-02-03"
"guest_language": "de"
"guest_firstname": "Max"
"guest_lastname": "Mustermann"
"guest_gender": "m"
"guest_birthdate": "1980-06-15"
"guest_address": "Landesstraße 14"
"guest_city": "München"
"guest_zipcode": "80538"
"guest_country": "de"
"guest_telephone": "+390123444555"
"guest_email": "[email protected]"
"room_1_category": "SUITE"
"room_1_rateplan": "STD_BB"
"room_1_total": 580.00
"room_1_adults": 2
"room_1_child_1_age": 7
"room_1_child_2_age": 4
"comment": "A room with a nice view please."
"utm_source": "google.com"
"utm_medium": "referral"
"utm_campaign": "Newsletter April"
"total": 580.00
HTTP/1.1 200
Content-Type: "application-json; charset=utf-8"
{
"success": true,
"data": {
"id": "114",
"externalid": "BOOK2413"
}
}
In case of successful response, the (internal) id and the external id of the reservation (if provided) are returned.
getAvailability GET
Use this request to retreive availability and rates for specific dates.
Query parameters
| Parameter | Mandatory / Optional | Description | Format |
|---|---|---|---|
| room_R_from | mandatory | The start (checkin) date for the requested stay for the room R | YYYY-MM-DD |
| room_R_until | mandatory | The end (checkout) date for the requested stay for the room R | YYYY-MM-DD |
| room_R_adults | optional | The number of adults in the room R (aged 18+) | Integer |
| room_R_child_C_age | optional | The age of the child C in room R (aged 0-17; can be empty if adults > 0) | Integer |
Response
| Object | Description | Format |
|---|---|---|
| requestedrooms | Array containing the requested rooms | Array of objects |
| - roomid | The id of the requested room | Integer |
| - from | The checkin date for the requested room | YYYY-MM-DD |
| - until | The checkout date for the requested room | YYYY-MM-DD |
| - adults | The amount of adults in the requested room | Integer |
| - children | Array containing the ages of the children in the requested room | Array of integers |
| # categories | Array containing all the available categories in the requested timespan | Array of objects |
| - categorycode | The code of the category | String |
| - minoccupancy | The minimum occupancy of the room | Integer |
| - maxoccupancy | The maximum occupancy of the room | Integer |
| # availablebycount | Object containing availabilities based on the free-rooms-by-category method | Object |
| - availablecount | The amount of free rooms without considering room changes | Integer |
| # availablerateplans | The available rateplans for this category | Array |
| - rateplancode | The rateplancode | String |
| - mealplancode | The mealplancode | One of the following:
|
| - total | The total computed cost for this room for all occupants | Float |
| # dailyrates | A daily breakdown of the rates | String |
| - date | The date | YYYY-MM-DD |
| - rate | The applied rate for the date | Float |
| # availablethroughout | Object containing availabilities based on the throughout-available-rooms method | Object |
| # availablerooms | Array containing the single roomcodes available throughout the requested stay | Array |
| - roomcode | The roomcode of the specific room | String |
| # availablerateplans | The available rateplans for this category | Array |
| - rateplancode | The rateplancode | String |
| - mealplancode | The mealplancode | One of the following:
|
| - total | The total computed cost for this room for all occupants | Float |
| # dailyrates | A daily breakdown of the rates | String |
| - date | The date | YYYY-MM-DD |
| - rate | The applied rate for the date | Float |
Succesful request example
GET https://alpinebits-gateway.ando.cloud/api/v1/getAvailability?room_1_from=2024-05-10&room_1_until=2024-05-12&room_1_adults=2
HTTP/1.1 200
Content-Type: "application-json; charset=utf-8"
{
"success": true,
"data": {
"requestedrooms": [{
"roomid": 1,
"from": "2024-05-10",
"until": "2024-05-12",
"adults": 2,
"children": [],
"categories": [{
"categorycode": "DZ",
"categorytitle_de": "Doppelzimmer",
"categorytitle_it": "Camera doppia",
"categorytitle_en": "Double Room",
"minoccupancy": 1,
"maxoccupancy": 3,
"availablebycount": {
"availablecount": 2,
"availablerateplans": [{
"rateplancode": "STD_BB",
"rateplantitle_de": "Standard Rate",
"rateplantitle_en": "Standard Rate",
"rateplantitle_it": "Standard Rate",
"mealplancode": "BB",
"total": 220,
"dailyrates": [{
"date": "2024-05-10",
"rate": 110
}, {
"date": "2024-05-11",
"rate": 110
}]
}]
},
"availablethroughout": {
"availablerooms": [{
"roomcode": "208"
}],
"availablerateplans": [{
"rateplancode": "STD_BB",
"rateplantitle_de": "Standard Rate",
"rateplantitle_en": "Standard Rate",
"rateplantitle_it": "Standard Rate",
"mealplancode": "BB",
"total": 220,
"dailyrates": [{
"date": "2024-05-10",
"rate": 110
}, {
"date": "2024-05-11",
"rate": 110
}]
}]
}
}]
}]
}
}
Please note that all returned rates include taxes; The city tax is not included.