7. Post Booking#
At any point after booking creation, the following endpoint can be called to check the info in and the status of the booking.
getBooking#
Given the booking ID, this endpoint returns the available booking information, including availability date, options, pricing and questions. It also includes information about status ( ON_HOLD, PENDING, PENDING_CONFIRM, EXPIRED, CONFIRMED, REJECTED, CANCELLED, REDEEMED) and paymentStatus ( PAID, ON_HOLD, REFUND, REFUNDED, FAILED) of the booking.
Path
GET /booking-flow/v1/bookings/:bookingId
Input body example
none
Output body example
{
"id": "5ce38d8e-1974-4d44-9cb4-2b8be380e32f",
"availabilityDateTime": "2023-12-19T12:00+01:00[Europe/Paris]",
"resellerRef": "MY_COMPANY",
"status": "CONFIRMED",
"voucherUrl": "https://s3.eu-west-1.amazonaws.com/tech.holibob.files/bookingVouchers/8d16346e-5773-4e09-9367-7cce0d083970/voucher.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA4H5CGSAPISTGYLFI%2F20231214%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20231214T091516Z&X-Amz-Expires=10000&X-Amz-Signature=63bf3d77fd3bb81135d2f18ec78cf9786c661c257ea0e27a25276c22667ef707&X-Amz-SignedHeaders=host",
"paymentStatus": "PAID",
"creationDate": "2023-12-14T09:11:08.998522Z",
"updateDate": "2023-12-14T09:15:16.679830663Z",
"availability": {
"id": "b5b48ed0-c06a-4eef-a008-cd220033c0c6",
"availabilityDate": "2023-12-19",
"availabilityOptions": [
{
"label": "Ticket Type",
"level": "0",
"id": "c3e82b4a-db80-4607-bd00-68eb9e5a1224",
"selectedOptionId": "528446",
"optionChoices": {
"528446": "Eiffel ,2 Day Bus Pass &Cruise"
}
},
{
"label": "Start Time",
"level": "1",
"id": "17a9e4bd-604d-49fe-8382-f29d8f623a3c",
"selectedOptionId": "420013_20231219",
"optionChoices": {
"420013_20231219": "12:00"
}
}
],
"unitOptions": [
{
"label": "Adult",
"id": "143731",
"restrictions": {
"minQuantity": 1,
"maxQuantity": 10,
"accompagniedBy": []
},
"price": {
"retail": 114.9,
"currency": "EUR"
},
"unitQuantity": 2,
"minAge": 13,
"maxAge": 99
},
{
"label": "Child",
"id": "112820",
"restrictions": {
"minQuantity": 1,
"maxQuantity": 10,
"accompagniedBy": []
},
"price": {
"retail": 99.9,
"currency": "EUR"
},
"unitQuantity": 1,
"minAge": 4,
"maxAge": 12
},
{
"label": "Infant",
"id": "112821",
"restrictions": {
"minQuantity": 1,
"maxQuantity": 10,
"accompagniedBy": []
},
"price": {
"retail": 0.0,
"currency": "EUR"
},
"unitQuantity": 0,
"minAge": 0,
"maxAge": 3
}
],
"maxParticipants": 10,
"minParticipants": 1,
"isOptionStepCompleted": true,
"isPricingStepCompleted": true
},
"questions": {
"customer": [
{
"id": "68f9d42d-38b4-4006-9564-0b92d4857033",
"question": "First name",
"value": "Abraham",
"dataType": "TEXT"
},
{
"id": "c35471f4-99e1-4ac0-b594-25028b024f69",
"question": "Last name",
"value": "Abraham",
"dataType": "TEXT"
},
{
"id": "c6339907-3af8-498f-b079-f15781b212aa",
"question": "Email Address",
"value": "Abraham@mail.com",
"dataType": "TEXT",
"dataFormat": "EMAIL_ADDRESS"
},
{
"id": "33173169-f5f0-4c91-85d5-f4d53d6247a9",
"question": "Phone Number",
"value": "0601020304",
"dataType": "TEXT",
"dataFormat": "PHONE_NUMBER"
},
{
"id": "73c9879a-7141-4635-a8de-93ff82a5af31",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
],
"participants": [
{
"id": "08421eff-6b5b-445a-bafa-d13d0232b95d",
"questions": [
{
"id": "122e1ea2-d062-4dd6-9544-b35baef139ab",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
]
},
{
"id": "491e7ac3-3a6c-44a2-acf4-04c6932c345a",
"questions": [
{
"id": "217b78bb-8845-435b-9dc2-c8506f8b3307",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
]
},
{
"id": "d9f482e5-0a90-4ea8-8efc-ddae1027350b",
"questions": [
{
"id": "16c42f87-2b77-47d9-ba98-dbe695449f67",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
]
}
]
},
"cancellation": {
"isCancellable": false,
"cancellationPolicy": []
},
"isQuestionStepComplete": true
}
Note
The booking confirmation from the supplier could take several seconds, if the Consumer System requires this confirmation, it will be necessary for it to include a retry strategy to poll the data untill this confirmation comes.
After the booking confirmation, a voucherUrl property will be present in the response containing a uri to the generated voucher pdf that the user will require for activity ticketing.
- Please, refrain from sharing the url directly with the user. Suggested usage includes:
Store the PDF share it from a proprietary location
Retrieve and send the document by email as PDF attachment to the customer
After the booking confirmation, the response to this call will also include the bookingCode to share with the supplier for customer care purposes. Some suppliers don’t provide a bookingCode, in that case the booking ID can be provided instead.
A vast majority of product bookings are cancellable, and the response to the getBooking endpoint includes a cancellationInformation property detailing the cancellability of the booking and how much of the booking is refunded to the user under which conditions. If the booking has the isCancellable proprerty set to true, it’s possible to invoke the following endpoint on it.
cancelBooking#
Given a booking ID cancels it and returns the updated status.
Path
DELETE /booking-flow/v1/bookings/:bookingId
Input body example
none
Output body example
{
"id": "5ce38d8e-1974-4d44-9cb4-2b8be380e32f",
"availabilityDateTime": "2023-12-19T12:00+01:00[Europe/Paris]",
"resellerRef": "MY_COMPANY",
"status": "CANCELLED",
"voucherUrl": "https://s3.eu-west-1.amazonaws.com/tech.holibob.files/bookingVouchers/8d16346e-5773-4e09-9367-7cce0d083970/voucher.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIA4H5CGSAPISTGYLFI%2F20231214%2Feu-west-1%2Fs3%2Faws4_request&X-Amz-Date=20231214T091516Z&X-Amz-Expires=10000&X-Amz-Signature=63bf3d77fd3bb81135d2f18ec78cf9786c661c257ea0e27a25276c22667ef707&X-Amz-SignedHeaders=host",
"paymentStatus": "PAID",
"creationDate": "2023-12-14T09:11:08.998522Z",
"updateDate": "2023-12-14T09:15:16.679830663Z",
"availability": {
"id": "b5b48ed0-c06a-4eef-a008-cd220033c0c6",
"availabilityDate": "2023-12-19",
"availabilityOptions": [
{
"label": "Ticket Type",
"level": "0",
"id": "c3e82b4a-db80-4607-bd00-68eb9e5a1224",
"selectedOptionId": "528446",
"optionChoices": {
"528446": "Eiffel ,2 Day Bus Pass &Cruise"
}
},
{
"label": "Start Time",
"level": "1",
"id": "17a9e4bd-604d-49fe-8382-f29d8f623a3c",
"selectedOptionId": "420013_20231219",
"optionChoices": {
"420013_20231219": "12:00"
}
}
],
"unitOptions": [
{
"label": "Adult",
"id": "143731",
"restrictions": {
"minQuantity": 1,
"maxQuantity": 10,
"accompagniedBy": []
},
"price": {
"retail": 114.9,
"currency": "EUR"
},
"unitQuantity": 2,
"minAge": 13,
"maxAge": 99
},
{
"label": "Child",
"id": "112820",
"restrictions": {
"minQuantity": 1,
"maxQuantity": 10,
"accompagniedBy": []
},
"price": {
"retail": 99.9,
"currency": "EUR"
},
"unitQuantity": 1,
"minAge": 4,
"maxAge": 12
},
{
"label": "Infant",
"id": "112821",
"restrictions": {
"minQuantity": 1,
"maxQuantity": 10,
"accompagniedBy": []
},
"price": {
"retail": 0.0,
"currency": "EUR"
},
"unitQuantity": 0,
"minAge": 0,
"maxAge": 3
}
],
"maxParticipants": 10,
"minParticipants": 1,
"isOptionStepCompleted": true,
"isPricingStepCompleted": true
},
"questions": {
"customer": [
{
"id": "68f9d42d-38b4-4006-9564-0b92d4857033",
"question": "First name",
"value": "Abraham",
"dataType": "TEXT"
},
{
"id": "c35471f4-99e1-4ac0-b594-25028b024f69",
"question": "Last name",
"value": "Abraham",
"dataType": "TEXT"
},
{
"id": "c6339907-3af8-498f-b079-f15781b212aa",
"question": "Email Address",
"value": "Abraham@mail.com",
"dataType": "TEXT",
"dataFormat": "EMAIL_ADDRESS"
},
{
"id": "33173169-f5f0-4c91-85d5-f4d53d6247a9",
"question": "Phone Number",
"value": "0601020304",
"dataType": "TEXT",
"dataFormat": "PHONE_NUMBER"
},
{
"id": "73c9879a-7141-4635-a8de-93ff82a5af31",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
],
"participants": [
{
"id": "08421eff-6b5b-445a-bafa-d13d0232b95d",
"questions": [
{
"id": "122e1ea2-d062-4dd6-9544-b35baef139ab",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
]
},
{
"id": "491e7ac3-3a6c-44a2-acf4-04c6932c345a",
"questions": [
{
"id": "217b78bb-8845-435b-9dc2-c8506f8b3307",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
]
},
{
"id": "d9f482e5-0a90-4ea8-8efc-ddae1027350b",
"questions": [
{
"id": "16c42f87-2b77-47d9-ba98-dbe695449f67",
"question": "Date of birth",
"value": "2000-01-01",
"dataType": "DATE"
}
]
}
]
},
"cancellation": {
"isCancellable": false,
"cancellationPolicy": []
},
"isQuestionStepComplete": true
}
Warning
As the payment is handled by the integrator, refunding the correct amount to the user will as well be under the integrator’s responsability