Online Boeking¶
Huidige versie: 0.2.0
Globaal overzicht¶
De Online Boeking API werkt nauw samen met de APIs Contactformulieren en Arrangementen.
Om online boeken snel te integreren kun je ook gebruik maken van onze Javascript-library.
Beschikbare Dagen¶
- POST /api2/onlineboeking/beschikbaredagen¶
Met dit endpoint is het mogelijk voor een bepaalde combinatie van producten te controleren op welke dagen het mogelijk is om te boeken.
Voorbeeld request:
POST /api2/onlineboeking/beschikbaredagen HTTP/1.1 Host: demo.recras.nl Content-Type: application/json { "arrangement_id": 2, "producten": [ {"arrangementsregel_id": 1, "aantal": 0}, {"arrangementsregel_id": 2, "aantal": 2}, {"arrangementsregel_id": 4, "aantal": 0} ], "begin": "2015-02-01", "eind": "2015-04-01" }
- JSON Parameters:
arrangement_id (int) – Verplicht Het
id
-nummer van het te controleren arrangement. Enkel arrangementen met de eigenschappenmag_online_geboekt_worden_direct_betalen
ofmag_online_geboekt_worden_achteraf_betalen
zijn toegestaan.producten (array) – Verplicht Een lijst met te boeken boekingsregels, ieder element is een combinatie van een
arrangementsregel_id
en een aantal.producten[].arrangementsregel_id (int) – Verplicht Het
arrangementsregel_id
waaruit een boekingsregel geproduceerd zal worden. Ditarrangementsregel_id
moet voorkomen in deregels
van het arrangement opgegeven in dearrangement_id
parameter.producten[].aantal (int) – Verplicht Het aantal te boeken eenheden
begin (date) – Een ISO8601-geformatteerde datum, het begin van het te controleren tijdsbestek. Standaardwaarde: vandaag
eind (date) – Een ISO8601-geformatteerde datum, het eind van het te controleren tijdsbestek. Standaardwaarde: vandaag + 90 dagen
Voorbeeld response:
HTTP/1.1 200 OK Content-Type: application/json [ "2015-02-09", "2015-02-11", "2015-02-12", "2015-02-13", "2015-02-14", "2015-02-15", "2015-02-16", "2015-02-18", "2015-02-19" ]
- Status Codes:
200 OK – Invoer geaccepteerd
406 Not Acceptable – Fout in de invoer
- Json:
Een lijst van ISO-8601 (specifieker:
JJJJ-MM-DD
) geformatteerde datums waarop het mogelijk is om deze combinatie van producten te boeken.
Beschikbare Tijden¶
- POST /api2/onlineboeking/beschikbaretijden¶
Met dit endpoint is het mogelijk voor een bepaalde combinatie van producten te controleren op welke startmomenten op een bepaalde dag het mogelijk is om te boeken.
Voorbeeld request:
POST /api2/onlineboeking/beschikbaretijden HTTP/1.1 Host: demo.recras.nl Content-Type: application/json { "arrangement_id": 2, "producten": [ {"arrangementsregel_id": 1, "aantal": 0}, {"arrangementsregel_id": 2, "aantal": 2}, {"arrangementsregel_id": 4, "aantal": 0} ], "datum": "2015-02-22" }
- JSON Parameters:
arrangement_id (int) – Verplicht Het
id
-nummer van het te controleren arrangement. Enkel arrangementen met de eigenschappenmag_online_geboekt_worden_direct_betalen
ofmag_online_geboekt_worden_achteraf_betalen
zijn toegestaan.producten (array) – Verplicht Een lijst met te boeken boekingsregels, ieder element is een combinatie van een
arrangementsregel_id
en een aantal.producten[].arrangementsregel_id (int) – Verplicht Het
arrangementsregel_id
waaruit een boekingsregel geproduceerd zal worden. Ditarrangementsregel_id
moet voorkomen in deregels
van het arrangement opgegeven in dearrangement_id
parameter.producten[].aantal (int) – Verplicht Het aantal te boeken eenheden
datum (date) – Verplicht Een ISO8601-geformatteerde datum waarop de beschikbare startmomenten gevraagd worden.
Voorbeeld response:
HTTP/1.1 200 OK Content-Type: application/json [ "2015-02-22T11:00:00+01:00", "2015-02-22T11:30:00+01:00", "2015-02-22T12:00:00+01:00", "2015-02-22T12:30:00+01:00", "2015-02-22T13:00:00+01:00" ]
- Status Codes:
200 OK – Invoer correct
406 Not Acceptable – Fout in de invoer
- Json:
Een lijst van ISO8601-geformatteerde tijden waarop het mogelijk is om te boeken.
Tegoedbonnen controleren¶
- POST /api2/onlineboeking/controleervoucher¶
Met dit endpoint is het mogelijk om tegoedbonnen te controleren voor een bepaalde online boeking. Een tegoedbon is geldig voor 1 of meerdere producten.
Voorbeeld request:
POST /api2/onlineboeking/controleervoucher HTTP/1.1 Host: demo.recras.nl Content-Type: application/json { "arrangement_id": 2, "producten": [ {"arrangementsregel_id": 1, "aantal": 2}, {"arrangementsregel_id": 2, "aantal": 2}, {"arrangementsregel_id": 4, "aantal": 0} ], "datum": "2015-02-22", "vouchers": ["qwert-asdfg-zxcvb", "ertyu-dfghj-cvbnm", "invalid-code"] }
- JSON Parameters:
arrangement_id (int) – Verplicht Het
id
-nummer van het te controleren arrangement. Enkel arrangementen met de eigenschappenmag_online_geboekt_worden_direct_betalen
ofmag_online_geboekt_worden_achteraf_betalen
zijn toegestaan.producten (array) – Verplicht Een lijst met te boeken boekingsregels, ieder element is een combinatie van een
arrangementsregel_id
en een aantal.producten[].arrangementsregel_id (int) – Verplicht Het
arrangementsregel_id
waaruit een boekingsregel geproduceerd zal worden. Ditarrangementsregel_id
moet voorkomen in deregels
van het arrangement opgegeven in dearrangement_id
parameter.producten[].aantal (int) – Verplicht Het aantal te boeken eenheden
datum (date) – Verplicht Een ISO8601-geformatteerde datum waarop de beschikbare startmomenten gevraagd worden.
vouchers[] (array) – Verplicht een lijst van strings met tegoedbonnen die gecontroleerd moeten worden.
Voorbeeld response:
HTTP/1.1 200 OK Content-Type: application/json { "qwert-asdfg-zxcvb": { "valid": true, "processed": [{ "regel_id": 1, "product_id": 4, "prijs_per_stuk": 25, "aantal": 2, }] }, "ertyu-dfghj-cvbnm": { "valid": true, "processed": [{ "regel_id": 2, "product_id": 3, "prijs_per_stuk": 10, "aantal": 1, }] }, "invalid-code": { "valid": false, "reason": "ERR_VOUCHER_INVALID" } }
- Status Codes:
200 OK – Invoer correct
406 Not Acceptable – Fout in de invoer
- Json:
Een object van resultaten, met als keys de opgegeven tegoedbonnen en per tegoedbon een resultaat.
Mogelijke reden van afwijzing:
ERR_VOUCHER_INVALID - code bestaat niet
ERR_VOUCHER_EXPIRED - tegoedbon is vervallen
ERR_VOUCHER_INVALID_PRODUCTS - tegoedbon is niet te gebruiken op producten die geboekt worden in dit arrangement
ERR_VOUCHER_USED - tegoedbon is al gebruikt
Kortingscode controleren¶
- GET /api2/onlineboeking/controleerkortingscode¶
Via dit endpoint kunnen kortingscodes gecontroleerd worden op geldigheid
- Query Parameters:
kortingscode (string) – De code van de kortingscode
datum (date) – De ISO8601-datum waarop de kortingscode wel of niet geldig moet zijn
arrangement (int) – Het ID van het arrangement waarop de kortingscode wel of niet geldig moet zijn
Voorbeeld van geldige kortingscode¶
Request:
- GET /api2/onlineboeking/controleerkortingscode¶
GET /api2/onlineboeking/controleerkortingscode?kortingscode=test1234&datum=2019-03-19&arrangement=2 HTTP/1.1 Host: demo.recras.nl Accept: application/json
Response:
HTTP/1.1 200 OK Content-Type: application/json { "naam": "Testcode", "percentage": 25 }
- JSON Parameters:
naam (string) – De naam van de kortingscode
percentage (int) – Het kortingspercentage van de kortingscode
Voorbeeld van ongeldige kortingscode¶
Request:
GET /api2/onlineboeking/controleerkortingscode?kortingscode=test1234&datum=2015-03-19&arrangement=20 HTTP/1.1 Host: demo.recras.nl Accept: application/jsonResponse:
HTTP/1.1 200 OK Content-Type: application/json false
Boeking reserveren¶
- POST /api2/onlineboeking/reserveer¶
Met dit endpoint is het mogelijk een boeking in Recras te maken.
Voorbeeld request:
POST /api2/onlineboeking/reserveer HTTP/1.1 Host: demo.recras.nl Content-Type: application/json { "arrangement_id":2, "producten":[ {"arrangementsregel_id":1,"aantal":0}, {"arrangementsregel_id":2,"aantal":2}, {"arrangementsregel_id":4,"aantal":0} ], "begin":"2015-02-14T14:00:00+01:00", "betaalmethode": "factuur", "kortingscode": "test1234", "vouchers": ["qwert-asdfg-zxcvb", "ertyu-dfghj-cvbnm"], "status":"reservering", "stuur_bevestiging_email": true, "contactformulier": { "contact.naam":"Recras", "contact.afdeling": "API ontwikkeling", "contactpersoon.voornaam": null, "contactpersoon.achternaam": null, "contactpersoon.geslacht": "onbekend", "contactpersoon.email1": "api@recras.nl", "contactpersoon.telefoon1": "050-2112212", "contactpersoon.adres":"Kadijk 1", "contactpersoon.postcode":"9747AT", "contactpersoon.plaats":"Groningen", "veel_tekst_0":null } }
- JSON Parameters:
arrangement_id (int) – Verplicht Het
id
-nummer van het te controleren arrangement. Enkel arrangementen met de eigenschappenmag_online_geboekt_worden_direct_betalen
ofmag_online_geboekt_worden_achteraf_betalen
zijn toegestaan.producten (array) – Verplicht Een lijst met te boeken boekingsregels, ieder element is een combinatie van een
arrangementsregel_id
en een aantal.producten[].arrangementsregel_id (int) – Verplicht Het
arrangementsregel_id
waaruit een boekingsregel geproduceerd zal worden. Ditarrangementsregel_id
moet voorkomen in deregels
van het arrangement opgegeven in dearrangement_id
parameter.producten[].aantal (int) – Verplicht Het aantal te boeken eenheden
begin (datetime) – Verplicht Een ISO8601-geformatteerde weergave van het startmoment van de boeking
betaalmethode (string) – Verplicht De betaalmethode die voor deze boeking gebruikt wordt. Mogelijkheden:
factuur
(voor betaling achteraf, alleen mogelijk voor arrangementen met de eigenschapmag_online_geboekt_worden_achteraf_betalen
) enmollie
(voor betaling direct via de payment provider Mollie, alleen mogelijk voor arrangementen met de eigenschapmag_online_geboekt_worden_direct_betalen
)status (string) – De status van de boeking na het reserveren. Alleen beschikbaar voor boekingen met betaalmethode
factuur
. Standaardwaarde wordt overgenomen uit de Recras-instellingonline_boeking_achteraf_betalen_status
stuur_bevestiging_email (boolean) – Of er een bevestigingsmail verstuurd moet worden na het reserveren. Alleen beschikbaar voor boekingen met betaalmethode
factuur
. Standaardwaarde istrue
.kortingscode (string) – Een optionele kortingscode. Een ongeldige kortingscode (niet-bestaand, of niet geldig op de gekozen datum) telt als ongeldige invoer (zie hieronder).
vouchers[] (array) – Een optionele lijst van strings met tegoedbonnen die verwerkt moeten worden op deze boeking. Een ongeldige tegoedbon telt als ongeldige invoer. Het is daarom verstandig om een tegoedbon eerst te controleren.
contactformulier (object) – Verplicht Ingevuld contactformulier dat hoort bij dit arrangement. Voor meer informatie, zie de documentatie voor _ContactformulierenSubmit<Contactformulieren opslaan> en _arrangementen<Arrangementen>.
mollie_params (object) – Extra parameters om aan de Mollie Create Payment API mee te geven. Alleen mogelijk voor betaalmethode
mollie
. De parametersamount
enredirectUrl
zijn hier niet toegestaan.redirect_url (URL) – Een URL waar de klant na de betaling naartoe wordt geleid, ongeacht de status van de betaling. Het is dus aan de server waar
redirect_url
naar verwijst om de status van de boeking te controleren. Alleen mogelijk voor betaalmethodemollie
.
Voorbeeld response:
HTTP/1.1 200 OK Content-Type: application/json { "status":"reservering", "message":"Boeking gemaakt", "boeking_id":42, "klant_id":63 }
- Status Codes:
200 OK – Boeking gemaakt
403 Forbidden – Gebruiker heeft onvoldoende rechten
406 Not Acceptable – Fout in de invoer. Dit kan o.a. duiden op een boeking die te ver/te kort van tevoren wordt gemaakt (
onlineboeking_maximaal_vooruit
enonlineboeking_minimaal_vooruit
van een arrangement), een ongeldig startmoment, een ongeldig (fout ingevuld) contactformulier, een ongeldige betaalmethode, of een overboeking op materiaal en/of locatie.
- JSON Parameters:
status (string) – De status van de gemaakte boeking. Deze kan een Boekingsstatus zijn of
betaling benodigd
.message (string) – Een bericht dat de status beschrijft.
boeking_id (int) – Het
id
-nummer van de gemaakte boeking. Alleen beschikbaar voor gebruikers met het rechteditBoeking
.klant_id (int) – Het
id
-nummer van de gemaakte of gematchte klant. Alleen beschikbaar voor gebruikers met het rechteditBoeking
.payment_url (uri) – De URL die gevolgd dient te worden om aan de betalingsplicht te voldoen. (Alleen aanwezig indien
status
gelijk is aanbetaling benodigd
)
Please note: Bookings with a net price of EUR 0.00¶
In the special case of a request to /api2/onlineboeking/reserveer
with payment method mollie
yielding a booking with a net price of EUR 0.00 or lower
(this can happen by the application of vouchers and/or the booking having products with a negative sale price), the redirection to the payment service provider will be omitted.
The status
field of the returned JSON object will then have the booking status definitief
(confirmed) and the payment_url
field will be absent.
This means the customer may be presented with a message confirming the successful creation of the booking.
Recras will follow the same procedure as when in the regular case the ‘payment successful’ notification is received, i.e. booking proposal and invoice will be sent to the customer.