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