Go City Trade API (V2)

Download OpenAPI specification:

The Go City Trade API is for trade partners to create and manage their Go City orders. This version of the API is compliant with the OCTO standards. As of Nov 2024 it is not yet ready for testing or usage but we are providing this documentation so that our API consumers can prepare their migrations. It does not interfere with the V1 API in any way.

Authorization

We currently support Bearer token authorization on all of the endpoints. You should receive credentials/instructions from your connectivity manager.

Go City Metadata

The following are Go City specific properties which can be used to describe and/or narrow down the product offerings:
Product: destinationId/destinationName, brand, durationType, variant
Option: durationValue
Unit: type

Using a combination of the properties above implementors should be able to filter down into specific products/units.
ex.
Destination: New York
Brand: GoCity
Duration Type: CHOICE
Duration Value: 3
Variant: Standard
Type: ADULT

** IMPORTANT **
If there is any intent to store these values from your end, it is recommended to store and use these in a case insensitive manner while ignoring whitespaces. Values may be added or removed depending on the product variations you have been offered to sell.

Octo-Capabilities

Our octo implementation provides certain capabilities when making requests such as including pricing. To do this with us, you may include the Octo-Capabilities header, or the _capabilities request parameter to enable a capability. Currently only the octo/pricing capability is supported.
To enable pricing you can either:

Use the headers - include a header with key Octo-Capabilities and value octo/pricing.
OR use request parameters - add a request parameter with name _capabilities and value octo/pricing


In either case, the value is a comma delimited string (ex. 'octo/pricing,octo/content')
Only available in staging as of Aug 12.

Products

At Go City, our products are our passes. Under the OCTO specification, we have one product per a combination of destination, brand [Go City, Great, Big Bus, Omnia], duration type [Days (All-Inclusive), Choices (Explorer)], and variant [Standard, Plus, Lite, Deluxe, Single-Sell]. Within each combination, we have multiple options for each duration and type [Pass, Extension], e.g 1-Day Standard Pass or 1-Choice Extension. Within our Chicago Go City All-Inclusive Standard product, we have 1 Day Standard Pass. Each option then has three possible units; an Adult unit, a Child unit, and a VIP unit.

Get Products

Fetch the list of products. Prices are included.

Authorizations:
bearerAuth
query Parameters
priceDistributionModel
string
Default: "PUBLIC"

Possible values are PUBLIC, or RESTRICTED. Defaults to PUBLIC if not specified.

Responses

Response samples

Content type
application/json
Example
[
  • {
    }
]

Get Product

Fetch the product for the given id. Prices are included.

Authorizations:
bearerAuth
path Parameters
id
required
string

The ID of a unit

query Parameters
priceDistributionModel
string
Default: "PUBLIC"

Possible values are PUBLIC, or RESTRICTED. Defaults to PUBLIC if not specified.

Responses

Response samples

Content type
application/json
Example
{
  • "id": "9badb9eb-859b-37b6-9546-29f3a253d5f4",
  • "internalName": "Chicago Explorer Pass",
  • "reference": "CHI Go C Df",
  • "locale": "en",
  • "timeZone": "America/Chicago",
  • "allowFreesale": true,
  • "instantConfirmation": true,
  • "instantDelivery": true,
  • "availabilityRequired": true,
  • "destinationId": "b083eec7-4310-4c38-8761-b3a323553336",
  • "destinationName": "Chicago",
  • "brand": "Go City",
  • "durationType": "CHOICE",
  • "variant": "Default",
  • "availabilityType": "OPENING_HOURS",
  • "deliveryFormats": [
    ],
  • "deliveryMethods": [
    ],
  • "redemptionMethod": "DIGITAL",
  • "options": [
    ],
  • "defaultCurrency": null,
  • "availableCurrencies": null,
  • "pricingPer": null
}

Availability

Even though our products are always available, we have implemented the Availability step of the OCTO journey for the convenience of our API consumers.

Availability Check

Check availability before making a booking. This endpoint will return an object for each individual departure time (or day). You have to perform this step to retrieve an availabilityId in order to confirm a sale.

Authorizations:
bearerAuth
query Parameters
priceDistributionModel
string
Default: "PUBLIC"

Possible values are PUBLIC, or RESTRICTED. Defaults to PUBLIC if not specified.

Request Body schema: application/json
required
productId
required
string

The product ID.

optionId
required
string non-empty

The option ID.

localDate
string <date>

A single date for availability check. Use this OR localDateStart/localDateEnd OR availabilityIds.

localDateStart
string <date>

The start date of the booking. Use this with localDateEnd OR use localDate OR availabilityIds.

localDateEnd
string <date>

The end date of the booking. Use this with localDateStart OR use localDate OR availabilityIds.

