Skip to content

Types

The full object and enum reference. Introspection is open, so the live schema at the endpoint is always authoritative - this page explains the intent behind each field.

Property

The root object, returned by the property query.

FieldTypeNotes
idID!
nameString!
brands(limit, offset)BrandList!Curated brands (excludes deleted). Paginated
streams(limit, offset)StreamList!Curated live streams. OFFLINE streams stay listed. Paginated

Brand

FieldTypeNotes
idID!
titleString!
codeString!Stable short code for the brand
coverUrlStringCover image URL, may be null - see Playback & images
seasons(limit, offset)SeasonList!Ordered by orderInGroup. Paginated

Season

FieldTypeNotes
idID!
titleString!
coverUrlStringMay be null - see Playback & images
episodes(limit, offset)EpisodeList!Ordered by orderInSeason. Paginated

Episode

FieldTypeNotes
idID!
titleString!
statusEpisodeStatus!READY or PROCESSING
playbackUrlString!Always present; check status before playing - see Playback & images
coverUrlStringMay be null - see Playback & images

Stream

FieldTypeNotes
idID!
titleString!
statusStreamStatus!LIVE or OFFLINE
playbackUrlString!Always present, even when OFFLINE; check status before playing - see Playback & images
coverUrlStringMay be null - see Playback & images

Enums

graphql
enum EpisodeStatus {
  READY        # a playable HLS rendition exists
  PROCESSING   # transcoding not finished yet
}

enum StreamStatus {
  LIVE         # source is ONLINE
  OFFLINE      # everything else
}

Tolerate unknown enum values

New enum members may be added in future phases. Treat any value you do not recognize as a safe default (e.g. "not playable") rather than crashing. See Versioning.

List wrappers

Every paginated field returns a *List wrapper - BrandList, SeasonList, EpisodeList, StreamList - with the same shape:

FieldTypeNotes
items[T!]!The page of results
totalInt!Count of all matching rows, ignoring limit/offset. Computed only when selected