# 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]