availabilityIds
Array of strings

Filter the results by the given availability IDs. Use this OR localDate OR localDateStart/localDateEnd.

Array of objects (Octo Availability Unit)

A list of units.

Responses

Request samples

Content type
application/json
Example
{
  • "productId": "b562eb9f-1836-38e9-9184-4099888e53c3",
  • "optionId": "1859be8e-4c33-4cda-a0bd-f2bf4e7a589c",
  • "units": [
    ],
  • "localDateStart": "2025-06-01",
  • "localDateEnd": "2025-06-10"
}

Response samples

Content type
application/json
Example
[
  • {
    }
]

Bookings

To buy a pass you must first create a Booking and then confirm it. With your booking ID you can then make modifications to your pass order.

Get Bookings

This endpoint will fetch the bookings you have made for the given filters.

Authorizations:
bearerAuth
query Parameters
resellerReference
string

The reseller reference on the booking.

supplierReference
string

The reference provided by the supplier.

localDate
string

All bookings made for a specific date.

localDateStart
string

First date of a date range search.

localDateEnd
string

Last date of a date range search.

productId
string

The product id to filter by.

optionId
string

The option id to filter by.

Responses

Response samples

Content type
application/json
Example
[
  • {
    }
]

Booking Reservation

Create a booking that reserves the availability while you collect payment and contact information from the customer. The booking will remain with status ON_HOLD until the booking is confirmed or the reservation hold expires.

Authorizations:
bearerAuth
query Parameters
priceDistributionModel
string
Default: "PUBLIC"

Possible values are PUBLIC, or RESTRICTED. Defaults to PUBLIC if not specified.

Request Body schema: application/json
required
uuid
string <uuid>

A unique UUID to identify the booking. Setting this value acts like an idempotency key preventing you from double booking.

productId
string

The product ID for this booking.

optionId
string

The option ID for this booking.

availabilityId
string

The availability ID for the selected timeslot.

expirationMinutes
integer <int64>

How many minutes to reserve the availability, otherwise defaults to 60

notes
string

Optional notes for the booking.

Array of objects (OctoRequestUnit)

An list of unit items that will be included in the booking.

priceDistributionModel
string

The price distribution model for this booking.

Responses

Request samples

Content type
application/json
{
  • "uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
  • "productId": "b1f2c109-5c67-3c67-927b-2152a0d55f81",
  • "optionId": "cf613291-3777-401f-8d2b-dad9259501a2",
  • "availabilityId": "2025-07-10T00:00:00Z~5",
  • "notes": "Optional notes for the booking",
  • "expirationMinutes": 30,
  • "unitItems": [
    ],
  • "priceDistributionModel": "PUBLIC"
}

Response samples

Content type
application/json
Example
{
  • "id": "3afbaa05-c65b-4492-af39-43c863270435",
  • "uuid": "3afbaa05-c65b-4492-af39-43c863270435",
  • "supplierReference": "0201055476",
  • "resellerReference": "pao-regression-p34",
  • "testMode": true,
  • "status": "CREATED",
  • "utcCreatedAt": "2025-08-11T15:47:22Z",
  • "utcUpdatedAt": "2025-08-11T15:47:22Z",
  • "utcExpiresAt": "2026-08-12T05:00:00Z",
  • "redeemedAt": null,
  • "utcConfirmedAt": null,
  • "productId": "9badb9eb-859b-37b6-9546-29f3a253d5f4",
  • "product": {
    },
  • "optionId": "a91cb3bc-08a9-3414-a876-67507b035f9a",
  • "option": {
    },
  • "cancellable": true,
  • "cancellation": null,
  • "freesale": false,
  • "availabilityId": "2025-08-07T00:00:00Z",
  • "availability": {
    },
  • "contact": {
    },
  • "notes": null,
  • "deliveryMethods": [
    ],
  • "voucher": {},
  • "unitItems": [
    ],
  • "pricing": null
}

Booking Confirmation

This endpoint confirms the booking so it's ready to be used.

Authorizations:
bearerAuth
path Parameters
id
required
string

The UUID of the booking

query Parameters
priceDistributionModel
string
Default: "PUBLIC"

Possible values are PUBLIC, or RESTRICTED. Defaults to PUBLIC if not specified.

Request Body schema: application/json
required
emailReceipt
boolean

Whether you want Go City to email the customer their passes.

resellerReference
string

Your reference for this booking. Also known as an Order Number.

object (OctoContact)

Contact details for the main guest who will attend the tour/attraction. Contact should be applied to only the booking object.

Array of objects (Octo Unit Item)

An array of unit items that will be included in the booking. This allows you to provide contact details or a reseller reference for each unit item. Be careful to make sure you include ALL unit items that you also had in the original booking reservation request, if you provide more or less than in the booking reservation call this will change the number of unit items being purchased also

