Skip to main content
Glama

Ticketmaster Discovery MCP Server

models.py22.6 kB
# generated by fastapi-codegen: # filename: openapi.yaml # timestamp: 2025-06-29T10:30:35+00:00 from __future__ import annotations from datetime import date, datetime from enum import Enum from typing import Dict, List, Optional from pydantic import BaseModel, Field, RootModel class AccessDates(BaseModel): endApproximate: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the access end date is approximated', examples=['yyyy-MM-ddThh-mm-ssZ'], ) endDateTime: Optional[datetime] = Field( None, description="Event's end access time", examples=['yyyy-MM-ddThh-mm-ssZ'] ) startApproximate: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the access start date is approximated', ) startDateTime: Optional[datetime] = Field( None, description="Event's start access time", examples=['yyyy-MM-ddThh-mm-ssZ'] ) class Accessibility(BaseModel): info: Optional[str] = Field(None, description="Accessibility's information") class Address(BaseModel): line1: Optional[str] = Field(None, description='Address first line') line2: Optional[str] = Field(None, description='Address second line') line3: Optional[str] = Field(None, description='Address third line') class Area(BaseModel): name: Optional[str] = Field(None, description='Name of the entity') class Type(Enum): event = 'event' venue = 'venue' attraction = 'attraction' class AttractionExtensions(BaseModel): pass class Attribution(BaseModel): licenceName: Optional[str] = Field(None, description='LicenceName') licenceUrl: Optional[str] = Field(None, description='LicenceUrl') sourceName: Optional[str] = Field(None, description='SourceName') sourceUrl: Optional[str] = Field(None, description='SourceUrl') class Attributions(BaseModel): description: Optional[Attribution] = None descriptions: Optional[Dict[str, Attribution]] = Field( None, description='Attribution descriptions - multi-lingual fields' ) class City(BaseModel): name: Optional[str] = Field(None, description='Name of the entity') class Country(BaseModel): countryCode: Optional[str] = Field(None, description='Country code (ISO 3166)') name: Optional[str] = Field(None, description='Name of the entity') class DateTimeZone(BaseModel): fixed: Optional[bool] = False id: Optional[str] = None class DisplaySettingExtension(BaseModel): softLanding: Optional[bool] = Field( False, description="True the landing is Soft otherwise it's Comingled" ) class Dma(BaseModel): id: Optional[int] = Field(None, description="DMS's id") class DurationFieldType(BaseModel): name: Optional[str] = None class EntityChanges(BaseModel): changes: Optional[List[str]] = None newlyCreated: Optional[bool] = False class EventExtensions(BaseModel): pass class Type2(Enum): event = 'event' class Code(Enum): onsale = 'onsale' offsale = 'offsale' canceled = 'canceled' postponed = 'postponed' rescheduled = 'rescheduled' class EventStatus(BaseModel): code: Optional[Code] = Field(None, description="The event's status code") class Extension(BaseModel): pass class ExternalLink(BaseModel): id: Optional[str] = Field( None, description='An external link id is the unique identifier of a resource on a different domain or api', ) url: Optional[str] = Field( None, description='An external link url is a url that goes to a different domain or api', ) class Genre(BaseModel): id: Optional[str] = Field(None, description="The ID of the classification's level") name: Optional[str] = Field( None, description="The Name of the classification's level" ) class HostExtension(BaseModel): pass class Ratio(Enum): field_16_9 = '16_9' field_3_2 = '3_2' field_4_3 = '4_3' class Image(BaseModel): attribution: Optional[str] = Field(None, description='Attribution of the image') fallback: Optional[bool] = Field( False, description="true if the image is not the event's image but a fallbak image", ) height: Optional[int] = Field(None, description='Height of the image') ratio: Optional[Ratio] = Field(None, description='Aspect ratio of the image') url: Optional[str] = Field(None, description='Public URL of the image') width: Optional[int] = Field(None, description='Width of the image') class Level(BaseModel): id: Optional[str] = Field(None, description="The ID of the classification's level") name: Optional[str] = Field( None, description="The Name of the classification's level" ) class Locale(BaseModel): country: Optional[str] = None displayCountry: Optional[str] = None displayLanguage: Optional[str] = None displayName: Optional[str] = None displayScript: Optional[str] = None displayVariant: Optional[str] = None extensionKeys: Optional[List[str]] = None iso3Country: Optional[str] = None iso3Language: Optional[str] = None language: Optional[str] = None script: Optional[str] = None unicodeLocaleAttributes: Optional[List[str]] = None unicodeLocaleKeys: Optional[List[str]] = None variant: Optional[str] = None class Location(BaseModel): latitude: Optional[float] = Field(None, description='Latitude') longitude: Optional[float] = Field(None, description='Longitude') class Market(BaseModel): id: Optional[str] = Field(None, description="Market's id") class Outlet(BaseModel): type: Optional[str] = Field(None, description="Outlet's type") url: Optional[str] = Field(None, description="Outlet's url") class Parking(BaseModel): name: Optional[str] = Field(None, description='Name of the entity') url: Optional[str] = Field(None, description='Url to the web page of the parking') class Presale(BaseModel): description: Optional[str] = Field(None, description='Description of the presame') endDateTime: Optional[datetime] = Field( None, description="Presale's end dates. The date and time when the presale will end", ) name: Optional[str] = Field(None, description='Name of the presale') startDateTime: Optional[datetime] = Field( None, description="Presale's start dates. The date and time when the presale will start", ) url: Optional[str] = Field(None, description='Presale link URL') class Type3(Enum): standard = 'standard' class PriceRange(BaseModel): currency: Optional[str] = Field(None, description='Currency') max: Optional[float] = Field(None, description='Maximum price') min: Optional[float] = Field(None, description='Minimum price') type: Optional[Type3] = Field(None, description='Type of price') class Product(BaseModel): id: Optional[str] = Field(None, description="Product's primary id") name: Optional[str] = Field(None, description='Name of the entity') type: Optional[str] = Field(None, description="Product's type") url: Optional[str] = Field(None, description="Product's url") class Promoter(BaseModel): description: Optional[str] = Field(None, description='Description of the promoter') id: Optional[str] = Field(None, description='Id of the promoter') name: Optional[str] = Field(None, description='Name of the promoter') class PublicSaleDates(BaseModel): endDateTime: Optional[datetime] = Field( None, description="Public sale's end dates. The date and time when the public sale will end", ) startDateTime: Optional[datetime] = Field( None, description="Public sale's start dates. The date and time when the public sale will start", ) startTBD: Optional[bool] = Field( False, description="True if the public sale's date is to be determined" ) class PublicVisibility(BaseModel): pass class Type4(Enum): duplicate = 'duplicate' class Relationship(BaseModel): id: Optional[str] = Field(None, description='The ID of the related entity') references: Optional[Dict[str, str]] = Field( None, description='References of this relationship in another system. Reference is the exact same entity', examples=['sourceName: id'], ) source: Optional[str] = Field( None, description='The source name of the related entity' ) type: Optional[Type4] = Field(None, description='The type of the relationship') class SeatMap(BaseModel): staticUrl: Optional[str] = Field(None, description='Static Seatmap Url') class Segment(BaseModel): id: Optional[str] = Field(None, description="The ID of the classification's level") name: Optional[str] = Field( None, description="The Name of the classification's level" ) class Source(BaseModel): pass class State(BaseModel): name: Optional[str] = Field(None, description='Name of the entity') stateCode: Optional[str] = Field(None, description='State code') class TatExtension(BaseModel): pass class TicketmasterAttractionExtensions(BaseModel): pass class TicketmasterEventExtensions(BaseModel): displaySettings: Optional[DisplaySettingExtension] = None class TicketmasterVenueExtensions(BaseModel): pass class Handle(Enum): field_a_Twitter_handle = '@a Twitter handle' class Twitter(BaseModel): handle: Optional[Handle] = Field( None, description='Twitter handle', examples=['@a Twitter handle exampe'] ) hashtags: Optional[List[str]] = Field( None, description='Twitter hashtags', examples=['#hashtag example #hashtag another example'], ) class Type5(Enum): event = 'event' venue = 'venue' attraction = 'attraction' class VenueBoxOfficeInfo(BaseModel): acceptedPaymentDetail: Optional[str] = Field( None, description='Venue box office accepted payment details' ) openHoursDetail: Optional[str] = Field( None, description='Venue box office opening hours' ) phoneNumberDetail: Optional[str] = Field( None, description='Venue box office phone number' ) willCallDetail: Optional[str] = Field( None, description='Venue box office will call details' ) class VenueGeneralInfo(BaseModel): childRule: Optional[str] = Field(None, description='Venue children rule') generalRule: Optional[str] = Field(None, description='Venue general rules') class Source1(Enum): ticketmaster = 'ticketmaster' field_universe = ' universe' field_frontgate = ' frontgate' field_tmr = ' tmr' class IncludeTest(Enum): yes = 'yes' field_no = ' no' field_only = ' only' class IncludeLicensedContent(Enum): yes = 'yes' field_no = ' no' class IncludeSpellcheck(Enum): yes = 'yes' field_no = ' no' class ClassificationName(RootModel[List]): root: List class ClassificationId(RootModel[List]): root: List class IncludeTBA(Enum): yes = 'yes' field_no = ' no' field_only = ' only' class IncludeTBD(Enum): yes = 'yes' field_no = ' no' field_only = ' only' class Unit(Enum): miles = 'miles' km = 'km' class IncludeFuzzy(Enum): yes = 'yes' field_no = ' no' class Chronology(BaseModel): zone: Optional[DateTimeZone] = None class Classification(BaseModel): genre: Optional[Level] = None primary: Optional[bool] = Field( False, description="True if this is the entity's primary classification" ) segment: Optional[Segment] = None subGenre: Optional[Level] = None subType: Optional[Level] = None type: Optional[Level] = None class DateTimeFieldType(BaseModel): durationType: Optional[DurationFieldType] = None name: Optional[str] = None rangeDurationType: Optional[DurationFieldType] = None class DurationField(BaseModel): name: Optional[str] = None precise: Optional[bool] = False supported: Optional[bool] = False type: Optional[DurationFieldType] = None unitMillis: Optional[int] = None class EventImages(BaseModel): id: str = Field(..., description='Unique id of the entity in the discovery API') images: Optional[List[Image]] = Field(None, description='Images of the entity') type: Type2 = Field(..., description='Type of the entity') class EventSalesDates(BaseModel): presales: Optional[List[Presale]] = Field( None, description='Presale information on this event' ) public: Optional[PublicSaleDates] = None class Geometry(BaseModel): location: Optional[Location] = None class Place(BaseModel): address: Optional[Address] = None area: Optional[Area] = None city: Optional[City] = None country: Optional[Country] = None location: Optional[Location] = None name: Optional[str] = Field(None, description='Name of the entity') postalCode: Optional[str] = Field( None, description='Postal code / zipcode of the place' ) state: Optional[State] = None class Social(BaseModel): twitter: Optional[Twitter] = None class Venue(BaseModel): accessibleSeatingDetail: Optional[str] = Field( None, description='Venue accessible seating detail' ) additionalInfo: Optional[str] = Field( None, description='Additional information of the entity' ) address: Optional[Address] = None boxOfficeInfo: Optional[VenueBoxOfficeInfo] = None city: Optional[City] = None country: Optional[Country] = None currency: Optional[str] = Field( None, description='Default currency of ticket prices for events in this venue' ) description: Optional[str] = Field(None, description="Description's of the entity") distance: Optional[float] = None dma: Optional[List[Dma]] = Field( None, description='The list of associated DMAs (Designated Market Areas) of the venue', ) externalLinks: Optional[Dict[str, List[ExternalLink]]] = Field( None, description='List of external links' ) generalInfo: Optional[VenueGeneralInfo] = None id: str = Field(..., description='Unique id of the entity in the discovery API') images: Optional[List[Image]] = Field(None, description='Images of the entity') locale: Optional[str] = Field( None, description='Locale in which the content is returned' ) location: Optional[Location] = None markets: Optional[List[Market]] = Field(None, description='Markets of the venue') name: Optional[str] = Field(None, description='Name of the entity') parkingDetail: Optional[str] = Field(None, description='Venue parking info') postalCode: Optional[str] = Field( None, description='Postal code / zipcode of the venue' ) social: Optional[Social] = None state: Optional[State] = None test: Optional[bool] = Field( False, description="Indicate if this is a test entity, by default test entities won't appear in discovery API", ) timezone: Optional[str] = Field(None, description='Timezone of the venue') type: Type5 = Field(..., description='Type of the entity') units: Optional[str] = None upcomingEvents: Optional[Dict[str, int]] = Field( None, description='number of upcoming events' ) url: Optional[str] = Field( None, description='URL of a web site detail page of the entity' ) class DiscoveryV2ClassificationsGetResponse(RootModel[List[Classification]]): root: List[Classification] class DiscoveryV2VenuesGetResponse(RootModel[List[Venue]]): root: List[Venue] class Attraction(BaseModel): additionalInfo: Optional[str] = Field( None, description='Additional information of the entity' ) classifications: Optional[List[Classification]] = Field( None, description="Attraction's classifications" ) description: Optional[str] = Field(None, description="Description's of the entity") externalLinks: Optional[Dict[str, List[ExternalLink]]] = Field( None, description='List of external links' ) id: str = Field(..., description='Unique id of the entity in the discovery API') images: Optional[List[Image]] = Field(None, description='Images of the entity') locale: Optional[str] = Field( None, description='Locale in which the content is returned' ) name: Optional[str] = Field(None, description='Name of the entity') test: Optional[bool] = Field( False, description="Indicate if this is a test entity, by default test entities won't appear in discovery API", ) type: Type = Field(..., description='Type of the entity') upcomingEvents: Optional[Dict[str, int]] = Field( None, description='number of upcoming events' ) url: Optional[str] = Field( None, description='URL of a web site detail page of the entity' ) class DateTimeField(BaseModel): durationField: Optional[DurationField] = None leapDurationField: Optional[DurationField] = None lenient: Optional[bool] = False maximumValue: Optional[int] = None minimumValue: Optional[int] = None name: Optional[str] = None rangeDurationField: Optional[DurationField] = None supported: Optional[bool] = False type: Optional[DateTimeFieldType] = None class GeocodeExtension(BaseModel): city: Optional[str] = None country: Optional[str] = None county: Optional[str] = None formattedAddress: Optional[str] = None geometry: Optional[Geometry] = None postalCode: Optional[str] = None route: Optional[str] = None state: Optional[str] = None streetNumber: Optional[str] = None class GeolocationVenueExtensions(BaseModel): geocode: Optional[GeocodeExtension] = None class LocalTime(BaseModel): chronology: Optional[Chronology] = None fieldTypes: Optional[List[DateTimeFieldType]] = None fields: Optional[List[DateTimeField]] = None hourOfDay: Optional[int] = None millisOfDay: Optional[int] = None millisOfSecond: Optional[int] = None minuteOfHour: Optional[int] = None secondOfMinute: Optional[int] = None values: Optional[List[int]] = None class StartDates(BaseModel): dateTBA: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the start date is TBA', ) dateTBD: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the start date is TBD', ) dateTime: Optional[datetime] = Field( None, description='The event start datetime', examples=['yyyy-MM-ddThh:mm:ssZ'] ) localDate: Optional[date] = Field( None, description='The event start date in local date', examples=['yyyy-MM-dd'] ) localTime: Optional[LocalTime] = None noSpecificTime: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the event start time has no specific time', ) timeTBA: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the start time is TBA', ) class VenueExtensions(BaseModel): geolocation: Optional[GeolocationVenueExtensions] = None class DiscoveryV2AttractionsGetResponse(RootModel[List[Attraction]]): root: List[Attraction] class EndDates(BaseModel): approximate: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the end date is approximated', ) dateTime: Optional[datetime] = Field( None, description='The event end date time', examples=['yyyy-MM-ddThh-mm-ssZ'] ) localDate: Optional[date] = Field( None, description='The event end date in local date', examples=['yyyy-MM-dd'] ) localTime: Optional[LocalTime] = None noSpecificTime: Optional[bool] = Field( False, description='Boolean flag to indicate whether or not the event end time has no specific time', ) class EventDates(BaseModel): access: Optional[AccessDates] = None end: Optional[EndDates] = None spanMultipleDays: Optional[bool] = Field( False, description='Flag indicating if date spans of multiple days' ) start: Optional[StartDates] = None status: Optional[EventStatus] = None timezone: Optional[str] = Field(None, description="Event's timezone") class Event(BaseModel): accessibility: Optional[Accessibility] = None additionalInfo: Optional[str] = Field( None, description='Additional information of the entity' ) classifications: Optional[List[Classification]] = Field( None, description="Event's classifications" ) dates: Optional[EventDates] = None description: Optional[str] = Field(None, description="Description's of the entity") distance: Optional[float] = None externalLinks: Optional[Dict[str, List[ExternalLink]]] = Field( None, description='List of external links' ) id: str = Field(..., description='Unique id of the entity in the discovery API') images: Optional[List[Image]] = Field(None, description='Images of the entity') info: Optional[str] = Field( None, description='Any information related to the event' ) locale: Optional[str] = Field( None, description='Locale in which the content is returned' ) location: Optional[Location] = None name: Optional[str] = Field(None, description='Name of the entity') outlets: Optional[List[Outlet]] = Field( None, description='Related outlets informations' ) place: Optional[Place] = None pleaseNote: Optional[str] = Field( None, description='Any notes related to the event' ) priceRanges: Optional[List[PriceRange]] = Field( None, description='Price ranges of this event' ) products: Optional[List[Product]] = Field( None, description='Related products informations' ) promoter: Optional[Promoter] = None promoters: Optional[List[Promoter]] = Field(None, description="Event's promoters") sales: Optional[EventSalesDates] = None seatmap: Optional[SeatMap] = None test: Optional[bool] = Field( False, description="Indicate if this is a test entity, by default test entities won't appear in discovery API", ) type: Type = Field(..., description='Type of the entity') units: Optional[str] = None url: Optional[str] = Field( None, description='URL of a web site detail page of the entity' ) class DiscoveryV2EventsGetResponse(RootModel[List[Event]]): root: List[Event]

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ag2-mcp-servers/discovery-api'

If you have feedback or need assistance with the MCP directory API, please join our Discord server