Online Check-in

Just like with an airline, except for tours and activities

To use this capability add octo/checkin to your Octo-Capabilities header.

Some products require online checkin after booking confirmation and before the guest is allowed to use their tickets. This is typically the case when:

  • The product has waivers that must be signed by each guest.

  • The product has required questions that need answering (such as dietary requirements).

  • The product is a multi-part package where each part needs a travel date and time chosen.

If the checkin process is skipped the guest will still be able to complete the check-in process when they arrive, it just may delay their experience.

This capability also provides a way to find an existing booking using either the booking reference number or customer email or mobile.

Lookup

POST https://api.ventrata.com/octo/checkin/lookup

Takes either an email, mobile or reference number and searches for the booking.

Request Body

Name
Type
Description

email

string

The customer's email

mobile

string

The customer's mobile

reference

string

Any reference of the booking

verification

string

A verification code

{
  "message": "A SMS has been sent to +447840739436",
  "verified": false,
  "bookings": []
}

Your first step is to pick with of the 3 pieces of information you'd like to use to lookup the customer's booking:

  • Email We'll then send a verification code to the customer's email which you'll need to repeat in the request to verify the guest's identity.

  • Mobile We'll then send a verification code to the customer's email which you'll need to repeat in the request to verify the guest's identity.

  • Reference If the booking exists we will then ask for a last name to verify the the guest's identity.

Some example requests for each type are shown below:

POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo

{
  "email": "test@example.com"
}
HTTP/1.1 200 OK
Content-Type: application/json

{
  "message": "A verification email has been sent to test@example.com",
  "verified": false,
  "bookings": []
}

If no booking was found using the email, mobile or reference provided we will instead return a 400 Bad Request response with an appropriate error message.

At this point, provided the request is not already verified, we will have sent a verification code to via Email or SMS, or request a last name. You should prompt the guest to enter this and then repeat the request with the verification parameter provided.

POST /checkin/lookup HTTP/1.1
Content-Type: application/json
Host: api.ventrata.com/octo

{
  "email": "test@example.com",
  "verification": "815924"
}

Provided that the verification code is correct, we'll then respond with a verified response that looks like this:

{
  "message": null,
  "verified": true,
  "bookings": [
    {
      // ... rest of the booking object
      "checkedIn": false,
      "checkinAvailable": true,
      "checkinUrl": "https://website.com/en/checkin?order_token=6d2d9d36-8001-41c6-b716-fccfb5117cf9&booking=1ec5dae4-230e-495d-80b7-0fd5def983f5"
    }
  ]
}

We've omitted many of the booking object fields to simply the documentation, but all the fields documented here will be included.

Also note it's possible that the information provided might have returned more than one booking. We'll return them in order of date confirmed (most recent at the top).

Checkin Status

GET https://api.ventrata.com/octo/bookings/:uuid

Returns the booking object

Path Parameters

Name
Type
Description

:uuid

string

The UUID of the booking

