{"templateId":"openapi_docs","sharedDataIds":{"openAPIDocsStore":"oas-apis/production/ListingsApiV1.yml","sidebar":"sidebar-sidebar.yaml__apis_production_listingsapiv1"},"props":{"definitionId":"apis/production/ListingsApiV1.yml","dynamicMarkdocComponents":[],"baseSlug":"/apis/production/listingsapiv1","seo":{"title":"Listings API V1","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"itemId":"","disableAutoScroll":true,"metadata":{"type":"openapi","title":"Listings API V1","description":"## Overview\n\nThe Listings API V1 is a **venue-aggregated** discovery interface.\n\nThe response root carries `meta` and `listings[]`. Each entry in `listings[]`\nis a `ListingGroup` — one per operator (venue-group / chain), carrying a\n`groupName` and an `items[]` array.\n\nEach `item` represents a single venue (or a standalone event when no venue is\nknown): it carries the venue `name`, a `location`, and a `capabilities[]`\narray. Each entry in `capabilities[]` is a `Listing` with exactly **one**\ncapability (`table_reservation` or `event_ticket`), and carries its own\n`photos[]`. A venue that also hosts a ticketed event therefore yields a single\nitem with two capabilities — one for the venue, one for the event.\n\nAll bookable units (venue products, event ticket types, future capability\ntypes) are unified under a single `bookableProducts[]` array. Every entry is a\nsingle `Bookable` shape; capability-specific fields are nullable and the\nparent Listing's `capability` sets the context.\n\nTemporal information (venue opening hours, event occurrences, blackout\ndates) is unified under a single `availabilityOccurrence[]` field of `CalendarRule`s.\nBoth capabilities use the same shape.\n\nPre-order assets (packages, menus) are unified under a single `preorders`\ncontainer — applicable to either capability when the listing supports\npre-orders.\n\n## ID formats — two distinct identifiers, both CompositeId-encoded\n\n`Listing.id` (venue or event, as returned in `/v1/listings`) is 3 segments:\n`{VenueGroupId}|{RmsSlug}|{ResourceId}`. For a hybrid entity the event-side\nrow uses the EventExt's CompositeId (different `RmsSlug` + `ResourceId`) so\nthe two rows are unambiguous.\n\n`Bookable.compositeId` (a specific bookable product/ticket type — used in\n`bookableProducts[]`, and as the `compositeId` in `/v1/availabilities` and\n`/v1/orders`) is 4 segments: `{VenueGroupId}|{RmsSlug}|{ResourceId}|{AdditionalId}`.\nThese are two different identifiers for two different things, not two\ninterchangeable formats for the same one — a `Listing.id` never appears where\na `Bookable.compositeId` is expected, or vice versa.\n"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"docs.bookabletech.com","port":4000,"ipAddress":"216.73.216.98"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"master"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/apis/production/listingsapiv1","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}