Skip to main content

07 — Suite & Section Mapping

What it is: Venue master data — how sections are configured for display, how suites are defined, and how partial suite sales work. None of this is per-event; it's defined once and applies to all events at the venue.


Section config

tbl_section_config

Optional overrides per section. All fields except PK are nullable.

FieldNotes
sectionNamePK — the vendor section name
displayNamewhat the fan sees instead of the vendor name
internalMapSectionNameID used to fetch the interior view from the map vendor
externalMapSectionNameID used to fetch the exterior view
  • No FK to tbl_sections — seats/sections are hard-deleted and rebuilt on each inventory refresh; config must survive that.
  • Auto-populated during inventory build (ON CONFLICT DO NOTHING) — admin customizations are never overwritten.
  • TM: section name = display name (nothing to do). Tickets.com: section name is an ID, so display name must be extracted.

Suite types

tbl_suite_types

A thin category above suites — title + description + content blocks. Built for the Premium UI; its main job is filter-by-suite-type.

FieldNotes
suiteTypeNameinternal name
displayNamecard title fan sees
shortDescriptionone-liner for carousel cards
descriptionfull marketing paragraph for detail page
contentJSONB — amenities, offerings (structured EntityContent)
displayOrdercontrols sort order

Images managed via tbl_asset_entity_mapping with entityCode = 'suite_type'.


Suites

tbl_suites

Real seats grouped to sell as one block. Event-agnostic — same suite definition across all events.

FieldNotes
totalSeatCountteam-provided, must match actual seat mapping count (app validates)
allowPartialSalecan this suite be split?
partialSaleModenull, count_based, or block_based
internalMapSuiteNamemap vendor ID for interior view
externalMapSuiteNamemap vendor ID for exterior view
suiteTypeIdoptional FK to suite type

Map integration note: if suite-level map names are set, tbl_section_config map fields are not needed for this suite — suite-level takes precedence.

tbl_suite_seat_mapping

Which seats make up the suite (section + row + seat number). Three composition patterns are all stored the same way:

  1. Entire section(s)
  2. Entire row(s)
  3. Individual seats (non-contiguous is fine)

No FK to tbl_seats — same reason as section config (inventory rebuild hard-deletes seats). Availability is checked at query time by JOINing with tbl_seats using the event's eventCode.

tbl_suite_overflow_seat_mapping

Additional seats (same shape as tbl_suite_seat_mapping) that a suite buyer can optionally add. Backs the overflow add-on. These are NOT joined against tbl_seats — overflow inventory is opaque and determined by the vendor at hold time.

TM Host note: seats within a single (sectionName, rowName) must be contiguous for TM Host. Archtics has no contiguity requirement.


Partial sale tables

Count-based (partialSaleMode = 'count_based')

tbl_suite_partial_counts — one row per allowed quantity.

Suite: 20 seats
partialCount: 4 → can buy 4
partialCount: 10 → can buy 10
partialCount: 20 → can buy all 20

The application/vendor decides which specific seats. If 20 is not in the list, the full suite is hidden.

Block-based (partialSaleMode = 'block_based')

Defined but effectively unused in practice — too much configuration work.

tbl_suite_partial_blocks — named blocks (e.g. "Front Row", "Bar Area"). tbl_suite_partial_block_seats — explicit seat assignments per block. Blocks can overlap (same seat in multiple blocks); app handles conflict resolution.


Key rules

  • allowPartialSale = falsepartialSaleMode must be null
  • allowPartialSale = truepartialSaleMode must be count_based (the admin create/update API rejects block_based; the block-based tables exist but aren't wired into validation)
  • When partials are on, the full suite is hidden unless you add a partial equal to full size
  • Suite tables survive inventory rebuilds — they're venue master data, not inventory data
  • totalSeatCount is declared, not auto-calculated — app validates it matches the actual seat mapping count