Responses

Request samples

Content type
application/json
{
  • "resellerReference": "octotest8",
  • "contact": {
    }
}

Response samples

Content type
application/json
Example
{
  • "id": "3afbaa05-c65b-4492-af39-43c863270435",
  • "uuid": "3afbaa05-c65b-4492-af39-43c863270435",
  • "supplierReference": "0201055476",
  • "resellerReference": "pao-regression-p34",
  • "testMode": true,
  • "status": "CONFIRMED",
  • "utcCreatedAt": "2025-08-11T15:47:22Z",
  • "utcUpdatedAt": "2025-08-11T15:47:22Z",
  • "utcExpiresAt": "2026-08-12T05:00:00Z",
  • "redeemedAt": null,
  • "utcConfirmedAt": "2025-08-11T15:47:22Z",
  • "productId": "9badb9eb-859b-37b6-9546-29f3a253d5f4",
  • "product": {
    },
  • "optionId": "a91cb3bc-08a9-3414-a876-67507b035f9a",
  • "option": {
    },
  • "cancellable": true,
  • "cancellation": null,
  • "freesale": false,
  • "availabilityId": "2025-08-07T00:00:00Z",
  • "availability": {
    },
  • "contact": {
    },
  • "notes": null,
  • "deliveryMethods": [
    ],
  • "voucher": {},
  • "unitItems": [
    ],
  • "pricing": null
}

Booking Cancellation

A booking can only be cancelled if booking.cancellable is TRUE, and it is within the booking cancellation cut-off window.

Authorizations:
bearerAuth
path Parameters
id
required
string

The UUID of the booking

Request Body schema: application/json
required
force
boolean

Whether you want to force cancel this booking

reason
string

A text value describing why the cancellation happened.

Responses

Request samples

Content type
application/json
{
  • "force": true,
  • "reason": "Customer Requested"
}

Response samples

Content type
application/json
Example
{
  • "id": "3afbaa05-c65b-4492-af39-43c863270435",
  • "uuid": "3afbaa05-c65b-4492-af39-43c863270435",
  • "supplierReference": "0201055476",
  • "resellerReference": "pao-regression-p34",
  • "testMode": true,
  • "status": "CANCELLED",
  • "utcCreatedAt": "2025-08-11T15:47:22Z",
  • "utcUpdatedAt": "2025-08-11T15:47:57Z",
  • "utcExpiresAt": "2026-08-12T05:00:00Z",
  • "redeemedAt": null,
  • "utcConfirmedAt": "2025-08-11T15:47:22Z",
  • "productId": "9badb9eb-859b-37b6-9546-29f3a253d5f4",
  • "product": {
    },
  • "optionId": "a91cb3bc-08a9-3414-a876-67507b035f9a",
  • "option": {
    },
  • "cancellable": false,
  • "cancellation": {
    },
  • "freesale": false,
  • "availabilityId": "2025-08-07T00:00:00Z",
  • "availability": {
    },
  • "contact": {
    },
  • "notes": null,
  • "deliveryMethods": [
    ],
  • "voucher": {
    },
  • "unitItems": [
    ],
  • "pricing": null
}

Get Booking

Fetch the status of an existing booking.

Authorizations:
bearerAuth
path Parameters
id
required
string

The UUID of the booking

Responses

Response samples

Content type
application/json
Example
{
  • "id": "3afbaa05-c65b-4492-af39-43c863270435",
  • "uuid": "3afbaa05-c65b-4492-af39-43c863270435",
  • "supplierReference": "0201055476",
  • "resellerReference": "pao-regression-p34",
  • "testMode": true,
  • "status": "CONFIRMED",
  • "utcCreatedAt": "2025-08-11T15:47:22Z",
  • "utcUpdatedAt": "2025-08-11T15:47:22Z",
  • "utcExpiresAt": "2026-08-12T05:00:00Z",
  • "redeemedAt": null,
  • "utcConfirmedAt": "2025-08-11T15:47:22Z",
  • "productId": "9badb9eb-859b-37b6-9546-29f3a253d5f4",
  • "product": {
    },
  • "optionId": "a91cb3bc-08a9-3414-a876-67507b035f9a",
  • "option": {
    },
  • "cancellable": true,
  • "cancellation": null,
  • "freesale": false,
  • "availabilityId": "2025-08-07T00:00:00Z",
  • "availability": {
    },
  • "contact": {
    },
  • "notes": null,
  • "deliveryMethods": [
    ],
  • "voucher": {},
  • "unitItems": [
    ],
  • "pricing": null
}

Supplier

Get Supplier

Fetch supplier information.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{}