Seating

Seating (or the display and selection of individual seats) is key to the ticketing process. As such, an understanding of the concepts and APIs in this area is required before creating a client application for ticketing.

Seat selection

A seat selection user interface (UI) must render the seat layout data, combined with the current seat availability to display an up-to-date indication of the available seats.

The seat selection UI should also enforce any relevant seat selection rules to ensure optimal allocation of available seats.

NOTE

For access to React-based seat selection UI reference code, talk to your local Vista representative.

Seat layouts

A seat layout describes a physical auditorium, including its areas and seats. A seat layout is considered largely static and will be heavily cached by the Digital API. Each site has a number of screens (theatres/auditoriums), and each screen may have multiple seat layouts (configurations).

Each showtime is linked to a particular seat layout. To load a particular seat layout, use the GetSeatLayout endpoint with the relevant seatLayoutId for the showtime.

Area categories

Each seat layout includes a number of areas. Each area belongs to an area category that determines which ticket(s) can be purchased for seats within the area.

IMPORTANT

The client UI must restrict ticket and/or seat selection based on the area categories and quantities of the previously selected tickets/seats.

Seat allocation

Seat allocation may be required or disabled for a particular showtime, depending its isAllocatedSeating property. When isAllocatedSeating is false:

  • The seat selection process must be skipped by the client.
  • Patrons will not be able to select seats particular seats. It will be 'first-come, first-served' at the cinema.
  • Patrons will not be able to access seat availability information.

A showtime with allocated seating may automatically allocate seats during ticket selection, note:

  • If auto-allocation is disabled, the patron MUST select seats manually.
  • If auto-allocation fails due to limitations in the allocation algorithm, the patron MUST select seats manually.
  • If auto-allocation is successful, the patron may skip seat selection. However, it is typical for a seat selection UI to be presented to allow the patron to review or change their allocated seats.

Seat types

Vista supports a number of different seat types which behave slightly differently. Typically the seat selection UI components handle the rules around these.

Type Description
Normal A regular single seat.
Sofa Sofa seats are grouped together to represent any multi-person seating arrangement. Often it is enforced that a patron purchases tickets for the entire sofa rather than a part of it.
Wheelchair These represent locations reserved in the theatre for those in a wheelchair.
Companion seat These represent seats placed adjacent to wheelchair seats and reserved for companions of the wheelchair occupant. Often it is enforced that these can only be selected when the linked wheelchair seat is also selected.
NOTE

Sofa seat groups consist of one SofaLeft and one SofaRight seat, and may include one or more SofaMiddle seats between the left and right seats.

Seat selection rules

The rules around how and when seats can be reserved is highly configurable in Vista applications, including rules such as:

  • Patrons can't leave a single seat gap between selected seats.
  • Patrons can't leave a single seat gap between selected seats and unavailable seats.
  • Patrons can't leave a single seat gap between a seat and the aisle.
  • Patrons can't select a companion seat without also selecting a wheelchair seat.
  • Patrons must select all seats within a sofa seat group.
NOTE

This logic is enforced in the UI layer only. The Digital API will not enforce any rules around seat types or locations.

Seat availability

Seat availability represents the current Sold/Available status of each seat in a showtime. Use the GetSeatAvailabilityForShowtime endpoint to load the current seat availability information for a particular showtime.

Seat availability is considered 'live data' and is only micro-cached for a few seconds.

Seat previews

When displaying a non-interactive preview of seat availability for a showtime, use the ?preview=true request parameter of the GetSeatAvailabilityForShowtime endpoint to load a more heavily cached version of the data.

IMPORTANT

Omit the ?preview=true request parameter when loading seat availability for an interactive seat selection UI to ensure that the most up-to-date seat availability is displayed for seat selection.

Existing orders

For existing ticket orders, use the GetSeatAvailabilityForOrder endpoint to load the current seat availability of a showtime in the context of the particular order. This endpoint:

  • Returns the Available status for any seats that have already been reserved for the order.
  • Returns the House status for any seats that have been blocked due to social distance seating rules.