Boeken via een AI-assistent

Campings die CampingCloud gebruiken, kunnen een machineleesbaar kanaal aanzetten. Een assistent kan daarmee namens een gast het aanbod, de prijzen en de voorwaarden opvragen, en als de camping dat toestaat een aanvraag indienen.

Vier dingen die u vooraf moet weten

1. U boekt bij de camping, niet bij CampingCloud. De camping is de wederpartij van uw gebruiker. Wij leveren de software. Zeg dat ook zo tegen uw gebruiker.

2. De gast betaalt altijd zelf. Met iDEAL of Bancontact, op zijn eigen apparaat. Er is vandaag geen betaalwijze waarmee u namens een gast kunt afrekenen — betaling.rails is daarom een lege lijst. Beloof een gebruiker nooit dat u de boeking kunt betalen.

3. Het kanaal staat per camping standaard uit. Geen antwoord is geen storing. Een camping die uitzet, is binnen een minuut weg.

4. Een aanvraag is nog geen boeking. Een camping zet het kanaal op lezen of op boeken; kanaal.aanvragen_mogelijk zegt welke van de twee. Op boeken dient u namens de gast een aanvraag in. De camping keurt hem goed, de gast krijgt een betaallink, en pas als hij betaalt, is de overeenkomst gesloten.

Beginnen zonder sleutel

Elke deelnemende camping heeft een sleutelloos manifest:

GET https://beheer.campingcloud.nl/api/publiek/<slug>/agent-manifest.json

Staat het kanaal open, dan krijgt u naam, plaats, talen, het basispad en de contractversie. Staat het uit of bestaat de camping niet, dan krijgt u 404 — wij maken tussen die twee gevallen geen onderscheid.

Met sleutel

Alle overige routes vragen twee headers. De sleutel mag niet in de querystring: die belandt in proxylogs en verwijzers.

X-Account: <slug>
X-Api-Key: cc_…
RouteWat u krijgt
GET /api/publiek/agent/capabilitiesWie de ondernemer is, wat het kanaal kan, hoe er betaald wordt, en de grenzen.
GET /api/publiek/agent/voorwaardenAnnuleringsstaffels en betaaltermijnen als data, plus de voorwaarden-PDF's.
GET /api/publiek/agent/aanbodDe accommodatietypes in één taal, met een indicatieprijs.
GET /api/publiek/agent/beschikbaarheidPer type: beschikbaar of niet, het all-in bedrag, en waaróm iets niet kan.
POST /api/publiek/agent/aanvragenEen aanvraag namens de gast, als de camping het kanaal op boeken heeft staan. Er wordt niets afgerekend; u krijgt een verzoek-id.
GET /api/publiek/agent/aanvragen/<verzoek_id>De stand van uw aanvraag.
DELETE /api/publiek/agent/aanvragen/<verzoek_id>De aanvraag intrekken, zolang er niets is betaald.

Bedragen zijn in hele centen. vertrek is exclusief: het aantal nachten is vertrek − aankomst. Eenheden zijn overgenomen zoals ze zijn vastgelegd — annulering in procenten, betaaltermijnen in promille. Reken ze niet om.

Wat u niet krijgt, en waarom

Geen exacte vrije aantallen, alleen voorraad: "geen" of "beperkt". Met vrije aantallen over een reeks datums ligt de complete bezetting van een camping op straat, en dat is bedrijfsinformatie. Om dezelfde reden zegt een weigering NIET_BOEKBAAR waar de reden over de inrichting van de camping gaat.

Redenen die over úw aanvraag gaan, krijgt u wél: minimum aantal nachten, aankomst- en vertrekdagen, het verkoopvenster en het aantal personen. Daar kunt u uw voorstel op aanpassen.

Fouten

Elke afwijzing is een echte HTTP-status met vier velden: error, code, veld en opnieuw_na_s. Dit kanaal geeft nooit een stil nep-succes. De widget doet dat wél bij een botvermoeden — dat is een maatregel voor formulieren en de reden dat u de widget niet als API moet gebruiken: u zou een verzonnen boekingsnummer aan uw gebruiker doorgeven.

Een sleutel aanvragen

Sleutels geven wij per aanbieder uit, met een afspraak erbij. Een adres om er een aan te vragen staat hier zodra het er is.

Een widgetsleutel uit de HTML van een campingsite werkt hier niet. Die geeft 403 WIDGET_KEY_OP_AGENTPAD.