{
  "id": "93c335bc-07b9-4f10-84e2-3df8f2daa257",
  "internalName": "Mega Pass",
  "reference": null,
  "locale": "en",
  "timeZone": "America/Los_Angeles",
  "allowFreesale": false,
  "availabilityRequired": true,
  "availabilityType": "OPENING_HOURS",
  "deliveryFormats": [
    "PDF_URL",
    "QRCODE"
  ],
  "deliveryMethods": [
    "VOUCHER",
    "TICKET"
  ],
  "redemptionMethod": "DIGITAL",
  "capabilities": [
    {
      "id": "octo/content",
      "revision": 1,
      "required": false,
      "dependencies": []
    },
    {
      "id": "octo/cart",
      "revision": 1,
      "required": false,
      "dependencies": []
    },
    {
      "id": "octo/pricing",
      "revision": 1,
      "required": false,
      "dependencies": []
    },
    {
      "id": "octo/pickups",
      "revision": 1,
      "required": false,
      "dependencies": []
    },
    {
      "id": "octo/offers",
      "revision": 1,
      "required": false,
      "dependencies": [
        "octo/pricing"
      ]
    },
    {
      "id": "octo/cardPayments",
      "revision": 1,
      "required": false,
      "dependencies": []
    },
    {
      "id": "octo/checkin",
      "revision": 1,
      "required": false,
      "dependencies": []
    }
  ],
  "options": [
    {
      "id": "6963c6a3-5d6a-4f15-924c-be2530589422",
      "default": false,
      "internalName": "Pick 3",
      "reference": null,
      "restrictions": {
        "minUnits": 0,
        "maxUnits": null
      },
      "units": [
        {
          "id": "adult",
          "internalName": "Adult",
          "reference": "adult",
          "type": "ADULT",
          "restrictions": {
            "minAge": 0,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": null,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          },
          "pricingFrom": [
            {
              "original": 7999,
              "retail": 7999,
              "net": null,
              "currency": "USD",
              "currencyPrecision": 2
            }
          ]
        },
        {
          "id": "child",
          "internalName": "Child",
          "reference": "child",
          "type": "CHILD",
          "restrictions": {
            "minAge": 0,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": null,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          },
          "pricingFrom": [
            {
              "original": 5999,
              "retail": 5999,
              "net": null,
              "currency": "USD",
              "currencyPrecision": 2
            }
          ]
        }
      ]
    },
    {
      "id": "f39bde2f-2cc0-48c1-b404-af68ce2370ae",
      "default": false,
      "internalName": "Pick 4",
      "reference": null,
      "restrictions": {
        "minUnits": 0,
        "maxUnits": null
      },
      "units": [
        {
          "id": "adult",
          "internalName": "Adult",
          "reference": "adult",
          "type": "ADULT",
          "restrictions": {
            "minAge": 0,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": null,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          },
          "pricingFrom": [
            {
              "original": 9999,
              "retail": 9999,
              "net": null,
              "currency": "USD",
              "currencyPrecision": 2
            }
          ]
        },
        {
          "id": "child",
          "internalName": "Child",
          "reference": "child",
          "type": "CHILD",
          "restrictions": {
            "minAge": 0,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": null,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          },
          "pricingFrom": [
            {
              "original": 7999,
              "retail": 7999,
              "net": null,
              "currency": "USD",
              "currencyPrecision": 2
            }
          ]
        }
      ]
    },
    {
      "id": "f996c316-7541-4cb4-a96f-4a6f08cea70a",
      "default": false,
      "internalName": "Pick 5",
      "reference": null,
      "restrictions": {
        "minUnits": 0,
        "maxUnits": null
      },
      "units": [
        {
          "id": "adult",
          "internalName": "Adult",
          "reference": "adult",
          "type": "ADULT",
          "restrictions": {
            "minAge": 0,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": null,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          },
          "pricingFrom": [
            {
              "original": 11499,
              "retail": 11499,
              "net": null,
              "currency": "USD",
              "currencyPrecision": 2
            }
          ]
        },
        {
          "id": "child",
          "internalName": "Child",
          "reference": "child",
          "type": "CHILD",
          "restrictions": {
            "minAge": 0,
            "maxAge": 99,
            "idRequired": false,
            "minQuantity": null,
            "maxQuantity": null,
            "paxCount": 1,
            "accompaniedBy": []
          },
          "pricingFrom": [
            {
              "original": 9299,
              "retail": 9299,
              "net": null,
              "currency": "USD",
              "currencyPrecision": 2
            }
          ]
        }
      ]
    }
  ],
  "defaultCurrency": "USD",
  "availableCurrencies": [
    "USD"
  ],
  "pickupAvailable": true,
  "pickupRequired": true,
  "pickupPoints": [
    {
      "id": "0274665c-f047-42bd-a971-f31fcff24862",
      "name": "Cornell Hotel de France - 715 Bush St",
      "directions": null,
      "latitude": 37.7900142,
      "longitude": -122.4091263
    },
    {
      "id": "02f44fe5-c1e1-4173-b557-2f23c68e53ab",
      "name": "SF Plaza Hotel - 510 Bush St",
      "directions": null,
      "latitude": 37.7906443,
      "longitude": -122.4058728
    },
    {
      "id": "07a1f50c-da65-4a82-9799-676c58946d15",
      "name": "Hilton Financial District - 750 Kearny St",
      "directions": "Meet at Hilton Fincial District at 750 Kearny St.",
      "latitude": 37.7952284,
      "longitude": -122.4040729
    },
  ],
  "checkedIn": false,
  "checkinAvailable": true,
  "checkinUrl": "https://website.com/en/checkin?order_token=6d2d9d36-8001-41c6-b716-fccfb5117cf9&booking=1ec5dae4-230e-495d-80b7-0fd5def983f5"
}

With this capability enabled we'll add checkedIn checkinAvailable and checkinUrl to each booking. A sample of just these changes are:

{
  // ... rest of the booking object
  "checkedIn": false,
  "checkinAvailable": true,
  "checkinUrl": "https://website.com/en/checkin?order_token=6d2d9d36-8001-41c6-b716-fccfb5117cf9&booking=1ec5dae4-230e-495d-80b7-0fd5def983f5"
}

Field

Definition

checkedIn

Whether the booking is checked in already

checkinAvailable

If true then check-in is available for this booking and you can offer it to the guest. We strongly encourage you to do this as it will speed up entry for the guest before they arrive.

checkinUrl

This is the URL to send the guest to complete their checkin. This value will be set if checkinAvailable is true otherwise it will be null

Last updated