Intro
De api houdt zich waar mogelijk aan de JSON-API standaard.
Als er in deze documentatie wordt gesproken over boeking systemen, bedoelen we daar de externe systemen van bijvoorbeeld RCS, Tibos of een ander boeking systeem mee.
Taal
De taal kan opgegeven worden door een ISO 639-1 taal code mee te sturen met het request. Hiervoor moet de lng
GET variable gevuld worden.
Beschikbare talen:
Code | Naam |
---|---|
nl | Nederlands |
en | Engels |
de | Duits |
fr | Frans |
Versies
Elk API endpoint kan 1 of meerdere versies ondersteunen. Indien een endpoint meerdere versies ondersteund zal dit in de documentatie van het endpoint vermeld staan. De versie dient te worden opgenomen in de url. Bijvoorbeeld /v1. Indien er bij het endpoint geen versie informatie aanwezig is, gebruik dan altijd v1.
Relationships en includes
Objecten kunnen relaties hebben met andere objecten. Denk aan het booking object dat een relatie heeft met het level object.
Deze relaties zullen in de JSON response van het object opgenomen worden binnen de relationships
. Elke relatie heeft daarbij een type
en id
.
Aan de hand van deze 2 gegevens kunnen de overige gegevens van de relatie opgezocht worden in de lijst included
. Deze lijst bevindt zich ook binnen de api response indien er relaties aanwezig zijn.
Access
Om toegang te krijgen tot de api heeft u een API access token nodig. Deze kunt u aanvragen bij Holiday Media.
De access token stuurt u vervolgens als Authorization
header mee bij elk API request.
Voorbeeld: Authorization: 1234567890abcdefghijklmnopqrstuvwxyz
Arrivals
Het arrivals endpoint geeft de mogelijke periodes terug. Dit endpoint kan o.a. gebruikt worden om een kalender te vullen.
Query parameters
Attribute | Type | Default | Toelichting |
---|---|---|---|
levels | array | alle levels | De level idents waarvan de arrivals opgehaald moeten worden. Format: levels[]=x&levels[]=y. Bij een multipark moet het subpark resort ID van het level id geplaats worden. Format xxx_xxxxxxx |
criteria | array | geen | Kenmerken waarop de levels gefilterd worden. Format criteria[]=x&criteria[]=y om alleen levels te gebruiken die aan kenmerk x en y gekoppeld zijn. |
nights | array | alle nachten | De nachten die per aankomst teruggegeven worden. Format nights[]=7&nights[]=8 om alleen periodes van 7 en 8 nachten op te halen. |
durations | array | alle durations | De durations die per aankomst teruggegeven worden. Format durations[]=week&durations[]=weekend om alleen week en weekend periods op te halen. |
startdate-year | integer | zie toelichting | Het jaar waarvoor de arrivals opgehaald worden. Alleen mogelijk in combinatie met startdate-month . Indien geen startdate-year is opgegegeven wordt het huidige jaar gebruikt. Indien zowel startdate-year als startdate-month leeg zijn wordt alles van de opgegeven level(s) opgehaald. |
startdate-month | integer | geen | De maand waarvoor de arrivals opgehaald worden. |
startdate-use-nearest | boolean | false | Arrivals worden opgehaald vanaf de eerst mogelijke periode. Bijvoorbeeld vanaf overmogen als er eerder niets mogelijk is. Niet mogelijk icm met startdate-year en startdate-month |
amount-of-months | integer | 1 | Het aantal maanden. Als deze niet opgegeven wordt, worden de arrivals opgehaald voor de maand waarin de startdatum valt. |
show-all-periods | boolean | false | Indien deze true is zullen voor de opgevraagde periode alle dagen mogelijk zijn. Er zal dus niet gecontroleerd worden of de periode mogelijk is. |
live | boolean | false | Indien true en er is 1 level geselecteerd, zal in de response 2 extra velden toegevoegd worden. Het veld closed bevat de dagen dat het level gesloten is en het veld availabilities de dagen dat het level beschikbaar is. |
sub-resort | int | geen | Door een sub-resort ID op te geven wordt voor alle levels van dat sub-resort de periodes opgehaald. |
test-mode | string | geen | Dit is een test mode hash. Indien de hash geldig is zal eventuele ingestelde boekbare datum niet gebruikt worden. Dit betekend concreet dat er getest kan worden met periodes buiten de periodes die momenteel geboekt kunnen worden. |
Voorbeeld
curl https://api.holidayagent.nl/v1/resort/demo_park/arrivals?levels[]=432_1342 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"arrivals": [
{
"arrival": 1523224800,
"objecttypes": [
956326245
],
"date": "2018-04-09",
"stamp": "20180409",
"arrangement": false,
"discount": true,
"departures": [
{
"departure": 1523311200,
"date": "2018-04-10",
"stamp": "20180410",
"nights": "1",
"extended": false,
"amountAvailable": 54,
"prices": {
"price": 45.3,
"additionalPrice": 0,
"discountPrice": 0,
"totalPrice": 45.3
},
"requiredArrangementId": []
},
{
"departure": 1523397600,
"date": "2018-04-11",
"stamp": "20180411",
"nights": "2",
"extended": false,
"amountAvailable": 53,
"prices": {
"price": 54.3,
"additionalPrice": 0,
"discountPrice": 0,
"totalPrice": 54.3
},
"requiredArrangementId": []
}
],
"durations": [
"1",
"2",
],
"available": {
"duration": "2",
"departure": 1523397600,
"date": "2018-04-11",
"stamp": "20180411"
}
}
],
"durations": [
"1",
"2"
],
"DOM": "",
"levels": [
{
"ident": "1342",
"name": "Comfortplaats",
"persons": 6,
"pets": 0
}
]
}
Opvragen alle beschikbaarheden van 1 level van een multipark.
Availability
Availability
Het availability endpoint geeft per level aan wat de dichtsbijzijnde of goedkoopste beschikbare periode(s) zijn. Met onderstaande parameters kunnen de levels en de periodes gefilterd worden.
Query parameters
Attribute | Type | Default | Toelichting |
---|---|---|---|
levels | array | alle levels | De level idents waarvan de beschikbaarheid opgehaald moeten worden. Format: levels[]=x&levels[]=y. Bij een multipark moet het subpark resort ID voor het level id geplaatst worden. Format xxx_xxxxxxx |
sub-resort | integer | geen | Filter op levels van dit sub-resort. De sub-resort filter kan alleen gebruikt worden indien er levels opgevraagd worden van een park met sub-parken. |
startdate_from | date | geen | Zie toelichting hieronder. |
alternative_days | integer | geen | Zie toelichting hieronder. |
startdate_first | date | geen | Zie toelichting hieronder. |
startdate_last | date | geen | Zie toelichting hieronder. |
startdate-year | integer | huidige jaar | Zie toelichting hieronder. |
startdate-month | integer | geen | Zie toelichting hieronder. |
amount_adults | integer | 1 | Aantal volwassenen. |
amount_children | integer | 0 | Aantal kinderen. |
amount_pets | integer | 0 | Aantal huisdieren. |
amount_periods | integer | 1 | Het aantal periodes dat in de response opgenomen wordt per level. |
fixed_criteria | array | geen | Kenmerken waarop de levels gefilterd worden. Format fixed_criteria[]=x&fixed_criteria[]=y om alleen levels te gebruiken die aan kenmerk x en y gekoppeld zijn. |
durations | array | alle durations | Filter op durations als week, weekend, midweek, enz. Format durations[]=week&durations[]=weekend om alleen week en weekend periods op te halen. |
days_of_week | array | alle dagen | Filter op dag van de week. Alleen periodes met een aankomst op een van deze dagen zullen opgenomen worden in de response. Mogelijke waardes 1 (zondag) t/m 7 (zaterdag) of 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'. Voorbeeld days_of_week[]=2&days_of_week[]=6. |
alternative_durations | array | geen | De durations worden toegevoegd aan de duration filter. |
sorting | string | geen | Mogelijk optie: insideout of price . Met insideout worden alternatieve die het dicht bij de opgevraagde datum liggen als eerste gebruikt om tot een availability te komen. De price optie zal de goedkoopste periode eerst tonen. |
test-mode | string | geen | Dit is een test mode hash. Indien de hash geldig is zal eventuele ingestelde boekbare datum niet gebruikt worden. Dit betekend concreet dat er getest kan worden met periodes buiten de periodes die momenteel geboekt kunnen worden. |
includes | array | geen | Mogelijke optie: criteria_combinations . Hiermee worden per level de mogelijke kenmerk combinaties toegevoegd in de response. Indien de fixed_criteria parameter gebruikt wordt zullen de combinations automatisch in de response geplaatst worden. |
Toelichting startdate parameters
De eerst mogelijk aankomstdatum wordt bepaald a.d.h.v. een of meerdere startdate parameters. Er zijn 4 mogelijkheden:
- Indien
startdatum_from
gevuld is zal deze gebruikt worden. Met dealternative_days
parameter kan het aantal dagen rondom destartdate_from
opgegeven worden. Als de startdate_from 11 januari is en dealternative_days
is 3 dan zal er een availability met aankomstdag gezocht worden binnen de periode 8 januari t/m 14 januari. Startdate_first
enstartdate_last
worden gebruikt om de periode op te geven waarin de aankomstdag van de availability gezocht worden.Startdate_year
enstartdate_month
worden gebruikt om de maand aan te geven waarin de aankomstdag van de availability moet vallen- Dit is een fallback indien er geen of onvolledige startdate parameters opgegeven zijn. Er zal gezocht worden naar een availability met een aankomstdag ergens in de periode vanaf vandaag t/m 2 jaar in de toekomst.
Er vindt een controle plaatst of de periode binnen de boekbare periode van het park valt. Zo niet wordt de boekbare periode van het park gebruikt om de availabilty op te halen. Deze logica kan overgeslagen worden door een geldig test_mode
op te geven.
curl https://api.holidayagent.nl/v1/resort/demo_park/availability?levels[]=1342 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"response": {
"levels": [
{
"arrivals": [
{
"arrangement": false,
"arrival": 1541113200,
"date": "02-11-2018",
"departures": [
{
"additional": 0,
"amountAvailable": "12",
"arrangements": false,
"date": "05-11-2018",
"departure": 1541372400,
"discount": 0,
"discount-perc": "0.00",
"fdiscount": "0,00",
"fprice": "203,39",
"ftotal": "203,39",
"midweek": false,
"nights": "3",
"price": 203.39,
"total": 203.39,
"week": false,
"week_midweek": false,
"week_weekend": false,
"weekend": true
}
],
"discount": false,
"durations": [
"3"
]
}
],
"criteria": "",
"durations": [
"3"
],
"ident": "11",
"levelId": "1342",
"midweek": false,
"notices": {
"price": {
"text": "",
"translations": {
"nl": ""
}
}
},
"persons": 6,
"pets": 0,
"resort": "demo_park",
"resortId": 1,
"week": false,
"week_midweek": false,
"week_weekend": false,
"weekend": true
},
]
},
"status": "success"
}
Ophalen van de dichtstbijzijnde of goedkoopste periode(s) van een level
Period
Dit endpoint geeft html terug met daarin de gekozen periode, bijhorende prijs en eventuele korting.
Query parameters
Attribute | Type | Default | Toelichting |
---|---|---|---|
lng | string | en | De taal van de gebruiker |
sub-resort | integer | geen | Alleen levels van het opgegeven sub-resort kunnen worden opgehaald. Dit sub-resort filter kan alleen gebruikt worden indien er levels opgevraagd worden van een multipark met sub-parken. |
levels | array | geen | Het level ident waarvan periode opgehaald moeten worden. Hier moet altijd één level opgegeven worden. Format: levels[]=x. Bij een multipark moet het subpark resort ID voor het level id geplaatst worden. Format xxx_xxxxxxx |
arrival_date | date | geen | De aankomstdatum. |
nights | integer | geen | Aantal nachten. |
test-mode | string | geen | Dit is een test mode hash. Indien de hash geldig is zal eventuele ingestelde boekbare datum niet gebruikt worden. Dit betekend concreet dat er getest kan worden met periodes buiten de periodes die momenteel geboekt kunnen worden. |
curl https://api.holidayagent.nl/v1/resort/demo_park/availability/period?lng=nl&levels[]=3&arrival_date=2019-07-05&nights[]=7 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"response": {
"hmtl": "",
"html": "\r\n<div class=\"datepicker-period\">\r\n <div class=\"arrival\">\r\n aankomst: <span>05-07-2019</span>\r\n </div>\r\n\r\n <div class=\"period row\"\r\n data-booking-arrival=\"05-07-2019\"\r\n data-booking-departure=\"12-07-2019\"\r\n data-booking-duration=\"7\"\r\n data-booking-level=\"3\"\r\n data-booking-resort=\"demo_park\"\r\n data-booking-amount-available=\"170\"\r\n >\r\n <div class=\"departure col-3\">\r\n vertrek: <span>12-07-2019</span>\r\n </div>\r\n\r\n <div class=\"nrOfNights col-2\">\r\n 1 week </div>\r\n\r\n <div class=\"information col-2\">\r\n \r\n </div>\r\n\r\n <div class=\"total-price col-3\">\r\n <span class=\"price\"><span class=\"currency-sign\">€</span> 281,40</span>\r\n </div>\r\n\r\n <div class=\"button col-2\">\r\n <button type=\"button\">boek nu</button>\r\n </div>\r\n </div>\r\n</div>"
},
"status": "success",
"messages": {
"success": [],
"failure": []
}
}
Periods
Dit endpoint geeft de mogelijke vertrekdata als HTML terug voor één aankomstdatum.
Query parameters
Attribute | Type | Default | Toelichting |
---|---|---|---|
lng | string | en | De taal van de gebruiker |
sub-resort | integer | geen | Alleen levels van het opgegeven sub-resort kunnen worden opgehaald. Dit sub-resort filter kan alleen gebruikt worden indien er levels opgevraagd worden van een multipark met sub-parken. |
levels | array | geen | Het level ident waarvan beschikbaarheid opgehaald moeten worden. Hier moet altijd één level opgegeven worden. Format: levels[]=x. Bij een multipark moet het subpark resort ID voor het level id geplaatst worden. Format xxx_xxxxxxx |
startdate_from | date | geen | Voor deze aankomstdatum zullen de vertrekdata worden opgehaald. |
amount_adults | integer | 1 | Aantal volwassenen. |
amount_children | integer | 0 | Aantal kinderen. |
amount_pets | integer | 0 | Aantal huisdieren. |
test-mode | string | geen | Dit is een test mode hash. Indien de hash geldig is zal eventuele ingestelde boekbare datum niet gebruikt worden. Dit betekend concreet dat er getest kan worden met periodes buiten de periodes die momenteel geboekt kunnen worden. |
curl https://api.holidayagent.nl/v1/resort/demo_park/availability/periods?lng=nl&levels[]=1342&startdate_from=2019-04-19 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"response": {
"hmtl": "",
"html": "\r\n<div class=\"periods\">\r\n <div class=\"arrival\">\r\n Aankomst: <span>19-04-2019</span>\r\n </div>\r\n <div class=\"period row\"\r\n data-booking-arrival=\"19-04-2019\"\r\n data-booking-departure=\"23-04-2019\"\r\n data-booking-duration=\"4\"\r\n data-booking-level=\"1342\"\r\n data-booking-resort=\"demo_park\"\r\n data-booking-amount-available=\"7\"\r\n >\r\n <div class=\"departure col-3\">\r\n vertrek: <span>23-04-2019</span>\r\n </div>\r\n <div class=\"nrOfNights col-2\">\r\n <span class=\"period-duration\">\r\n \r\n <span>4</span> nachten </span>\r\n <span class=\"period-nights\" style=\"display: none;\">\r\n <span>4</span> nachten </span>\r\n </div>\r\n <div class=\"information col-2\">\r\n <div class=\"tipped right\" data-tipped=\"\"> </div>\r\n <div class=\"arrangement left\">Paas arrangement</div>\r\n </div>\r\n <div class=\"total-price col-3\">\r\n <span class=\"price\">€ 685,00</span>\r\n </div>\r\n <div class=\"button col-2\"><button>boek nu</button></div>\r\n </div>\r\n </div>"
},
"status": "success",
"messages": {
"success": [],
"failure": []
}
}
Map object availability
Dit endpoint geeft alle objecten voor de opgegeven levels terug. Per object wordt aangegeven of deze beschikbaar is en voldoet aan alle opgegeven kenmerken.
Query parameters
Attribute | Type | Default | Toelichting |
---|---|---|---|
lng | string | en | De taal van de gebruiker |
sub-resort | integer | geen | Alleen levels van het opgegeven sub-resort kunnen worden opgehaald. Dit sub-resort filter kan alleen gebruikt worden indien er levels opgevraagd worden van een multipark met sub-parken. |
levels | array | alle levels | De level idents waarvan de beschikbaarheid opgehaald moeten worden. Format: levels[]=x&levels[]=y. Bij een multipark moet het subpark resort ID voor het level id geplaatst worden. Format xxx_xxxxxxx |
startdate_from | date | geen | Zie toelichting bij het availability endpoint. |
alternative_days | integer | geen | Zie toelichting bij het availability endpoint. |
startdate_first | date | geen | Zie toelichting bij het availability endpoint. |
startdate_last | date | geen | Zie toelichting bij het availability endpoint. |
startdate-year | integer | huidige jaar | Zie toelichting bij het availability endpoint. |
startdate-month | integer | geen | Zie toelichting bij het availability endpoint. |
durations | array | alle durations | Filter op durations als week, weekend, midweek, enz. Format durations[]=week&durations[]=weekend om alleen week en weekend periods op te halen. |
test-mode | string | geen | Dit is een test mode hash. Indien de hash geldig is zal eventuele ingestelde boekbare datum niet gebruikt worden. Dit betekend concreet dat er getest kan worden met periodes buiten de periodes die momenteel geboekt kunnen worden. |
curl https://api.holidayagent.nl/v1/resort/demo_park/availability/map_objects?lng=nl&startdate_from=29-03-2019&durations[]=2 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"response": {
"locations": [
{
"id": "564725",
"ident": "3475",
"treeParentId": "564660",
"typeIdent": "292",
"isSelected": false,
"available": true,
"matchCriteria": true
},
{
"id": "564728",
"ident": "3478",
"treeParentId": "564665",
"typeIdent": "294",
"isSelected": false,
"available": true,
"matchCriteria": true
},
{
"id": "564730",
"ident": "3480",
"treeParentId": "564665",
"typeIdent": "294",
"isSelected": false,
"available": false,
"matchCriteria": true
},
{
"id": "564732",
"ident": "3482",
"treeParentId": "564665",
"typeIdent": "294",
"isSelected": false,
"available": true,
"matchCriteria": true
},
{
"id": "564734",
"ident": "3483",
"treeParentId": "564665",
"typeIdent": "294",
"isSelected": false,
"available": true,
"matchCriteria": true
},
{
"id": "564736",
"ident": "3484",
"treeParentId": "564665",
"typeIdent": "294",
"isSelected": false,
"available": true,
"matchCriteria": true
}
]
},
"status": "success",
"messages": {
"success": [],
"failure": []
}
}
Reservation
Reservation object
Het Reservation object bestaat uit onderstaande attributen.
Attribute | Toelichting |
---|---|
reservation_number | Het reserveringsnummer uit het boeking systeem. |
is_confirmed | Geeft aan of de booking succesvol doorgestuurd en bevestigd is door het boeking systeem. |
is_preferred | Geeft aan of het om een voorkeursboeking gaat waarbij de gast zelf een object gekozen heeft. |
guest_email | Het email-adres van de hoofd gast. |
language | De taal van de hoofd gast. |
arrival | De datum waarop de gasten aankomen (yyyy-mm-dd). |
departure | De datum waarop de gasten vertrekken (yyyy-mm-dd). |
nights | Het aantal nachten dat de gasten verblijven. |
total_price | De totale prijs van de booking. Inclusief kortingen, huur, gekozen artikelen, enz. |
pricerows | Een lijst met losse prijsregels. Per prijsregel wordt het boeking systeem ID (ident), naam, stukprijs, aantal en totaal prijs vermeld. |
guest_group | Het aantal gasten onderverdeeld in persoonscategorieëren. Mogelijke persoonscategorieëren zijn: adults, young_adults, children, babys en pets. |
Place
curl https://api.holidayagent.nl/v1/resort/<RESORT_SHORTNAME>/reservation/place?lng=nl -d '
{
"arrival_date": "2018-01-01",
"departure_date": "2018-01-05",
"object_type": 3,
"guest_group": {
"adults": 2,
"young_adults": 0,
"children": 0,
"babys": 1,
"pets": 1
},
"main_guest": {
"firstname": "John",
"surname": "Doe",
"letters": "J.D.",
"gender": "male",
"street": "Het Sterrenbeeld",
"housenumber": "15",
"housenumber_add": "B",
"zipcode": "5215 MK",
"city": "Den Bosch",
"country_code": "NL",
"email": "john.doe@holiday.nl",
"phone": "+31736271240",
"date_of_birth": "1970-01-01"
},
"extras": [
{
"id": "87",
"quantity": 2
},
{
"id": "insurance",
"quantity": 1
}
],
"channel_manager": "BOO142"
}' -X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"data": {
"type": "booking",
"id": "1234",
"attributes": {
"reservation_number": "5678",
"is_confirmed": true,
"is_preferred": false,
"guest_email": "john.doe@holiday.nl",
"language": "nl",
"arrival": "2018-01-01",
"departure": "2018-01-05",
"nights": 4,
"total_price": 120,
"pricerows": [
{
"ident": "rent",
"title": "Huur",
"price": 105,
"quantity": 1,
"total_price": 105
},
{
"ident": "1",
"title": "Overheid- milieuheffingen tp",
"price": 0,
"quantity": 1,
"total_price": 0
},
{
"ident": "13",
"title": "Borg douchesleutel",
"price": 15,
"quantity": 1,
"total_price": 15
},
{
"ident": "87",
"title": "Ontbijtmand x",
"price": 19.8,
"quantity": 2,
"total_price": 39.6
},
{
"ident": "insurance",
"title": "Annuleringsfonds",
"price": 23.98,
"quantity": 1,
"total_price": 23.98
}
],
"guest_group": {
"adults": 2,
"young_adults": 0,
"children": 0,
"babys": 1,
"pets": 1
}
},
"relationships": {
"level": {
"data": {
"type": "level",
"id": "3737"
}
},
"object": {
"data": {
"type": "level",
"id": "3776"
}
}
}
},
"included": [
{
"type": "level",
"id": "3737",
"attributes": {
"ident": "3",
"name": {
"nl": "Comfort plaats",
"en": "",
"de": "",
"fr": ""
}
}
},
{
"type": "level",
"id": "3776",
"attributes": {
"ident": "853",
"name": {
"nl": "Esdoorn",
"en": "",
"de": "",
"fr": ""
}
}
}
]
}
Dit endpoint maakt een nieuwe reservering aan binnen HolidayAgent. De reservering zal vervolgens doorgestuurd worden naar het reserveringssysteem van park.
Level
Level object
Een level is de accomodatie (object) of accomodatie categorie (object type). Het Level object bestaat uit onderstaande attributen.
Attribute | Toelichting |
---|---|
ident | ID afkomstig uit het boeking systeem. |
name | Naam van het level. |
description | Omschrijving van het level. |
price_information | Prijs informatie van het level. |
max_persons | Totale capaciteit van het level. |
max_adults | Maximaal aantal volwassenen. |
max_young_adults | Maximaal aantal jong volwassenen. |
max_children | Maximaal aantal kinderen. |
max_babies | Maximaal aantal babies. |
max_pets | Maximaal aantal huisdieren. |
criteria_combinations | Alle kenmerk combinaties die mogelijk zijn bij dit level. Optioneel via includes. |
level_type | We maken onderscheid tussen Object types en onderliggende objecten. |
map_locations | De locatie op de plattegrond. |
images | De gekoppelde afbeeldingen. Optioneel via includes. |
Includes
Deze includes kunnen worden toegevoegd aan het request als query parameter om extra level informatie op te vragen die standaard niet in de reponse wordt opgenomen.
Include | Toelichting |
---|---|
criteria_combinations | Zie toelichting bij level object. |
images | Zie toelichting bij level object. |
objects | Bij de object types zullen de gekoppeld objecten als relationshop toegevoegd worden. |
criteria | Bij de object types zullen de gekoppeld kenmerken als relationship toegevoegd worden. |
criteriaGroup | De kenmerkgroep waaraan een kenmerk gekoppeld is zullen toegevoegd worden aan de response. Zorg dat de criteria ook altijd als include aanwezig is in het request. |
Versies
Include | Toelichting |
---|---|
v1 | |
v2 | Het format van de API response is volledig aangepast. |
Alle object types
curl https://api.holidayagent.nl/v2/resort/<RESORT_SHORTNAME>/levels \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"data": [
{
"type": "level",
"id": "1234",
"attributes": {
"ident": "1",
"name": {
"nl": "Basis plaats",
"en": "",
"de": "",
"fr": ""
},
"description": {
"nl": "",
"en": "",
"de": "",
"fr": ""
},
"price_information": {
"nl": "",
"en": "",
"de": ""
},
"max_persons": 6,
"max_adults": 6,
"max_young_adults": 0,
"max_children": 0,
"max_babies": 0,
"max_pets": 0,
"criteria_combinations": null,
"level_type": "objecttype",
"map_locations": {
"lat": "",
"lng": "",
"x": "766",
"y": "485"
},
"images": []
},
"relationships": {
"resort": {
"data": {
"type": "resort",
"id": "651"
}
}
}
},
{
"type": "level",
"id": "5678",
"attributes": {
"ident": "2",
"name": {
"nl": "VerandaChalet (5-persoons)",
"en": "",
"de": "",
"fr": ""
},
"description": {
"nl": "Wil je zelf een plekje kiezen op de plattegrond? Klik dan op de button "Kies je eigen plekje", de extra kosten hiervoor bedragen € 15,00.",
"en": "",
"de": "",
"fr": ""
},
"price_information": {
"nl": "",
"de": "",
"en": ""
},
"max_persons": 5,
"max_adults": 5,
"max_young_adults": 0,
"max_children": 0,
"max_babies": 0,
"max_pets": 0,
"criteria_combinations": null,
"level_type": "objecttype",
"map_locations": {
"lat": "",
"lng": "",
"x": "786",
"y": "485"
},
"images": []
},
"relationships": {
"resort": {
"data": {
"type": "resort",
"id": "651"
}
}
}
}
],
"included": [
{
"type": "resort",
"id": "615",
"attributes": {
"short": "demo_park",
"name": "Demo park 1"
}
}
]
}
Dit endpoint geeft alle object types terug van een park.
Pbo
Bij het opvragen van de PBO zijn er 3 mogelijkheden waarop de PBO aankomstdatums opgebouwd worden.
- Vast aankomstdatum
- Aankomstdatum + alternatieve
- Aankomstdatum + extra datums
Vaste aankomstdatum
Bij een vaste aankomstdatum zal de PBO alleen voor deze aankomstdatum prijzen tonen. Er worden dus geen datums voor of na getoond. Een vaste aankomstdatum is actief als er geen alternatieve of extra datum meegegeven worden.
Alternatieve
Bij het gebruik van aankomstdatum alternatieve zullen zowel voor als na de opgegeven aankomstdatum alternatieve aankomstdatums getoond worden. Voorbeeld: Als de arrival_alternatives parameter 3 is zullen er 3 datums voor en 3 datums na de gekozen aankomstdatum getoond worden.
Extra datums
Hierbij worden er extra aankomstdatum getoond na de gekozen aankomstdag.
Query parameters
Attribute | Toelichting |
---|---|
arrival_date | De gekozen aankomstdatum. |
arrival_interval | Interval periode tussen aankomstdatums. Ondersteunde intervals zijn 'day' (default) en 'week'. |
arrival_alternatives | Aantal alternatieve aankomstdatums voor en na de gekozen aankomstdatum. |
arrival_extra_dates | Aantal extra aanstkomstdatums na de gekozen aankomstdatumarrival_date. Niet mogelijk i.c.m. arrival_alternatives. |
nights_possible | De nachten waaruit de gebruiker kan kiezen. |
night_chosen | De nacht gekozen door de gebruiker |
night_alternatives | Aantal alternatieve nachten voor en na de gekozen nacht. |
Vast aankomstdatum
curl https://api.holidayagent.nl/v1/resort/demo_park/level/3/pbo_periods?arrival_date=2018-03-01&nights_possible=7,14,21 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"arrivalDate": "2018-03-01",
"night": null,
"possibleNights": [
"7",
"14",
"21"
],
"level": {
"id": 3737,
"ident": "3",
"name": {
"nl": "Comfort plaats",
"en": "",
"de": "",
"fr": ""
}
},
"arrangements": [],
"periods": [
{
"2018-03-01": {
"arrivalDate": "2018-03-01",
"departures": [
{
"departureDate": "2018-03-08",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-15",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-22",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
}
}
]
}
Alternatieve
curl https://api.holidayagent.nl/v1/resort/demo_park/level/3/pbo_periods?arrival_date=2018-03-01&arrival_interval=week&arrival_alternatives=3&nights_possible=7,14,21 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"arrivalDate": "2018-03-01",
"night": null,
"possibleNights": [
"7",
"14",
"21"
],
"level": {
"id": 3737,
"ident": "3",
"name": {
"nl": "Comfort plaats",
"en": "",
"de": "",
"fr": ""
}
},
"arrangements": [],
"periods": [
{
"2018-02-21": {
"arrivalDate": "2018-02-21",
"departures": [
{
"departureDate": "2018-02-28",
"nights": "7",
"objectsAvailable": 170,
"price": 183.75,
"additional": 15,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-07",
"nights": "14",
"objectsAvailable": 170,
"price": 367.5,
"additional": 15,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-14",
"nights": "21",
"objectsAvailable": 170,
"price": 551.25,
"additional": 15,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
},
"2018-02-28": {
"arrivalDate": "2018-02-28",
"departures": [
{
"departureDate": "2018-03-07",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 15,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-14",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 15,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-21",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 15,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
},
"2018-03-07": {
"arrivalDate": "2018-03-07",
"departures": [
{
"departureDate": "2018-03-14",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 15,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-21",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 15,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-28",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 15,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
},
"2018-03-14": {
"arrivalDate": "2018-03-14",
"departures": [
{
"departureDate": "2018-03-21",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 15,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-28",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 15,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-04-04",
"nights": "21",
"objectsAvailable": 169,
"price": 551.25,
"additional": 15,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
},
"2018-03-21": {
"arrivalDate": "2018-03-21",
"departures": [
{
"departureDate": "2018-03-28",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 15,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-04-04",
"nights": "14",
"objectsAvailable": 169,
"price": 367.5,
"additional": 15,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-04-11",
"nights": "21",
"objectsAvailable": 168,
"price": 551.25,
"additional": 15,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
},
"2018-03-28": {
"arrivalDate": "2018-03-28",
"departures": [
{
"departureDate": "2018-04-04",
"nights": "7",
"objectsAvailable": 169,
"price": 183.75,
"additional": 15,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-04-11",
"nights": "14",
"objectsAvailable": 168,
"price": 367.5,
"additional": 15,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-04-18",
"nights": "21",
"objectsAvailable": 168,
"price": 551.25,
"additional": 15,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
},
"2018-04-04": {
"arrivalDate": "2018-04-04",
"departures": [
{
"departureDate": "2018-04-11",
"nights": "7",
"objectsAvailable": 168,
"price": 183.75,
"additional": 15,
"discount": 0,
"totalPrice": 198.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-04-18",
"nights": "14",
"objectsAvailable": 168,
"price": 367.5,
"additional": 15,
"discount": 0,
"totalPrice": 382.5,
"requiredArrangementId": null
},
{
"departureDate": "2018-04-25",
"nights": "21",
"objectsAvailable": 168,
"price": 551.25,
"additional": 15,
"discount": 0,
"totalPrice": 566.25,
"requiredArrangementId": null
}
]
}
}
]
}
Extra datums
curl https://api.holidayagent.nl/v1/resort/demo_park/level/3/pbo_periods?arrival_date=2018-03-01&arrival_interval=day&extra_arrivals_dates=6&nights_possible=7,14,21 \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"arrivalDate": "2018-03-01",
"night": null,
"possibleNights": [
"7",
"14",
"21"
],
"level": {
"id": 3737,
"ident": "3",
"name": {
"nl": "Comfort plaats",
"en": "",
"de": "",
"fr": ""
}
},
"arrangements": [],
"periods": [
{
"2018-03-01": {
"arrivalDate": "2018-03-01",
"departures": [
{
"departureDate": "2018-03-08",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 183.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-15",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 367.50,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-22",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 551.25,
"requiredArrangementId": null
}
]
},
"2018-03-02": {
"arrivalDate": "2018-03-02",
"departures": [
{
"departureDate": "2018-03-09",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 183.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-16",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 367.50,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-23",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 551.25,
"requiredArrangementId": null
}
]
},
"2018-03-03": {
"arrivalDate": "2018-03-03",
"departures": [
{
"departureDate": "2018-03-10",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 183.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-17",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 367.50,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-24",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 551.25,
"requiredArrangementId": null
}
]
},
"2018-03-04": {
"arrivalDate": "2018-03-04",
"departures": [
{
"departureDate": "2018-03-11",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 183.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-18",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 367.50,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-25",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 551.25,
"requiredArrangementId": null
}
]
},
"2018-03-05": {
"arrivalDate": "2018-03-05",
"departures": [
{
"departureDate": "2018-03-12",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 183.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-19",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 367.50,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-26",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 551.25,
"requiredArrangementId": null
}
]
},
"2018-03-06": {
"arrivalDate": "2018-03-06",
"departures": [
{
"departureDate": "2018-03-13",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 183.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-20",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 367.50,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-27",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 551.25,
"requiredArrangementId": null
}
]
},
"2018-03-07": {
"arrivalDate": "2018-03-07",
"departures": [
{
"departureDate": "2018-03-14",
"nights": "7",
"objectsAvailable": 171,
"price": 183.75,
"additional": 0,
"discount": 0,
"totalPrice": 183.75,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-21",
"nights": "14",
"objectsAvailable": 171,
"price": 367.5,
"additional": 0,
"discount": 0,
"totalPrice": 367.50,
"requiredArrangementId": null
},
{
"departureDate": "2018-03-28",
"nights": "21",
"objectsAvailable": 171,
"price": 551.25,
"additional": 0,
"discount": 0,
"totalPrice": 551.25,
"requiredArrangementId": null
}
]
}
}
]
}
Resort
Resort object
Het Resort object bestaat uit onderstaande attributen.
Attribute | Toelichting |
---|---|
short | Korte naam voor het resort. Deze korte naam is altijd uniek over alle resorts. |
name | Naam van het resort. |
Retrieve resorts
curl https://api.holidayagent.nl/v1/resort \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl" \
-H "Authorization: $ACCESS_TOKEN"
Returns:
{
"data": [
{
"type": "resort",
"id": "1",
"attributes": {
"short": "demo_park_1",
"name": "Holiday Media demo park 1"
}
},
{
"type": "resort",
"id": "2",
"attributes": {
"short": "demo_park_2",
"name": "Holiday Media demo park 2"
}
}
]
}
Dit endpoint geeft alle resort objecten terug waar de access token rechten tot heeft.
MyBooking
MijnOmgeving waarop gasten kunnen inloggen.
System account token
Endpoint waarmee o.b.v. een e-mailadres en wachtwoord van een gast de inlogcode van het boekingssysteem kan worden opgehaald.
Attribute | Toelichting |
---|---|
Het e-mailadres van de gast | |
password | Het wachtwoord van de gast, zoals bekend in de HolidayAgent MijnOmgeving (plain text) |
hash | Een sha256 hash van de resort shortname, het e-mailadres van de gast en een shared key:hash('sha256', '<RESORT_SHORTNAME> . <GUEST_EMAIL> . <SHARED_KEY>') |
curl https://api.holidayagent.nl/v1/<RESORT_SHORTNAME>/mo/system-account-token?email=test.account@mail.com&password=abc123&hash=a3c75bc3984baae0ff3e877663fbfaf664a354e8da5550274c92348ca734bc82 -d '
' -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl"
Returns:
{
"account": {
"email": "test.account@mail.com",
"systemToken": "9ask23j10f"
},
"status": "success"
}
Reset password
Endpoint waarmee de HolidayAgent password-reset-flow gestart wordt. Als het e-mailadres in de request params een geldige gastenkaart vertegenwoordigt, zal de gast een e-mailbericht ontvangen waarmee hij zijn wachtwoord kan aanpassen. Dit aanpassen gebeurt in de HolidayAgent MijnOmgeving, buiten deze API om. De inhoud van het e-mailbericht kan in HolidayAgent Admin per resort gepersonaliseerd worden.
Attribute | Toelichting |
---|---|
Het e-mailadres van de gast | |
hash | Een sha256 hash van de resort shortname, het e-mailadres van de gast en een shared key:hash('sha256', '<RESORT_SHORTNAME> . <GUEST_EMAIL> . <SHARED_KEY>') |
curl https://api.holidayagent.nl/v1/<RESORT_SHORTNAME>/mo/reset-password?email=test.account@mail.com&hash=a3c75bc3984baae0ff3e877663fbfaf664a354e8da5550274c92348ca734bc82 -d '
' -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "Accept-Language: nl"
Returns:
{
"status": "success",
"messages": {
"success": [],
"failure": []
}
}
Error codes
Tijdens het boeken worden foutmeldingen zoveel mogelijk voorzien van een error code. Op deze pagina zijn de error codes met bijhorende beschrijving terug te vinden.
Boekstraat
Error code | Toelichting |
---|---|
1 | Ongeldig park |
2 | Verlopen kassabon |
3 | Ongeldige kassabon |
4 | Ongeldige reservering pagina/stap |
5 | Reservering kan niet worden doorgegeven aan het reservering systeem |
6 | Object kan niet geblokkeerd worden |
7 | Reservering aanmaken vanuit kassabon mislukt |
8 | Geen beschikbaar object |
Extras
Onderstaande errors kunnen optreden bij het ophalen van de mogelijke optionele artikelen (extras).
Error code | Toelichting |
---|---|
1000 | Geen kassabon referentie meegegeven in het api request |
1001 | Geen resort meegegeven in het api request |
1003 | Er is iets mis gegaan bij het verwerken van het api request |
1004 | Er is iets mis gegaan bij het verwerken van het api request |