{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/tickets-dev/json-schema/tickets-dev-snapshot-schema.json",
  "title": "Snapshot",
  "description": "One capture: every listing on one event page on one marketplace, at capturedAt.",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/tickets-dev-openapi.json#/components/schemas/Snapshot",
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "description": "The marketplace, e.g. stubhub."
    },
    "eventId": {
      "type": "string",
      "description": "The marketplace's own id for the event."
    },
    "eventName": {
      "type": "string",
      "description": "Event title."
    },
    "performers": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Performers, as the marketplace lists them."
    },
    "venueId": {
      "type": "string",
      "description": "The marketplace's own venue id."
    },
    "venueName": {
      "type": "string",
      "description": "Venue name."
    },
    "venueAddress": {
      "type": "string",
      "description": "Street address of the venue."
    },
    "venueCity": {
      "type": "string",
      "description": "Venue city."
    },
    "venueState": {
      "type": "string",
      "description": "Venue state or province."
    },
    "venueTimezone": {
      "type": "string",
      "description": "Venue time zone, where the marketplace gives one."
    },
    "eventDateLocal": {
      "type": "string",
      "description": "Event date and time, venue-local ISO 8601 with offset."
    },
    "eventDateUtc": {
      "type": "string",
      "description": "The same moment in ISO 8601 UTC."
    },
    "sourceUrl": {
      "type": "string",
      "description": "The event page the capture read."
    },
    "capturedAt": {
      "type": "string",
      "description": "When the capture ran, ISO 8601 UTC."
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency of every price in the snapshot."
    },
    "note": {
      "type": "string",
      "description": "The marketplace's notice, e.g. sold out or canceled. An empty capture with no note may be a partial page."
    },
    "sectionLevelUrl": {
      "type": "string",
      "description": "With includeVenueMaps: section map SVG; shapes carry the listings' section names."
    },
    "seatLevelUrl": {
      "type": "string",
      "description": "With includeVenueMaps: seat or row level map SVG."
    },
    "stats": {
      "$ref": "#/$defs/Stats"
    },
    "listings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Listing"
      }
    },
    "venueLayout": {
      "type": "object",
      "description": "Sections, rows and seats of the venue map, where available."
    }
  },
  "$defs": {
    "Listing": {
      "type": "object",
      "properties": {
        "listingId": {
          "type": "string",
          "description": "The marketplace's own id for the listing: compare it within one marketplace only."
        },
        "inventoryType": {
          "type": "string",
          "description": "primary or resale."
        },
        "section": {
          "type": "string",
          "description": "Section, as the marketplace names it. Matches data-section in the seat map SVG."
        },
        "row": {
          "type": "string",
          "description": "Row label."
        },
        "seats": {
          "type": "string",
          "description": "Comma-separated seat numbers, when the marketplace shows them."
        },
        "quantity": {
          "type": "number",
          "description": "Seats available in this listing."
        },
        "sellableQuantities": {
          "type": "string",
          "description": "Quantities a buyer can buy, e.g. \"2,4\". A listing of 3 selling as \"1,3\" cannot sell 2."
        },
        "ticketPrice": {
          "type": "number",
          "description": "Face price per ticket, before fees."
        },
        "fee": {
          "type": "number",
          "description": "Per-ticket fees. 0 where the marketplace shows only an all-in price."
        },
        "totalPrice": {
          "type": "number",
          "description": "All-in price per ticket, excluding sales tax, with the same meaning on every marketplace."
        },
        "ticketType": {
          "type": "string",
          "description": "Delivery or ticket type, as the marketplace shows it."
        },
        "group": {
          "type": "string",
          "description": "The marketplace's zone or price level, e.g. 100 Level."
        },
        "listingNotes": {
          "type": "string",
          "description": "Listing features, e.g. Clear view or Obstructed view."
        },
        "dealScore": {
          "type": "string",
          "description": "The marketplace's own value score, as it shows it. Empty where it shows none."
        }
      }
    },
    "Stats": {
      "type": "object",
      "properties": {
        "listingCount": {
          "type": "number",
          "description": "Listings on the page."
        },
        "ticketCount": {
          "type": "number",
          "description": "Tickets across all listings."
        },
        "getInPrice": {
          "type": "number",
          "description": "Lowest all-in price per ticket. 0 when there are no listings."
        },
        "medianPrice": {
          "type": "number",
          "description": "Median all-in price per ticket."
        },
        "avgPrice": {
          "type": "number",
          "description": "Mean all-in price per ticket."
        },
        "maxPrice": {
          "type": "number",
          "description": "Highest all-in price per ticket."
        }
      }
    }
  }
}