SpotMap
A venue spot map. Belongs to a location, optionally narrowed to one facility (a single auditorium inside a multi-screen building).
Layout-only — for per-session occupancy (sold, held, viewer-held), read ActivitySession.seating.
Fields
idID!nameString!viewportWidthFloat!The map's drawing box, in the abstract units spot coordinates use.
viewportHeightFloat!stageSpotMapStageartworkSpotMapArtworkelements[SpotMapElement!]!sections[SpotMapSection!]!spots[Spot!]!Spots in one section.
A section argument is required, and deliberately so: a 21,000-spot arena serialized spot-by-spot is roughly four megabytes, which no picker should ever ask for. Clients render the whole house from blocks + overrides (about 20 KB for that same arena) and only fetch real spot rows for the section the buyer has actually opened.
Arguments (1)
sectionEntityRef!boundsSpotMapBounds!holdSecondsInt!How long a spot stays held while a buyer completes checkout.
spotCountInt!Total spots, including withheld ones.
sellableSpotCountInt!Spots on general sale — excludes house spots, kills, and accessibility holds.
blocks[SpotBlock!]!The generative block rules the spots were expanded from.
This is the map's wire format. Expanding these client-side with the shared @sessions-internal/core/spot-map expander reproduces every spot exactly — same positions, same labels, same deterministic ids — so the picker can draw a whole arena without the server ever sending a spot. Apply overrides on top afterwards.
overrides[SpotOverride!]!Per-spot deviations from what the rules generate — the spots an operator nudged, relabelled, or withheld by hand. Small by construction, and the second half of reproducing the map client-side.