"This directive allows results to be deferred during execution" directive @defer( "Deferred behaviour is controlled by this argument" if: Boolean! = true, "A unique label that represents the fragment being deferred" label: String ) on FRAGMENT_SPREAD | INLINE_FRAGMENT directive @deprecated(reason: String = "No longer supported") on FIELD_DEFINITION | ENUM_VALUE "This directive disables error propagation when a non nullable field returns null for the given operation." directive @experimental_disableErrorPropagation on QUERY | MUTATION | SUBSCRIPTION "Directs the executor to include this field or fragment only when the `if` argument is true" directive @include( "Included when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT "Indicates an Input Object is a OneOf Input Object." directive @oneOf on INPUT_OBJECT "Directs the executor to skip this field or fragment when the `if` argument is true." directive @skip( "Skipped when true." if: Boolean! ) on FIELD | FRAGMENT_SPREAD | INLINE_FRAGMENT "Exposes a URL that specifies the behaviour of this scalar." directive @specifiedBy( "The URL that specifies the behaviour of this scalar." url: String! ) on SCALAR interface Content { "List of accessibility aides. Each aid is present if at least one of the episodes or variants has it" accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? This flag can be replaced by field targetAudience, which gives one of following values: \"Kids\", \"Adults\", \"KidsAndAdults\". " barn: Boolean! " Popularity for this item from barnplay-popapp, for use in the SVT barn service " barnPopularity: Int! " TrendingMetric for this item from barnplay-popapp, for use in the SVT barn service " barnTrending: Float! " Special image used for kids content to show the main character of the show " characterImage: Image " Viewer warnings for this content " contentWarning: ContentWarning " Producing country or countries ISO code" countriesOfOrigin: [String!]! " Contains all countries that are listed as producing country " countriesOfOriginWithNames: [Country!]! " Are the seasons composed from editorial sections? " customSections: Boolean! " Deep links for different services, e.g. svt play and barn play " deepLinks: DeepLinks! " Episodes as a flat list. Use allEpisodesIncludingUpcoming for all of them" episodes: [Playable!]! " Episodes as a flat list including some upcoming episodes used by searchIndexer " episodesForSearchIndexer: [Playable!]! @deprecated(reason : "This is only used by searchIndexer and is therefor hidden in explorer") " All episodes, including upcoming ones, as a flat list " episodesIncludingUpcoming: [Episode!]! " Extra material like clips or trailers for the entire tv show " extraMaterial: [ExtraMaterial!]! " Categorization by cluster tags (\"video@...\" or \"editorialvideo@...\") " genres: [Genre!]! " Unique identifier. Today this is the Vision episode id or SvtId " id: ID! " Image from Edith is used, see rules on contento startpage " image: Image! " Image for external feeds" imageForFeeds: Image! @deprecated(reason : "Use imagesForFeeds instead") " Images from Edith, see rules on contento startpage " images: Images! " Images from Edith that will be used for external feeds. " imagesForFeeds: ImagesForFeeds! " Images from Edith that will be used for external tableau. " imagesForTableau: ImagesForTableau! " Languages for all episodes of all seasons. Uses three-letter iso format, and \"sgn\" for Sign language " languages: [String!]! " The duration of the latest episode in seconds " latestEpisodeDurationSeconds: Long " The latest PublicationDate of its underlying episodes " latestEpisodePublicationDate: Timestamp " Defined in Vision. Format is suitable for a printed TV Guide " longDescription: String! " Contains all languages that are present as mainLanguage in any episode variant " mainLanguages: [Language!]! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services. " name: String! " Time when the next episode will be published " nextEpisodeAvailable: Timestamp " Next episode in a formatted format according to the styleguide " nextEpisodeAvailableFormatted: String " Number of active episodes " numberOfActiveEpisodes: Int! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " Popularity for this item from popapp " popularity: Int! " Image for external feeds" portraitPosterForFeeds: Image @deprecated(reason : "Use imagesForFeeds instead") " Special image used for kids content to show a portrait poster image " portraitPosterImage: Image prioritizedSearchTags: [String!]! " Related content from Balthazar " related: [Content!]! " Rerun information, has this content been present on Play before? Calculated as 'has all episodes been broadcasted earlier' " rerun: Boolean! " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! " The seasons connected to this title " seasons: [Season!]! " All available seasons including upcoming seasons with episodes 5 days into the future. Used for external feeds " seasonsForFeeds: [Season!]! " Defined in Vision. Usually used as byline below the name " shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! " Defined in Edith or Vision. Tags are used to group or classify content " tags: [Tag!]! " Audience targeted for this Content " targetAudience: TargetAudience! " Internal title info " titleInternalInformation: TitleInternalInformation " Type of title/program, will be one of: TvSeries, TvShow, Single, KidsTvShow, KidsTvSeries, CurrentAffairs " titleType: String! " URL field containing various URL:s, for example SVT Play " urls: Urls! } interface ExtraMaterial { " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " The proportional relationship between the video's width and height " aspectRatio: String! astridImage: AstridImage " Video format from Astrid " astridVideoFormat: AstridVideoFormat " If the clip is available in play " availableInPlay: Boolean " Is this intended for children based on barn tags? " barn: Boolean! " The list of sources for this content (e.g. Astrid or Edith) " cms: [String!]! " Video from Direktcenter " direktcenterVideo: DirektcenterVideo " Content length in seconds " duration: Int! " Content length in a formatted format according to the styleguide " durationFormatted: String! " Content length in ISO format (hh:mm:ss) " durationISOFormatted: String! " When was the video last repackaged by videocore " encodedAt: Timestamp " If the clip is currently being encoded " encodingInProgress: Boolean " The first frame of the clip " firstFrame: String genres: [Genre!]! id: ID! image: Image! " Images from Edith, see rules on contento startpage " images: Images! " Escenic videoKlipp article id " legacyId: ID! longDescription: String! " The name of the item. Follows all the presentation rules for our services. " name: String! newsDescription: String! " The name used by svt.se. " newsName: String! " Teaser image used by news & sports for current events in a news context, for example if Charlotte Kalla has won. Can contain spoilers " newsTeaserImage: Image! @deprecated(reason : "This was used when escenic was alive. Please use image or astridImage instead.") " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The original title for the playables parent content, always empty for extra material " originalProgramTitle: String! """ The main parent content (TvSeries/TvShow/Single) this clip belongs to ((if it has any relation). This is only left for legacy reasons. """ parent: Content " All parents (TvSeries/TvShows/Singles) that this clips belongs to. " parents: [Content!]! prioritizedSearchTags: [String!]! " Production year from Vision " productionYear: Int restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " The source id for a clip. Usually the file name for the clip. Also called DKS code by some. " sourceId: String! " The type of subtitle if any. Can be 'selectable', 'burnedIn' or 'none' " subtitleType: String! " New unique identifier " svtId: String! tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! " Start of rights " validFrom: Timestamp " Start of rights in a formatted format according to the styleguide " validFromFormatted: String " End of rights " validTo: Timestamp " End of rights in a formatted format according to the styleguide " validToFormatted: String " List of playable videos " videos: [Video!]! } interface GoogleHomeScreenEntity { contentRating: String! description: String! genre: String! imagePortraitUrl: GoogleHomeScreenImage! imageWideUrl: GoogleHomeScreenImage! name: String! ratingAgency: String! svtId: String! url: String! } interface Listable { " List of available accessibility aides. " accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? " barn: Boolean! id: ID! image: Image! " Images from Edith, see rules on contento startpage " images: Images! longDescription: String! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services " name: String! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! "Parent to which this belongs. Content will return itself." parent: Content " Popularity for this item from popapp " popularity: Int! " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! " Defined in Edith or Vision. Tags are used to group or classify content " tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! } interface Node { id: ID! " The name of the item. Follows all the presentation rules for our services " name: String! parentNode: Node } "Actual playable content" interface Playable { " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " The proportional relationship between the video's width and height " aspectRatio: String " Is this intended for children based on barn tags? " barn: Boolean! " Viewer warning for this playable " contentWarning: ContentWarning " Content length in seconds " duration: Int! " Content length in a formatted format according to the styleguide " durationFormatted: String! " Content length in ISO format (hh:mm:ss) " durationISOFormatted: String! " End Credit Start time in seconds " endCreditStart: Int """ The episode this playable belongs to. Examples: Variant will return the Episode or Single to which it belongs. Single and Episode it will return itself. Clip and Trailer will return itself because it has no episode playable. """ episode: Playable! genres: [Genre!]! " Does this playable have VOD video references? This is false while it is live or no Vod references exist yet. Live video references might still exist " hasVideoReferences: Boolean " Highlights are like bookmarks within the video which editors have selected" highlights: [Highlight!]! id: ID! image: Image! " Images from Edith, see rules on contento startpage " images: Images! " Contains config for turning on/off the chat in the video player as well as emoji configs " interactivityConfig: InteractivityConfig " Information for live broadcasts " live: Live longDescription: String! " The name of the item. Follows all the presentation rules for our services. " name: String! " Indicates if this content should NOT be indexed by search engines " noIndex: Boolean! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The original title for the playables parent content " originalProgramTitle: String! " The parent content (TvSeries/TvShow/Single) this item belongs to. Sometimes pointer to self. Can be null. " parent: Content " Popularity for this item from popapp " popularity: Int! " Production year from Vision " productionYear: Int " The video of this content should be watched as a linear channel " requiresLinearPlayback: Boolean restrictions: Restrictions! shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! validFrom: Timestamp validFromFormatted: String validTo: Timestamp validToFormatted: String """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! " List of playable videos " videos: [Video!]! """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. If missing, do not show skip to next button. """ whenToDisplaySkipToNext: Int } "A distinct video asset to be played by a video player" interface Video { " Accessibility data for this video " accessibility: Accessibility " List of available video formats, corresponding to video-api. Missing for live content " availableVideoFormats: [VideoFormat!]! " Source id for a Video. This is commonly the filename for a clip and is unique over all clips. " sourceId: String! " Unique identifier for this video, can be used against https://api.svt.se/video/{svtId} " svtId: String! } union AnalyticsEntry = NumericAnalyticsValue | StringAnalyticsValue union EndSwipePlaylistBehavior = EndSwipeLongFormat | EndSwipeOtherSwipePlaylist | EndSwipeStopWithMessage union SearchHitItem = Clip | Episode | Genre | KidsTvShow | Single | Trailer | TvSeries | TvShow type AccessibilityDetails { available: [Accessibility!]! label: String! } type AccessibilityFlag { " Displayable name in Swedish " name: String! "Type is one of: SignInterpreted, AudioDescribed, SpeechEnhancement, SpokenSubtitles" type: String! } type AddFavoritesResponse { favorites: [FavoriteItem!]! result: Boolean! } type AddReminderResponse { result: Boolean! } type AddSearchClickItemResponse { result: Boolean! } type AddToKeepWatchingResponse { result: Boolean! } type AgePage { analyticsIdentifiers: AnalyticsIdentifiers! errorMessage: String suggestedBirthYear: Int text: String! title: String! } """ Contento provides analytics data for clients to use for click and impression tracking. Clients can access this data through two formats: a structured map or a raw JSON field. Contento strives to remove all client side logic for analytics data. Clients should pass all the provided key-value pairs in the analytics objects to the tracking backends. """ type Analytics { " Raw json with all key-value pairs " json: JSON! """ List of key value pairs for tracking map { ... on StringAnalyticsValue{ key stringValue } ... on NumericAnalyticsValue{ key numericValue } } """ map: [AnalyticsEntry!]! """ The mergeable flag, when set to true, indicates that the analytics data should be combined from the current level to lower levels, facilitating a comprehensive analysis of user interactions. Data marked with the mergeable flag as false is restricted to its original level, ensuring it is not inappropriately integrated into broader analytics. """ mergeable: Boolean! } type AnalyticsIdentifiers { viewId: String! viewType: String! } "The analytics metadata sent to Helix for every watchable video." type AnalyticsMetadata { episode: Episode id: ID! name: String! producingDepartmentId: String producingDepartmentName: String seasonId: String seasonName: String seasonNumber: Int seasonProducedEpisodes: Int seasonYear: Int svtId: String! title: Content titles: [Content!]! typeName: String! video: Playable! } type AnalyticsToken { token: String } type AstridImage { caption: String! " Description of the image, as a text also suitable for screenreaders and search bots. Often the same as caption " description: String! focalPoint: FocalPoint! id: ID! photographer: String! } " Video format from Astrid " type AstridVideoFormat { " The ID of the video format " id: String! " The template used for this video format " template: String! " The title of the video format " title: String! } type AudioPreference { kind: AudioKindPreference! language: LanguagePreference! } type AuthorizeDeviceResponse { invalidCode: Boolean! success: Boolean! text: String! title: String! } "A badge for a teaser, usually shown as a label/overlay on the teaser/image." type Badge { " Textual description of the badge for accessibility (screen reading and other) purposes, can be empty " altText: String! " The suggested background color of the badge, in hex format " backgroundColor: String! " The suggested background color of the badge, in hex format as well as the name of the color according to the SVT design system " bgColor: Color! " The suggested text color of the badge, in hex format as well as the name of the color according to the SVT design system " color: Color! " A shorter representation of the text field to be used in scenarios where space is limited, i.e. search results " shortText: String! text: String! " The suggested text color of the badge, in hex format " textColor: String! """ Type can be one of: * live * upcomingLive * upcoming * nextEpisode * oppetArkiv * lastChance If multiple are true they are prioritized in the order above. """ type: String! } type Banner { backgroundColor: String button: Button image: Image text: String! textColor: String } "A breaking news module. This will be displayed on top of the start page for SVT Play." type Breaking { analytics: Analytics! badge: Badge heading: String! id: String! image: Image! level: String! live: Live playButtonText: String! presentationHints: PresentationHints! progressFraction: Int progressSeconds: Int relatedList: Selection subheading: String! svtId: String! tagline: String! " URL of the video to play for this breaking episode " urls: Urls! videoSvtId: String! } type BroadcastItem { " True if this show has rights in SVT Play and a play button should be displayed " availableNow: Boolean! " Is this broadcast available in more high fidelity audio formats? " broadcastAudio: BroadcastAudio! description: String! descriptionRaw: String! end: Timestamp! " Is this broadcast aired in HD in linear tv? " highDefinition: Boolean! id: ID! " Image for item or background image for channel if there is no current broadcast(sändningsuppehåll) " image: Image! " is this a \"Sändningsuppehåll\"? " isBroadcastIntermission: Boolean! item: Playable " Name of program " name: String! " The progress of the broadcast item as a percentage. 0 if upcoming, >0 if running, 100 if ended. " progress: Int! " Information of when it gets a rerun in the broadcast television. " rerunDescription: String! start: Timestamp! " Start time in format HH:mm " startTime: String! " Start time in format Idag/Ikväll/Inatt HH:mm " startTimeWithDay: String! state: BroadcastState! " Sub heading (underrubrik) to be used when displaying this item on the channel page. " subHeading: String! svtId: String " Link to UR Play, Null if not UR program " urPlayLink: String " For Ui purposes: If a fallback image was used for image, usingFallbackImage is true, otherwise false " usingFallbackImage: Boolean! } type Button { action: String backgroundColor: String text: String! textColor: String } type ButtonColors { background: Color! foreground: Color! } type Calendar { heading: String! optionSections: [CalendarOptionSection!]! } type CalendarOption { domSafeId: String! eventAnalytics: EventAnalytics! id: String! label: String! selected: Boolean! } type CalendarOptionSection { heading: String! id: ID! options: [CalendarOption!]! } type CastAndCrewSection { name: String! people: [Person!]! } type CategoryButton { category: String! categoryName: String! eventAnalytics: EventAnalytics! id: ID! label: String! usePublikDisplayFont: Boolean! } type CategoryOption { eventAnalytics: EventAnalytics! name: String! selected: Boolean! slug: String! } type CategoryPage { " Accessibility for Category. Will Be Default except for the AudioDescribed and SignInterpreted Genres. Pass to SmartStart to keep the correct context when starting videos. " accessibility: Accessibility! analytics: Analytics! analyticsIdentifiers: AnalyticsIdentifiers! colors: ThemeColors description: String! " Selections in a flat structure, without tabs " flat( "Paginate/limit the number of items returned" pagination: Pagination ): [Selection!]! heading: String! id: ID! image: Image " Same as tabs, but only populates selections for the selected tab slug. If slug is empty, a default tab to display will be selected " lazyLoadedTabs(slug: String): [CategoryTab!]! modules: [CategoryPageModule!]! modulesPaginated(cursorPagination: CursorPagination): CategoryPageModules! " Selections divided into tabs/groups " tabs: [CategoryTab!]! } type CategoryPageModule { analytics: Analytics! event: Event id: ID! miniSchedule: MiniSchedule navigationSelection: NavigationSelection selection: Selection } type CategoryPageModules { items: [CategoryPageModule!]! numberOfItemsAfter: Int! numberOfItemsBefore: Int! totalSize: Int! } type CategoryPicker { categories: [CategoryOption!]! heading: String! } "A group of selections to be displayed together." type CategoryTab { analytics: Analytics! id: ID! modules: [CategoryPageModule!]! " User friendly name of the tab " name: String! schedule(filter: SchedulePageFilterInput): SchedulePage selections( "Paginate/limit the number of items returned" pagination: Pagination ): [Selection!]! " Url friendly id for the tab. Used as parameter in lazyLoadedTabs " slug: String! } type CategoryTeaser { analytics: Analytics! byline: String! heading: String! id: ID! image: Image! isMainCategory: Boolean! slug: String! } type Channel { " This channel is drm copy protected " drmCopyProtection: Boolean! id: ID! logo: Image! name: String! running: BroadcastItem! "The schedule for today or a given day in yyyy-MM-dd format, today +- 3 weeks" schedule(day: String): [BroadcastItem!]! } type Channels { analyticsIdentifiers: AnalyticsIdentifiers! channels: [Channel!]! " Used to know when to update ui, if needed. 0 means that a new program as started in any channel. " secondsToNextBroadcast: Int! } type Chat { changedDate: String! closedMessage: String emojis: [String!] loginRequired: Boolean! monterosaHost: String monterosaProjectId: String openingHours: OpeningHours showAvatars: String! showForKidsOnly: Boolean! state: String! streamId: String! title: String visibleByDefault: Boolean! } type CleanImages { portrait: Image! wide: Image! } type Clip implements ExtraMaterial & Listable & Node & Playable & Video { " List of available accessibility aides. " accessibilities: [Accessibility!]! " Accessibility data for this clip " accessibility: Accessibility " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " The proportional relationship between the video's width and height " aspectRatio: String! " A list of lists with associated content, for example seasons from parent, related from parent and clips from parent " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! astridImage: AstridImage " Video format from Astrid " astridVideoFormat: AstridVideoFormat " If the clip is available in play " availableInPlay: Boolean " List of available video formats, corresponding to video-api. Missing for live content " availableVideoFormats: [VideoFormat!]! " Is this intended for children based on barn tags? " barn: Boolean! " The list of sources for this content (e.g. Astrid or Edith) " cms: [String!]! " Viewer warnings for this playable " contentWarning: ContentWarning " Video information from Direktcenter " direktcenterVideo: DirektcenterVideo " Content length in seconds " duration: Int! " Content length in a formatted format according to the styleguide " durationFormatted: String! " Content length in ISO format (hh:mm:ss) " durationISOFormatted: String! " When was the video last repackaged by videocore " encodedAt: Timestamp " If the clip is currently being encoded " encodingInProgress: Boolean " End Credit Start time in seconds " endCreditStart: Int """ The episode this playable belongs to. Examples: Variant will return the Episode or Single to which it belongs. Single and Episode it will return itself. Clip and Trailer will return itself because it has no episode playable. """ episode: Playable! " The first frame of the clip " firstFrame: String genres: [Genre!]! " Does this playable have VOD video references? This is false while it is live or no Vod references exist yet. Live video references might still exist " hasVideoReferences: Boolean " Highlights are like bookmarks within the video which editors have selected" highlights: [Highlight!]! id: ID! image: Image! " Images from Edith, see rules on contento startpage " images: Images! " Contains config for turning on/off the chat in the video player as well as emoji configs " interactivityConfig: InteractivityConfig " Escenic videoKlipp article id " legacyId: ID! " Clips can never be live, only needed for completeness " live: Live longDescription: String! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services. " name: String! newsDescription: String! " The name used by svt.se. " newsName: String! " Teaser image used by news & sports for current events in a news context, for example if Charlotte Kalla has won. Can contain spoilers " newsTeaserImage: Image! @deprecated(reason : "This was used when escenic was alive. Please use image or astridImage instead.") " Indicates if this content should NOT be indexed by search engines " noIndex: Boolean! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The original title for the playables parent content, always empty for extra material " originalProgramTitle: String! """ The main parent content (TvSeries/TvShow/Single) this clip belongs to ((if it has any relation). This is only left for legacy reasons. """ parent: Content parentNode: Node " All parents (TvSeries/TvShows/Singles) that this clips belongs to. " parents: [Content!]! " Popularity for this item from popapp " popularity: Int! prioritizedSearchTags: [String!]! " Production year from Vision " productionYear: Int " The video of this content should be watched as a linear channel " requiresLinearPlayback: Boolean restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " The source id for a clip. Usually the file name for the clip. Also called DKS code by some. " sourceId: String! " The type of subtitle if any. Can be 'selectable', 'burnedIn' or 'none' " subtitleType: String! " New unique identifier " svtId: String! tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! " Start of rights " validFrom: Timestamp " Start of rights in a formatted format according to the styleguide " validFromFormatted: String " End of rights " validTo: Timestamp " End of rights in a formatted format according to the styleguide " validToFormatted: String """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! " List of playable videos " videos: [Video!]! """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. If missing, do not show skip to next button. """ whenToDisplaySkipToNext: Int } type Color { " Alpha channel " alpha: Float! " The suggested background color, in hex format " hex: String! " Hex format without alpha channel for certain clients like TV platforms " hexWithNoAlpha: String! " Color name according to the SVT design system " name: String! } "Users consents about communication" type CommunicationsConsent { newsLetter: Boolean } type Company { " Unique code for company " id: ID! name: String! } type ContentInformation { contentSvtId: String! videoSvtId: String! } type ContentWarning { code: String! text: String! } type CopyFromDeviceToAccountResponse { deviceTokenInvalid: Boolean! errorMessage: String favoriteItems: [FavoriteItem!]! success: Boolean! } type Country { " Three letter ISO-code (ISO 639-2) " id: ID! name: String! } type DeepLinks { android: Links appleTv: Links ios: Links smartTv: Links svtplay: Links @deprecated(reason : "Use web field instead") web: Links } type Details { accessibilities: AccessibilityDetails analytics: Analytics! badge: Badge byline: String! @deprecated(reason : "Will not be used") " List of cast and crew, grouped by role, sorted for presentation " castAndCrew: [CastAndCrewSection!]! categories: [CategoryTeaser!]! characterImage: Image contentSvtId: String! " Viewer warnings for this listable. " contentWarning: ContentWarning description: String! heading: String! " Highlights are like bookmarks within the video which editors have selected " highlights: [Highlight!]! id: String! images: Images! " If this or the title is marked as favorite " isFavorite: Boolean! messages: Messages moreDetails: MoreDetails! " If the Details page is for a playable item that has watch progress " progressFraction: Int publishingDetails: [PublishingDetail!]! " Reminder button information for upcoming live content " reminderButton: ReminderButton " If reminder can be set for upcoming live content " showReminderButton: Boolean! @deprecated(reason : "Use reminderButton field instead") " The suggested playable based on history " smartStart: SmartStart subHeading: String! trailer: Trailer " If this content is unplayable and why " unplayableReason: UnplayableReason " If this details page should have an overlay text shown over the hero image. Used for upcoming content on detail pages. " upcomingOverlay: UpcomingOverlay } type DetailsPage { analytics: Analytics! analyticsIdentifiers: AnalyticsIdentifiers! " Id for the episode or single in apple feed format, used by apple tv to link between play and internal apple tv app, example 1234567-001 becomes 1234567001 " appleFeedId: String " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! badge: Badge byline: String! " List of cast and crew, grouped by role, sorted for presentation " castAndCrew: [CastAndCrewSection!]! categories: [CategoryTeaser!]! contentSvtId: String! " Viewer warnings for this listable. " contentWarning: ContentWarning description: String! heading: String! " Highlights are like bookmarks within the video which editors have selected " highlights: [Highlight!]! id: ID! images: Images! """ If no active content, this message contains `Inga avsnitt finns tillgängliga just nu` together with a date for when an episode was last active """ inactiveContentMessage: String " If this or the title is marked as favorite " isFavorite: Boolean! " If this is a live episode that is upcoming and will start soon " isLiveSoon: Boolean! " If this is a live stream that is upcoming " isUpcomingLive: Boolean! " If this is a playable that is upcoming " isUpcomingVOD: Boolean! item: Listable! live: Live " LocalNewsRegions for regionpicker if the detailspage is for Morgonstudion " localNewsRegions: [LocalNewsRegion!] messages: Messages " Modules containing miniSchedule, selections, and navigationSelection " modules: [DetailsPageModule!]! moreDetails: MoreDetails! " Indicates if this content should NOT be indexed by search engines " noIndex: Boolean! " The original title for the playables parent content. For example the English title for a translated title " originalProgramTitle: String! positionInSeason: String " If the Details page is for a playable item that has watch progress " progressFraction: Int publishingDetails: [PublishingDetail!]! restrictions: Restrictions " The suggested playable based on history " smartStart: SmartStart subHeading: String! svtId: String! " True if user has watched anything (excluding Clips/Trailers) on this title " userHasHistoryOnTitle: Boolean! validFrom: String video: Video } type DetailsPageModule { analytics: Analytics! " Banner for the details page " banner: Banner " Content and metadata for the main module " details: Details " Event selection " event: Event id: ID! " Mini schedule for the content " miniSchedule: MiniSchedule " Navigation selection for the content " navigationSelection: NavigationSelection " List of selections " selection: Selection " Selection with show more functionality " showMoreSelection: ShowMoreSelection } " Video from Direktcenter " type DirektcenterVideo { " The stream ID " streamId: String! " The SVT ID of the video " svtId: String! " The video ID " videoId: String! } type EditProfilePage { analyticsIdentifiers: AnalyticsIdentifiers! avatarUrl: String backgroundColor: String errorMessage: String name: String text: String! title: String! } type Emoji { id: String! name: String! unicodeSymbol: String! } type EmojiPack { emojis: [Emoji!]! id: String! name: String! } type EndScreen { analytics: Analytics! backgroundColors: EndScreenBackgroundColors! buttonColors: ButtonColors categoryButton: CategoryButton recommendations: Selection! upcomingEpisodeHeading: EndScreenHeading } type EndScreenBackgroundColors { animationDark: String! animationLight: String! primary: String! secondary: String! } type EndScreenHeading { color: String! text: String! } type EndSwipeLongFormat { recommendedContent: [Listable!]! recommendedIds: [String!]! type: String } type EndSwipeOtherSwipePlaylist { recommendedId: String recommendedPlaylist: SwipePlaylist type: String } type EndSwipeStopWithMessage { image: Image message: String type: String } type Episode implements Listable & Node & Playable { " List of available accessibility aides. " accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " The proportional relationship between the video's width and height " aspectRatio: String " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? " barn: Boolean! " List of cast and crew, grouped by role, sorted for presentation " castAndCrew: [CastAndCrewSection!]! " Viewer warning for this playable " contentWarning: ContentWarning " Deep links for different services, e.g. svt play and barn play " deepLinks: DeepLinks! " Content length in seconds " duration: Int! " Content length in a formatted format according to the styleguide " durationFormatted: String! " Content length in ISO format (hh:mm:ss) " durationISOFormatted: String! " End Credit Start time in seconds " endCreditStart: Int """ The episode this playable belongs to. Examples: Variant will return the Episode or Single to which it belongs. Single and Episode it will return itself. Clip and Trailer will return itself because it has no episode playable. """ episode: Playable! " Categorization by cluster tags (\"video@...\" or \"editorialvideo@...\") " genres: [Genre!]! " Does this playable have VOD video references? This is false while it is live or no Vod references exist yet. Live video references might still exist " hasVideoReferences: Boolean " Highlights are like bookmarks within the video which editors have selected, highlights is copied from default variant" highlights: [Highlight!]! " Unique episode id. Today based on Vision episode id, i.e. [programId]-[episodeno] " id: ID! " Image from Edith is used, see rules on contento startpage " image: Image! " Image to be exposed in external feeds " imageForFeeds: Image! @deprecated(reason : "Use imagesForFeeds instead") " Images from Edith, see rules on contento startpage " images: Images! " Images from Edith that will be used for external feeds. " imagesForFeeds: ImagesForFeeds! " Images from Edith that will be used for external tableau. " imagesForTableau: ImagesForTableau! " Contains config for turning on/off the chat in the video player as well as emoji configs " interactivityConfig: InteractivityConfig " Internal Information - Do not build integrations using this, it´s meant to be read by a human " internal: InternalInformation! " Contains info about the program intro or opening credits " intro: Intro " Information for live broadcasts " live: Live " Long episode synopsis, taken from Vision. " longDescription: String! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services. " name: String! " Name without any episode or season numbers. Unedited from source " nameRaw: String! " Indicates if this content should NOT be indexed by search engines " noIndex: Boolean! " Episode number in season " number: Int " Number of episodes in the season this episode belongs to " numberOfEpisodesInSeason: Int! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The original title for the playables parent content " originalProgramTitle: String! " The parent TvSeries as a Content instance. Use this if you do not need TvSeries specific data. " parent: Content " The parent season or productionPeriod " parentNode: Node " Popularity for this item from popapp " popularity: Int! " Formatted string for position of episode relative to its siblings and seasons i.e 'Säsong 3 — Avsnitt 5' " positionInSeason: String! prioritizedSearchTags: [String!]! " Production year from Vision " productionYear: Int " The video of this content should be watched as a linear channel " requiresLinearPlayback: Boolean " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! " Intended for short episode synopsis. Taken from vision, where it currently is abused to write season name " shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! " Defined in Edith or Vision. Tags are used to group or classify content " tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! " Start of rights " validFrom: Timestamp " Start of rights in a formatted format according to the styleguide " validFromFormatted: String " End of rights " validTo: Timestamp " End of rights in a formatted format according to the styleguide " validToFormatted: String " Variants of this content like accessibility or spoken language " variants: [Variant!]! """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! " List of playable videos " videos: [Video!]! """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. If missing, do not show skip to next button. """ whenToDisplaySkipToNext: Int } type Episodes { tvSeriesEpisodes: [Episode!]! tvShowEpisodes: [Episode!]! } type Event { analytics: Analytics! categoryButton: CategoryButton colors: ThemeColors! eventImage: Image heading: String! hero: EventHero id: ID! miniSchedule: MiniSchedule recommended: EventSelection } type EventAnalytics { analytics: Analytics! eventName: String! eventType: String! } type EventHero { analytics: Analytics! badge: Badge " Main heading (rubrik) to be used when displaying this item in a list. Context-sensitive, depending on in which selection this teaser is shown. " heading: String! id: ID! " The wide image to be used for the hero " image: Image! " The live progress in percentage (0-100) if the content is live now " liveProgress: Int subheading: String! svtId: String! " Parent title id or same as svtId for this item if the teaser is a title" titleSvtId: String! " URL of the video to play for this hero " urls: Urls! " Id of the video to play for this hero " videoSvtId: String } type EventSelection { id: ID! selection: Selection! } type ExternalScheduleInfo { externalScheduleItems: [String!]! label: String! } type FavoriteItem { " Title (Content) id " id: String! } type FocalPoint { x: Float! y: Float! } type Genre { " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " Used as description for genre page " description: String " Unique identifier for genre " id: ID! " Image from Edith is used, see rules on contento startpage " image: Image " The name of the genre, e.g. \"Samhälle & fakta\" " name: String! " Popularity for this item from popapp " popularity: Int! " Important SearchTags also describing this genre to be used in search and be weighted up " prioritizedSearchTags: [String!]! " List of Genres related to this Genre through editorial selection " relatedGenres: [Genre!]! @deprecated(reason : "Not used. Only used in legacy versions of some clients") " SearchTags also describing this genre to be used in search " searchTags: [String!]! " List of selections for this genre " selections(exclude: [GenreSelectionId!], include: [GenreSelectionId!]): [Selection!]! @deprecated(reason : "Use query `categoryPage` instead") " List of selections for this genre for use in SvtPlay-Web " selectionsForWeb(exclude: [GenreSelectionId!], include: [GenreSelectionId!]): [Selection!]! @deprecated(reason : "Use query `categoryPage` instead") selectionsPersonalized(abTestVariants: [AbTestVariant!], exclude: [GenreSelectionId!], history: [String!]!, include: [GenreSelectionId!]): [Selection!]! @deprecated(reason : "Use query `categoryPage` instead") " One of either main, emi-based or editorial " type: GenreType! } type Genres { " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " Genres " genres: [Genre!]! } type GoogleHomeScreen { continuation: GoogleHomeScreenSelection! featured: GoogleHomeScreenSelection! recommended: [GoogleHomeScreenSelection!]! } type GoogleHomeScreenImage { height: Int! url: String! width: Int! } type GoogleHomeScreenSelection { entities: [GoogleHomeScreenEntity!]! } type GoogleHomeScreenTitle implements GoogleHomeScreenEntity { contentRating: String! description: String! firstEpisodeAirDate: Long! genre: String! imagePortraitUrl: GoogleHomeScreenImage! imageWideUrl: GoogleHomeScreenImage! latestEpisodeAirDate: Long! name: String! ratingAgency: String! seasonCount: Int! svtId: String! url: String! } type GoogleHomeScreenVideo implements GoogleHomeScreenEntity { contentRating: String! description: String! displayEpisodeNumber: String durationMillis: Long! episodeNumber: Int genre: String! imagePortraitUrl: GoogleHomeScreenImage! imageWideUrl: GoogleHomeScreenImage! lastEngagementTime: Long name: String! progressMillis: Long ratingAgency: String! releaseDateEpochMillis: Long! seasonNumber: Int svtId: String! " Name of the parent title, null for an Single" titleName: String url: String! videoType: VideoType! watchNextType: WatchNextType } type GuardianApprovalPendingPage { analyticsIdentifiers: AnalyticsIdentifiers! guardianEmail: String! guardianEmailPage: GuardianEmailPage! text: String! title: String! } type GuardianEmailPage { analyticsIdentifiers: AnalyticsIdentifiers! email: String errorMessage: String guardianEmail: String text: String! title: String! } " HLS Settings for playback " type HLSPlaybackSettings { " Information to identify the audio track " audio: HLSTrack! " Information to identify the text track. " text: HLSTrack! " Information to identify the video track " video: HLSTrack! } " Information to identify a HLS track " type HLSTrack { " List of HLS characteristics " characteristics: [String!]! " Language of the track if relevant " language: String } type Hero { analytics: Analytics! badge: Badge blockedForChildren: Boolean! " Ingångsord " byline: String! " Main heading (rubrik) to be used when displaying this item in a list. Context-sensitive, depending on in which selection this teaser is shown. " heading: String! " Same as module id " id: String! " The wide image to be used for the hero " image: Image! " The watch progress if the teaser is for a playable item that has watch progress " progressFraction: Int " The watch progress in seconds if the teaser is for a playable item that has watch progress " progressSeconds: Int " The list of display window teasers to be associated with this hero. If omitted, the display window will be shown as a selection. " selection: Selection! " Sub heading (underrubrik) to be used when displaying this item in a list. Context-sensitive, depending on in which selection this teaser is shown. " subheading: String! svtId: String! " Parent title id or same as svtId for this item if the teaser is a title" titleSvtId: String! " Parent title URL or the same as URL if this item is a title" titleUrls: Urls! " URL of the video to play for this hero " urls: Urls! " Id of the video to play for this hero " videoSvtId: String! } type Highlight { analytics: Analytics! " More verbose description of the highlight " description: String! " Duration in seconds of the highlight " durationInSeconds: Int " Unique id for the highlight. Is DOM safe" id: ID! " Name of the highlight " name: String! " Position in human readable form " positionFormatted: String! " Position for the start of the highlight, can be used for direct linking with position in video player " positionInSeconds: Int! " Title slug - slugified name " slug: String! " Thumbnail url " thumbnail: String " Article Id to the thumbnail to be used to create an URL for the image via image proxy " thumbnailId: Int } type Image { blurHash: String! " Description of the image, as a text suitable for showing below the image. Often the same as caption " caption: String! changed: Long! copyright: String! " Description of the image, as a text also suitable for screenreaders and search bots. Often the same as caption " description: String! height: Int id: ID! keyart: Boolean! photographer: String! width: Int } """ Images contains wide, portrait, cleanWide, cleanPortrait and logotype. All images are populated with data from Edit. The logic for these are: wide: Use by most clients and contains keyart if present. If no keyart wide is present, the fallback is cleanWide, screenCapture, parent titles wide image or image missing image. portait: Use by most clients for images in portrait mode and contains keyart if present. If no keyart portrait is present, the fallback is cleanPortrait, parent titles portrait image, wide, cleanWide, screenCapture or image missing image. cleanWide: Used for wide images without keyart. If no cleanWide is present, the fallback is wide, screenCapture, parent titles cleanWide image or image missing image. cleanPortrait: Used for portrait images without keyart. If no cleanPortrait is present, the fallback is portrait, parent titles cleanPortrait image, wide, cleanWide, screenCapture, or image missing image. logotype: Used for logotypes. If no logotype is present it is null. NOTE! The screenCapture fallback above is only set when their is a live sports episode. The editorial tag "Direktsänd sport" is used to select these episodes. """ type Images { cleanPortrait: Image! cleanWide: Image! imax: Image! logotype: Image portrait: Image! wide: Image! } """ Images that will be used for external feeds. Images that are marked as "Blocked externally" in Edith will not be exposed here """ type ImagesForFeeds { cleanPortrait: Image! cleanWide: Image! portrait: Image! wide: Image! } """ Images that will be used for external tableau. Images that are marked as "Blocked externally" in Edith will not be exposed here and the images will never use fallback rules, i.e. if an image is missing in Edith it will be null here. """ type ImagesForTableau { cleanPortrait: Image cleanWide: Image portrait: Image wide: Image } type ImportantMessage { " Timestamp of message creation" created: Timestamp! id: String! " Optional link for more information regarding the message " link: String " Optional text to be displayed for the link that the link field points to " linkText: String " Platform that this message is valid for, can be ALL for all platforms" platform: ImportantMessagePlatform " The message text " text: String! " VMA or TMA " type: ImportantMessageType! " Timestamp last updated e.g. state or content of the message " updated: Timestamp! } type InteractivityConfig { chat: Chat extra: String onboarding: Onboarding svtId: String! } type InternalInformation { " Are all versions for this episode hidden in walle? " allVersionsHidden: Boolean! " Department within SVT that produced or bought the content " producingDepartment: ProducingDepartment! " program id from vision " programId: Int! } type InternalSearchHit { " List of accessibility aides " accessibilities: [Accessibility!]! " Description for the search hit " description(maxDescriptionLength: Int): String! " Episode title for the search hit if this is an episode " episodeTitle: String " Exclusive tags ie, tags set explicitly on this item " exclusiveTags: [String] " Reason for the hit being in the result " hitReason: InternalSearchHitReason " Id of the underlying item " id: ID! " Image for the search hit " image: Image! " The underlying item. A union of Genre and Listable. Avoid accessing this if possible " item: SearchHitItem! " If this is an ongoing live broadcast " liveNow: Boolean! " Name of the search hit, Can be a combination of \"title - episode title\" " name: String! " If search hit is öppet arkiv " oppetArkiv: Boolean! " Program Ids associated with the hit " programIds: [Int] " Score based on fuzzy search relevance to query " score: Float " Is this title Published or Unpublished? Is this an episode? Then you get null. " state: TitleState " SvtId of the underlying item or null if a genre hit " svtId: String " Title for the search hit, If this is an episode hit, this is the parent title " title: String! } type InternalSearchResult { data: [InternalSearchHit!]! first: Int! offset: Int! total: Int! } type Intro { " Intro end time in seconds " endSeconds: Int! " Intro start time in seconds " startSeconds: Int! } type ItemsPaginated { items: [Teaser!]! totalSize: Int! } """ A Kids TV Show is content for younger children, where order does not matter. A protected, predictable title to put kids in front of. When the last episode is played, it should loop back and start from the beginning. """ type KidsTvShow implements Content & Listable & Node { " List of accessibility aides. Each aid is present if at least one of the episodes has it " accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? This flag can be replaced by field targetAudience, which gives one of following values: \"Kids\", \"Adults\", \"KidsAndAdults\". " barn: Boolean! " Popularity for this item from barnplay-popapp, for use in the SVT barn service " barnPopularity: Int! " TrendingMetric for this item from barnplay-popapp, for use in the SVT barn service " barnTrending: Float! " Special image used for kids content to show the main character of the show " characterImage: Image " Viewer warnings for this playable " contentWarning: ContentWarning " Producing country or countries ISO code" countriesOfOrigin: [String!]! " Contains all countries that are listed as producing country " countriesOfOriginWithNames: [Country!]! " Are the seasons composed from editorial tv show sections? " customSections: Boolean! " Deep links for different services, e.g. svt play and barn play " deepLinks: DeepLinks! " Episodes as a flat list. Use allEpisodesIncludingUpcoming for all of them" episodes: [Playable!]! " Episodes as a flat list including some upcoming episodes used by searchIndexer " episodesForSearchIndexer: [Playable!]! @deprecated(reason : "This is only used by searchIndexer and is therefor hidden in explorer") " All episodes, including upcoming ones, as a flat list " episodesIncludingUpcoming: [Episode!]! " Extra material like clips or trailers for the entire tv show " extraMaterial: [ExtraMaterial!]! " Categorization by cluster tags (\"video@...\" or \"editorialvideo@...\") " genres: [Genre!]! " Unique identifier. This will be the same value as svtId " id: ID! " Image from Edith is used, see rules on contento startpage " image: Image! " Image for external feeds" imageForFeeds: Image! @deprecated(reason : "Use imagesForFeeds instead") " Images from Edith, see rules on contento startpage " images: Images! " Images from Edith that will be used for external feeds. " imagesForFeeds: ImagesForFeeds! " Images from Edith that will be used for external tableau. " imagesForTableau: ImagesForTableau! " Languages for all episodes of all seasons. Uses three-letter iso format, and \"sgn\" for Sign language " languages: [String!]! " The duration of the latest episode in seconds " latestEpisodeDurationSeconds: Long " The latest PublicationDate of its underlying episodes " latestEpisodePublicationDate: Timestamp " Defined in Vision. Format is suitable for a printed TV Guide " longDescription: String! " Contains all languages that are present as mainLanguage in any episode variant " mainLanguages: [Language!]! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services. " name: String! " Time when the next episode will be published " nextEpisodeAvailable: Timestamp " Next episode in a formatted format according to the styleguide " nextEpisodeAvailableFormatted: String " Number of active episodes " numberOfActiveEpisodes: Int! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! "Parent to which this belongs. Content will return itself." parent: Content parentNode: Node " Popularity for this item from popapp " popularity: Int! " Image for external feeds" portraitPosterForFeeds: Image @deprecated(reason : "Use imagesForFeeds instead") " Special image used for kids content to show a portrait poster image " portraitPosterImage: Image prioritizedSearchTags: [String!]! " Related content from Balthazar " related: [Content!]! " Rerun information, has this content been present on Play before? Calculated as 'has all episodes been broadcasted earlier' " rerun: Boolean! " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! " All available seasons " seasons: [Season!]! " All available seasons including upcoming seasons with episodes 5 days into the future. Used for external feeds " seasonsForFeeds: [Season!]! " Defined in Vision. Usually used as byline below the name " shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! " Defined in Edith or Vision. Tags are used to group or classify content " tags: [Tag!]! " Audience targeted for this Content " targetAudience: TargetAudience! " Internal title info " titleInternalInformation: TitleInternalInformation " Type of title/program, will be KidsTvShow " titleType: String! " URL field containing various URL:s, for example SVT Play " urls: Urls! """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! } type KunskapskanalenBroadcast { description: String! end: Timestamp! " Episode title " episodeName: String! episodeNumber: Int " List of associated image ids " episodeThumbnailIds: [Int!] id: ID! " Images from Edith, see rules on contento startpage " images: Images " Name of program " name: String! numberOfEpisodes: Int " Planned runtime in seconds " plannedRuntime: Int! " Start of rights in SVT Play" playValidFrom: Timestamp " Start of rights in a formatted format " playValidFromFormatted: String " End of rights in SVT Play" playValidTo: Timestamp " End of rights in a formatted format " playValidToFormatted: String " Program id from vision " programId: String! " Unique publishing id for this schedule item " publishingId: String " Information of when it gets a rerun in the broadcast television. " rerunDescription: String! seasonNumber: Int start: Timestamp! " Link to SVT Play, Null if UR program " svtPlayLink: String " Tags are used to group or classify content " tags: [Tag!]! " Title id when available (SvtId for every title except Singles that uses Vision id) " titleId: String " Link to UR Play, Null if not UR program " urPlayLink: String } type Language { " Three letter ISO-code (ISO 639-2) " id: ID! name: String! } type Links { info: String! watch: String } "Start and end times for live broadcasts" type Live { """ liveNow is true when the PK (Playout) systems says the program is live. There might be some delay between liveNow being true and the Video-api responding with video-links. """ liveNow: Boolean! plannedEnd: Timestamp " If this episode is ready for live, i.e. exists in correct way in PK " readyForLive: Boolean! start: Timestamp! } type LocalNewsRegion { " Id for the region " id: String! " The name of the region, e.g. \"Västerbotten\" for \"Lokala nyheter Västerbotten\" " name: String! " User saved region " selected: Boolean! } type LoginPromotion { actionButtonText: String! heading: String! hideButtonText: String! text: String } type Logotype { image: Image logotypeAlignment: LogotypeAlignment! } type MainCategories { analytics: Analytics! categories: [CategoryTeaser!]! } type MainMenuEvent { category: String! icon: String! label: String! preLoadStuff: PreLoadStuff } type MarkAsWatchedInKeepWatchingResponse { result: Boolean! } type Message { link: String linkText: String message: String } "Editorial messages associated with content items" type Messages { editorial: Message! urgent: Message! } type MiniSchedule { analytics: Analytics! buttonText: String @deprecated(reason : "Use scheduleButton instead") heading: String! id: String! items: [MiniScheduleItem!]! scheduleButton: CategoryButton } type MiniScheduleItem { analytics: Analytics! dayLabel: String heading: String! id: String! liveNow: Boolean! subHeading: String! svtId: String! timeBackgroundColor: String! @deprecated(reason : "Will be replaced by client logic based on liveNow") timeBackgroundColorFocused: String! @deprecated(reason : "Will be replaced by client logic based on liveNow") timeLabel: String! urls: Urls videoSvtId: String } type MissingConsentForContinueWatchingBanner { editConsentButtonLabel: String! heading: String! loginButtonLabel: String! text: String! textWithLinks: [StructuredTextElement!]! } """ Only one of the fields can have a value (except id). If a you choose to support the hero module by having that field in your query, you will get the hero if a superhero is not present. If you choose NOT to support the hero (TV platforms) you just skip that field and the display window will be present as a selection instead. """ type Module { analytics: Analytics! " The breaking news module " breaking: Breaking " The continue watching selection (Fortsätt titta). If you don't use this field it will be included in the selection field instead." continueWatching(includeIfEmpty: Boolean): Selection event: Event " The favorites selection (Min lista). If you don't use this field the favorite selection will not be returned. " favorites(includeIfEmpty: Boolean): Selection """ A hero at the top of the start page with its display window list. Do not use this field if your platform doesn't support the hero concept (TV platforms). If you don't use this field the display window will appear as a selection in the selection field. """ hero: Hero " DOM safe id for the module " id: String! """ Call To Action login prompt. If you don't use this field, or if the user is already logged in, the login prompt will not be returned. If the query asks for this field, it may be returned if no other Call To Action module have precedence. If the client has pressed the "No" button. Please exclude this in the query using: loginPromotion @include(if: $showLoginPromotion) { heading (...) } """ loginPromotion: LoginPromotion """ Users with too strict consent settings will get this banner instead of ContinueWatching missingConsentForContinueWatchingBanner @include(if: $noConsent) { heading (...) } """ missingConsentForContinueWatchingBanner: MissingConsentForContinueWatchingBanner """ Call To Action push notification promotion, used by mobile clients. E.g. "Missa aldrig en bra serie! Aktivera push-notiser för att få tips... If the query asks for this field, it may be returned if no other Call To Action module have precedence. If a client already has accepted push notification or denied the CTA. Please exclude this in the query using: pushNotificationPermission @include(if: $showPushNotificationPermission) { heading (...) } """ pushNotificationPermission: PushNotificationPermission " A typical selection with teasers to display as a list on the start page." selection: Selection """ Call To Action slurp promotion, e.g. "För att lägga in tittarhistorik från den här enheten... If the query asks for this field, it may be returned if no other Call To Action module have precedence. If a client already has uploaded local history to the account or has pressed the "No" button. Please exclude this in the query using: slurpPromotion @include(if: $showSlurpPromotion) { heading (...) } """ slurpPromotion: LoginPromotion " A superhero at the top of the start page with its display window list. This is mandatory for all platforms. " superhero: Superhero """ Call To Action surveys promotion. Uses abTestVariants in top level query to determine which survey to show. If the query asks for this field, it may be returned if no other Call To Action module have precedence. If a client already has answered a survey or has pressed the "Nej tack" button. please add the survey id to the surveysToExclude list. """ survey(platform: Platform, surveysToExclude: [String!], versionCode: Int): Survey } type ModuleAnalyticsIdentifiers { moduleId: String! " Module index, ie the index vertically of this module on the start page " moduleIndex: Int! moduleType: String! } type Modules { items: [Module!]! numberOfItemsAfter: Int! numberOfItemsBefore: Int! totalSize: Int! } type MoreDetails { byline: String! duration: String episodeDescription: String episodeHeading: String heading: String! originalTitle: String productionYear: Int productionYearRange: String restrictions: Restrictions titleDescription: String! titleHeading: String! validFrom: String validTo: String } type Mutation { "Adds the favorites supplied" addFavorites(favorites: [Favorite!]!): AddFavoritesResponse! "Adds a reminder for the specified video svtId" addReminder(id: String!): AddReminderResponse! "Add a search click item that the user clicked on" addSearchClick(item: SearchClickItem!): AddSearchClickItemResponse! "Merges the supplied history with users existing history. history param is capped at 2000 sorted by time" addToKeepWatching(history: [HistoryWithTime!]): AddToKeepWatchingResponse! "Used in the device authorization flow. For example when a user Authorizes a TV device on the mobile phone." authorizeDevice(userCode: String!): AuthorizeDeviceResponse! """ Slurps history, favorites and user settings from the device to the account provided in the authorization header. deviceTokenInvalid will be true if the fromDeviceToken is invalid (refresh it) HTTP 401 will be sent if the user account authorization token in the header is invalid """ copyFromDeviceToAccount(fromDeviceToken: String!): CopyFromDeviceToAccountResponse! "Marks the given video as watched, thus removing that video from the keep watching list." markAsWatchedInKeepWatching(videoId: String!): MarkAsWatchedInKeepWatchingResponse! "Removes all videos from the keep watching list." removeAllFromKeepWatching: RemoveAllFromKeepWatchingResponse! "Remove the specified favorite" removeFavorite(favorite: Favorite!): RemoveFavoritesResponse! "Remove the specified favorite" removeFavorites(favorites: [Favorite!]!): RemoveFavoritesResponse! "Removes the given videos from the keep watching list and all other videos from the same title." removeFromKeepWatching(videoIds: [String!]!): RemoveFromKeepWatchingResponse! "Removes a reminder for the specified video svtId" removeReminder(id: String!): RemoveReminderResponse! "Remove specific search clicks for the user" removeSearchClick(item: SearchClickItem): RemoveSearchClickItemResponse! "Remove all stored search clicks for the user" removeSearchClicks: RemoveSearchClicksItemResponse! "Sets audio preference for audio playing." updateAudioPreference(audioPreference: AudioPreferenceInput!): UpdatePreferencesResponse! updateBirthYear(birthYear: Int!): ProfileState! updateDisplayName(name: String!): UpdateDisplayNameResponse! updateGuardianEmail(guardianEmail: String!): ProfileState! "Sets audio preference from information in the HLS manifest." updateHLSAudioPreference(audioPreference: HLSTrackInput!): UpdatePreferencesResponse! "Sets text preference from information in the HLS manifest." updateHLSTextPreference(textPreference: HLSTrackInput!): UpdatePreferencesResponse! "Sets video preference from information in the HLS manifest." updateHLSVideoPreference(videoPreference: HLSTrackInput!): UpdatePreferencesResponse! "Prefered local news region when watching Morgonstudion live." updateLocalNewsRegion(id: String!): UpdateLocalNewsRegionResponse! updateNewsLetterConsent(consent: Boolean!): UpdateNewsLetterConsentResponse! updateProfileName(name: String!): ProfileState! @deprecated(reason : "Use `updateDisplayName` instead.") updateTermsVersion(termsVersion: Int!): ProfileState! "Sets text preference for video playing." updateTextPreference(textPreference: TextPreferenceInput!): UpdatePreferencesResponse! updateUserName(name: String!): UpdateUserNameResponse! "Sets video preference for video playing." updateVideoPreference(videoPreference: VideoPreferenceInput!): UpdatePreferencesResponse! } type NavigationSelection { analytics: Analytics! id: String! items: [NavigationSelectionItem!]! name: String! } " A teaser, category, quiz or another content " type NavigationSelectionItem { category: CategoryTeaser id: ID! title: TitleTeaser } type NewsLetterConsentPage { agreeLabel: String! analyticsIdentifiers: AnalyticsIdentifiers! disagreeLabel: String! text: String! title: String! } type NoResult { analytics: Analytics! button: ScheduleModuleButton! text: [StructuredTextElement!]! } type NumericAnalyticsValue { key: String! numericValue: Float! } type Onboarding { body: String! changedDate: String! title: String! } type OpeningHours { end: String! endUTC: String! start: String! startUTC: String! } type PartialProfile { " Amigo avatar url " avatarUrl: String! backgroundColor: String! " Birth year in Amigo " birthYear: Int email: String name: String " Amigo user id " userId: String! " Amigo user name " username: String! } type Participant { artisticName: String firstName: String numberOfParticipations: Int! publicInterest: Boolean! role: String roleName: String surName: String } type Person { name: String! numberOfParticipations: Int! } type PersonalHistory { " Listable id " id: String! " The actual item " item: Playable " Progress in percentage between 0 - 100 " progressFraction: Int " Progress in seconds " progressSeconds: Int } "All playable content. Holds Singles, TV Series, TV Shows, Kids TV shows, Content lists." type PlayContent { all: [Content!]! kidsTvShows: [KidsTvShow!]! recommended: [RecommendedItem!]! singles: [Single!]! tvSeries: [TvSeries!]! tvShows: [TvShow!]! } "A queue with the things to play for a video" type PlayQueue { "Selection and extra information around text to use for next episode as well as colors." endScreen: EndScreen """ The playQueue in a flat flavor. Basically a list of teasers. For KidsTvShow the selected episode is first and all episodes for the show is in the queue. """ flat( "Filter items based on location, kids or öppet arkiv" filter: Filter ): [Teaser!]! " The next item to play as a teaser " nextToPlay( "Filter items based on location, kids or öppet arkiv" filter: Filter, startVariantId: String! ): Teaser " The playQueue in a selections based flavor. Selections can be Seasons, recommended, extramaterial etc. " selections( "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " UX for displaying next episode in skip-to-next view based on episode in current play queue position. " skipToNext: SkipToNext """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. """ whenToDisplaySkipToNext: Int } " Settings for playback " type PlaybackSettings { " HLS track characteristics for playback " HLS(settings: HLSPlaybackSettingsInput): HLSPlaybackSettings! " Selected local news region " localNewsRegion: LocalNewsRegion " All available local news regions. Null if not applicable " localNewsRegions: [LocalNewsRegion!] " Returns the tracks for the given video which best matches the user's preferences " trackSelection: PreferredPlayback! } " Config that controls the chat " type PlayerChatConfig { " Direktcenter chatId " chatId: String! closedMessage: String description: String " Decides the time of day to disable the chat. Null means midnight. " endTime: String hideAvatars: Boolean! " Id of the matching configuration " id: String! initialVisibility: Boolean loginRequired: Boolean name: String reactions: [PlayerReaction!]! " Decides the time of day when the chat is available. If null chat is available from midnight " startTime: String } " Config for content specific features " type PlayerConfig { chat: PlayerChatConfig extras: PlayerExtraConfig } " Untyped json blob used for experiments " type PlayerExtraConfig { data: String! id: String! } " The basis for all UI/UX logic behind video player data" type PlayerPage { analytics: Analytics! " Id for the episode or single in apple feed format, used by apple tv to link between play and internal apple tv app, example 1234567-001 becomes 1234567001 " appleFeedId: String "Aspect ratio. Default value is 16:9" aspectRatio: String! " Description for episode or movie" description: String! " True if default variant exists along with an accessibility variant " hasExtraAccessibilityVariants: Boolean " e.g. title of show or movie name" heading: String! " Highlights are like bookmarks within the video which editors have selected " highlights: [Highlight!]! " Images for the playable " images: Images! " Contains config for turning on/off the chat in the video player as well as emoji configs " interactivityConfig: InteractivityConfig " Contains info about the program intro or opening credits " intro: Intro " Information for live broadcasts " live: Live " Remaining seconds left before live start. Only valid ten min or less before start, otherwise null. Also null for non-live content" liveStartSecondsLeft: Long "Returns a playQueue for the item in the playerPage." playQueue: PlayQueue! " Settings for playback " playbackSettings( """ Set to true to include the available tracks from all sibling variants. This should only be used if your player client supports variant merging via Ditto. Defaults to true. """ includeAllVariantTracks: Boolean, "Provide the preferred media tracks (instead of relying on user token)" preferredPlayback: PreferredPlaybackInput ): PlaybackSettings! " Contains config for turning on/off the chat in the video player as well as emoji configs " playerConfig: PlayerConfig @deprecated(reason : "Replaced by interactivityConfig") "Region picker" regionPicker: RegionPicker " The livestream picker " relatedLive: Selection " The video of this content should be watched as a linear channel " requiresLinearPlayback: Boolean! " Used for blocking playback of content based on restrictions " restrictions: Restrictions " Position in seconds to resume playback if this item is in the watching history " resumeTimeSeconds: Long " Returns number of seconds a client should wait until a new request to check for new highlights, null means no requests are necessary " secondsToNextPollForHighlights: Int " Returns number of seconds a client should wait until a new request to check for new related live content, null means no requests are necessary " secondsToNextPollForRelatedLive: Int " Starting time for playable. Is based on planned start time for live content, otherwise on rights " startTimeFormatted: String! " e.g. episode numer and name or byline for movie" subheading: String! " Used for checking if video really is targeted for kids when in a kids mode/barningång " targetAudience: TargetAudience " The id of the title. Used for adding to my list/favorites. " titleSvtId: String "First playable variant for this item." videoSvtId: String! """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. If missing, do not show skip to next button. """ whenToDisplaySkipToNext: Int } " Describes a reaction the emoji rain " type PlayerReaction { emoji: String! id: String! } "A collection of published playables" type Playlist implements Listable { " Not used for Playlist " accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? " barn: Boolean! " Unique identifier " id: ID! " Not used for Playlist " image: Image! " Not used for Playlist " images: Images! " Not used for Playlist " longDescription: String! " Editorial messages directed to the viewer " messages: Messages " The name of the playlist. " name: String! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The parent content this item belongs to. For playlists, a pointer to null just for uniformity. " parent: Content " Published playables in this playlist " playables: [Playable!]! " Popularity for this item from popapp " popularity: Int! " Not used for Playlist " restrictions: Restrictions! " Not used for Playlist " shortDescription: String! " Not used for Playlist " slug: String! " Not used for Playlist " svtId: String! " Not used for Playlist " tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! } type PreLoadStuff { categoryName: String! colors: ThemeColors } "Users video player preferences." type PreferredPlayback { audio: AudioPreference! text: TextPreference video: VideoPreference! } type PresentationHints { " Is this something that can be played? " playable: Boolean! " Should this item be displayed in a prominent way? " prominent: Boolean! } type ProducingDepartment { id: ID! name: String! } type ProductionPeriod implements Node { " Published episodes within production period " episodes: [Episode!]! " Published episodes including upcoming within production period " episodesIncludingUpcoming: [Episode!]! " Unique identifier. Today this is the owning Tv Shows´s id with a hyphen and season number appended " id: ID! " The name of the item. Today it derives from production year. " name: String! " Total number of episodes in production period " numberOfProducedEpisodes: Int! parentNode: Node " Rerun information, has this content been present on Play before? Calculated as 'has all episodes been broadcasted earlier' " rerun: Boolean! " URL field containing various URL:s, for example SVT Play " urls: Urls! } type Profile { " Amigo avatar url " avatarUrl: String! backgroundColor: String! " Birth year in Amigo " birthYear: Int email: String! name: String! " Amigo user id " userId: String! " Amigo user name " username: String! } type ProfileItem { isComplete: Boolean! profile: PartialProfile! stateMessage: String } type ProfileState { agePage: AgePage avatarUrl: String backgroundColor: String editProfilePage: EditProfilePage email: String guardianApprovalPendingPage: GuardianApprovalPendingPage guardianEmailPage: GuardianEmailPage isComplete: Boolean! profile: Profile stateMessage: String termsPage: TermsPage } "All content. Used for 'A till Ö'. Holds Singles, TV Series, TV Shows, Kids TV shows" type ProgramAtillO { analyticsIdentifiers: AnalyticsIdentifiers! flat: [Content!]! selections: [Selection!]! } type PublicationPeriod { end: Timestamp endFormatted: String start: Timestamp startFormatted: String } type PublishingDetail { label: String! value: String! } type PushNotificationPermission { actionButtonText: String! heading: String! hideButtonText: String! text: String } """ Query is the top level element when writing queries in Contento. You start with a query and drill further down the graph. """ type Query { "A selection of more genres. Listed in some clients." additionalGenres: Genres! """ Returns all active, expired and upcoming episodes and singles that exist in Contento, for internal use. Supports filtering by categories (genre slugs) with OR logic. """ allEpisodesAndSinglesForInternalUse(categories: [String!], include: [ContentStatus!]): [Playable!]! "Returns all active, expired and upcoming episodes that exist in Contento, for internal use." allEpisodesForInternalUse(include: [ContentStatus!]): [Episode] "Query for all content (titles and singles) which is used internally by fiona to enrich that application" allTitlesForEditorialSystems( "Do you want to include all extra material, including material with \"availableInPlay == false\"?" includeAllExtraMaterial: Boolean, "Do you want to include expired singles? Default is false" includeExpiredSingles: Boolean, includeFullOppetArkiv: Boolean ): [Content!]! """ Query for all content (titles and singles, including upcoming) which is used internally by the search indexer for the foundation that search is based at """ allTitlesForSearchIndexer: [Content!]! """ A flat structure of all watchable videos ie Episode and Single Variant as well as clips. Built for Helix. Filter by date. Example: from = "2022-01-01", to "2023-01-01" """ analyticsMetadata(from: String, ids: [String!], sampleSize: Int, to: String): [AnalyticsMetadata!]! "Fetch helix token for my session" analyticsToken: AnalyticsToken! "Query for fetching data to display on the category page, e.g. \"drama\" or \"sport\"" categoryPage( abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], history: [History!], id: String! ): CategoryPage "Returns a list of SVTs channels and their broadcast schedule for today and part of tomorrow" channels( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!] ): Channels! """ Query for one or more content items which can be TvSeries, TvShow, KidsTvShow Single, Episode, Clip, Trailer. This query also includes historical content that has expired. Used by editorial systems. """ contentById(ids: [String!]): [Listable!]! "Title for given programId" contentByProgramIds(programIds: [String!]!): [Content!]! """ Query for one or more content items which can be TvSeries, TvShow, KidsTvShow Single, Episode, Clip, Trailer. This query also includes historical content that has expired. Used by the PI team. """ contentBySlug(slugs: [String!]): [Listable!]! """ Query for all content (titles and singles) which is used by external feeds such as Apple, Google and Generic (tv.nu) upcomingContentDays is the number of days to look for upcoming content, defaults to 5 """ contentForExternalFeeds(names: [String!], upcomingContentDays: Int): [Content!]! "Query for modelling a details page, i.e. details page for a Title (TvSeries, TvShow etc) or an Episode" detailsPage( abTestVariants: [AbTestVariant!], "prefer associated content according to accessibility" accessibility: Accessibility, "A list of title (Content)" favorites: [String!], "Filter items in smart start based on location, kids or öppet arkiv" filter: Filter, "History of already played content when user is not logged in" history: [History], "Id, slug" id: String!, platform: Platform ): DetailsPage "Query for modelling a details page, i.e. details page for a Title (TvSeries, TvShow etc) or an Episode" detailsPageByPath( abTestVariants: [AbTestVariant!], "prefer associated content according to accessibility" accessibility: Accessibility, "A list of title (Content)" favorites: [String!], "Filter items in smart start based on location, kids or öppet arkiv" filter: Filter, "History of already played content when user is not logged in" history: [History], "Svtplay path, e.g. /video/123/slug or /klipp/32923239/kriminalitet-brottsligheten-graver-sig-allt-djupare-under-ytan" path: String!, platform: Platform ): DetailsPage "Search indented for editorial system" editorialSearch( includeFullOppetArkiv: Boolean, kidsOrAdult: KidsOrAdult, limit: Int, "Id (exact match) or part of name to search for." query: String, "Option to filter by type if searching by name. If not set returns all hits regardless of type." typesFilter: [EditorialSearchFilterType!] ): [Listable!]! "Returns the EndScreen" endScreen( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], "History of already played content." history: [History!], "The playable that has just been watched. Can be a variant or clip. Id format can be pevi, svtId, clipId or legacyId" id: String! ): EndScreen! @deprecated(reason : "Use query `playQueue` instead") "Returns the endscreenRecommendations that is related to the currently watched playable" endScreenRecommendations( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], "History of already played content." history: [History!], "The playable that has just been watched. Can be a variant or clip. Id format can be pevi, svtId, clipId or legacyId" id: String! ): Selection! @deprecated(reason : "Use query `playQueue` instead") "All favorite ids. Not filtered, so titles without episodes also appear. Requires token." favoriteItems: [FavoriteItem!]! "Selection of favorites given a list of title (Content) ids. If uno token is given, list is ignored." favorites( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], titleIds: [String!] = [] ): Selection! "Query for fetching data for a genre, e.g. \"drama\", \"sport\"" genres(ids: [String!], names: [String!], type: String): [Genre!]! "Query for fetching data for a genre by id, e.g. \"drama\", \"sport\"" genresByIds(ids: [String!]!): Genres! "All main genres, i.e. 'Huvudkluster'" genresInMain: Genres! googleHomeScreen( "History of already played content." history: [History!] ): GoogleHomeScreen! "Query for getting current important messages (VMA/TMA)" importantMessages(platform: ImportantMessagePlatform): [ImportantMessage!]! "Query for getting current important messages (VMA/TMA) for news platforms. Excludes edithorial messages from Svt Play (RMA)" importantMessagesForNews: [ImportantMessage!]! """ Given a list of item ids (svtIds or episode/clip/variant id:s) return a custom selection that can be used for keep watching. If uno token is given, list is ignored. """ keepWatching( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], history: [History!] ): Selection! "Returns the next running or upcoming live Playable among all kids (barn) titles" kidsLiveAndUpcomingLive( "future unix timestamp in UTC rounded to whole minutes (!), to include upcoming live until" upcomingLiveUntil: Long! ): [Playable!]! "Returns all programs scheduled in kunskapskanalen for a specific day" kunskapskanalen(day: String!): [KunskapskanalenBroadcast!]! "Returns latest news episode from Rapport or Aktuellt" latestNewsEpisode: Episode! "Returns latest sport episode from Sportnytt or Sportspegeln" latestSportEpisode: Episode! """ Query for one or more items of type Listable which can be TvSeries, TvShow, Single, Episode, Clip, Trailer See the detailsPage query instead of this one which we promote for building a detailsPage. """ listables( "prefer associated content according to accessibility" accessibility: Accessibility, ids: [String!] ): [Listable!]! """ Listables by escenicId. Used by svtplay-web. Use listable with svtId if possible See the detailsPage query instead of this one which we promote for building a detailsPage. """ listablesByEscenicId( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "prefer associated content according to accessibility" accessibility: Accessibility, escenicIds: [Int!]! ): [Listable!]! """ Returns Content by slug. Used by svtplay-web. Use listables with svtId if possible See the detailsPage query instead of this one which we promote for building a detailsPage. """ listablesBySlug( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "prefer associated content according to accessibility" accessibility: Accessibility, slugs: [String!]! ): [Listable!]! """ All main categories. This query includes by default audio described and sign interpreted categories. Use excludeAccessibilityCategories to exclude these. """ mainCategories(excludeAccessibilityCategories: Boolean): MainCategories! " Fetches main menu events " mainMenuEvent: MainMenuEvent " Fetches a mini schedule for the matching categories, all items need to have all categories (e.g. Sports AND Hockey) to be included " miniSchedule(category: String!, filterCategory: String, limit: Int): MiniSchedule """ Query for one or more content items which can be TvSeries, TvShow, KidsTvShow Single, Episode, Clip, Trailer. This query also includes clips that are unpublished in Edith but should still be visible for the news. """ newsContent(ids: [String!]): [Listable!]! newsLetterConsentPage: NewsLetterConsentPage personalHistory: [PersonalHistory!]! "Given a list of item ids (svtIds or episode/clip/variant id:s) return a custom selection with personal recommendations from Balthazar" personalRecommendations(abTestVariants: [AbTestVariant!], clientId: String, favorites: [String!], history: [String!]): Selection! @deprecated(reason : "Use `selectionById(id: \"personalRecommendations_start\")` instead.") "Query for all playable content. Default value includeInactiveTvShowsAndSeries is false" playContent( ids: [String!], "Do you want to include all öppet arkiv, not only promoted ones? If so, set this flag to true!" includeFullOppetArkiv: Boolean, includeInactiveTvShowsAndSeries: Boolean, names: [String!], tags: [String!], upcomingLiveMinutes: Int ): PlayContent! "Returns a playQueue for a given variant." playQueue( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "Allow trailers to be added to the flat play queue. Default behavior is that the trailers are added last" allowTrailers: Boolean, "A list of title (Content)" favorites: [String!], "History of already played content." history: [String!], historyWithProgress: [History!], selectedLocalNewsRegion: String, "Minimum number of seconds until a trailer is included in the flat play queue. If trailersAfterSeconds is longer than the total duration of the queue the trailers will be inserted last" trailersAfterSeconds: Int, "The playable variant the play queue should start with. Can be a variant, clip or playlist. Id format can be pevi, svtId, clipId, playlistId or legacyId" variantId: String! ): PlayQueue! "Query for playable content in a flat structure" playables(ids: [String!], legacyIds: [Int!]): [Playable!]! "PlayerPage" playerPage( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], history: [History!], "The playable variant. Can be a variant, clip or playlist. Id format can be pevi, svtId, clipId, playlistId or legacyId" playableId: String!, "Id of selected local news region" selectedLocalNewsRegion: String ): PlayerPage! "Returns a profile item for the profile picker. Meant for a profile preview" profileItem: ProfileItem! "Fetch current profile state" profileState: ProfileState! "Query for all content, sorted alphabetically. Used in the web for the 'a till ö' list" programAtillO( "Filter items based on location, kids or öppet arkiv" filter: Filter ): ProgramAtillO! "Returns all running live shows" runningLive: [Playable!]! schedulePage(category: String!, filter: SchedulePageFilterInput): SchedulePage "Returns the screen saver page" screenSaverPage( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], "Filter items based on location or kids. Note: fullOppetArkiv is ignored and treated as true in this query" filter: Filter, "History of already played content." history: [History!] ): ScreenSaverPage! @deprecated(reason : "No longer used") "Search for content by specifying query string and optional maxHits" search( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "Do you want to include all öppet arkiv, not only promoted ones? If so, set this flag to true!" includeFullOppetArkiv: Boolean, "Removes search hits with blockedForChildren: true. -> Kids friendly results" kidsFilter: Boolean, "Maximum number of characters in description. If left out it defaults to 1500 characters which should be enough for long descriptions." maxDescriptionLength: Int, "Limit number of hits" maxHits: Int, "Only hits that are kids shows, that is the flag barn is true" onlyChildContent: Boolean, "Query string to search for" query: String!, "If a title with episodes and episodes for that title are returned in the result, remove the titles episodes from the result and only include the title." removeEpisodic: Boolean, "Deprecated! Try to not use this filter at all! Include these specified types in result. Can be zero or more of [title, episode, clip, single, genre]." types: [String], "Removes search hits with onlyAvailableInSweden: false" userIsAbroad: Boolean ): [SearchHit!]! @deprecated(reason : "Use `searchPage` instead") "Search made for Editorial systems" searchInternal( "Filter on clip prefixes" clipPrefixes: [String], "Excludes clips with aspect ration 1:1. Defaults to true if not set" excludeSquareClips: Boolean, "Limit number of hits" first: Int, "Includes expired content" includeExpired: Boolean, "Removes search hits with blockedForChildren: true. -> Kids friendly results" kidsFilter: Boolean, matchMode: InternalSearchMatchMode, "Content must not include (exclude) the following tag ids" mustExcludeTags: [String], "Content must include the following tag ids" mustIncludeTags: [String], "Offset for where to remove" offset: Int, "Only hits that are kids shows, that is the flag barn is true" onlyChildContent: Boolean, "Only hits that are (upcoming live, live now or been live) episodes and singles." onlyLive: Boolean, paginateBy: InternalSearchPaginationType, publishedFrom: Timestamp, publishedTo: Timestamp, "Query string to search for" query: String, sort: InternalSearchSort, "Filter on types" types: [InternalSearchMatchType], "Removes search hits with onlyAvailableInSweden: false" userIsAbroad: Boolean ): InternalSearchResult! "Search for content by specifying query string and optional maxHits" searchPage( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], "Filter items based on location or kids. Note: fullOppetArkiv is ignored and treated as true in this query" filter: Filter, "History of already played content." history: [History!], "This is deprecated. Use Filter instead" kidsFilter: Boolean, "Limit number of hits" maxHits: Int, "This is deprecated. Use Filter instead" onlyChildContent: Boolean, "Query string to search for" query: String, "Search hits that the user has clicked on previously, ordered by time of click, newest first. Categories will be ignored" searchClickHistory: [SearchHistoryItem!], "This is deprecated. Use Filter instead" userIsAbroad: Boolean ): SearchPage! "Query for selections by Id. Includes fiona selections by genre and start page selections." selectionById( "ab-tests for the list" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], "A list of item ids (svtIds or episode/clip/variant id:s)" history: [History!], "Id for selection in the format the id is presented in contento. Example: svtId_jMPZ65M" id: String! ): Selection """ Query for SelectionGroups from Fiona by product slug and one or more SelectionGroup slugs. Parameter "names" is deprecated. """ selectionGroups(abTestVariants: [AbTestVariant!], names: [String!], product: String, slugs: [String!]): [SelectionGroup!]! "Query to get the suggested playable for a title based on history" smartStart( "Allocated A/B test variant id:s" abTestVariants: [AbTestVariant!], "prefer associated content according to accessibility" accessibility: Accessibility, "Filter items based on location, kids or öppet arkiv" filter: Filter, "History of already played content." history: [History!], "Id of listable that is currently displayed as a detail page" id: String!, "preferred language iso code id" preferredLanguage: String ): SmartStart "Query startForKids Experimental top query for getting fiona lists for Barn Android TV" startForKids( "Passed to fiona for ab-tests of lists on kids start page" abTestVariants: [AbTestVariant!] ): SelectionGroup! @deprecated(reason : "Use query `startForSvtplay(kidsProfile: true)` instead") "Query for selected lists for start page, e.g. \"Recommended\", \"Popular\", \"Latest\", \"Last chance\", \"Live broadcasts\"" startForSvtPlay( "Passed to fiona for ab-tests of lists on start page" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [Favorite!], "Filter items based on location or kids" filter: Filter, "A list of item ids (svtIds or episode/clip/variant id:s)" history: [History!], "Adopts the content for kids using editorial experience for kids" kidsProfile: Boolean ): StartForSvtPlay! "Query for selected lists for kids start page, e.g. \"Recommended\", \"Popular\", \"Latest\", \"Last chance\", \"Live broadcasts\"" startForSvtPlayKids( "Passed to fiona for ab-tests of lists on start page" abTestVariants: [AbTestVariant!], "A list of title (Content)" favorites: [String!], "A list of item ids (svtIds or episode/clip/variant id:s)" history: [History!] ): StartForSvtPlay! "Query for getting the active surveys" surveys(abTestVariants: [AbTestVariant!]!, platform: Platform): [Survey!]! "Entrypoint for swipalicious player 🦄" swipePlayerStartPage: SwipePlayerStartPage! "Fetch a single swipe playlist by id, can return null" swipePlaylist(id: Long): SwipePlaylist "Return the terms and conditions for logging in. Does not need authentication." termsPage: TermsPage! """ Retrieves all upcoming titles and titles with new seasons on SvtPlay sorted by publishing date. The content discovery team uses this query to populate a GUI to help editors find new content to promote. """ upcomingTitlesForEditors: [Selection!]! "Fetch a users preferences" userSettings: UserSettings! " Fetches whats broadcasting on passed channel right now. Channel can be SVT1, SVT2, SVTBSVT24, SVTK" whatsOnTv(channel: String!): WhatsOnTv! } type Recommendability { daysAfterLatestPublication: Int recommendabilityType: RecommendabilityType! } """ A reference to a Playable. Fields defined in a RecommendedItem allows for overriding the corresponding field in the Promoted Content based on editorial context """ type RecommendedItem { byline: String content: Playable! description: String image: Image! " Images including keyart " images: Images! legacySlug: String! " The name of the item when shown in this list. May differ from the actual name of the item. " name: String! } type RegionPicker { " Heading for the region picker " heading: String! " All available local news regions " regions: [LocalNewsRegion!]! " if the region picker should be displayed automatically " showOnStart: Boolean! } type ReminderButton { "Analytics to use when disabling reminder" disableEventAnalytics: EventAnalytics! "Analytics to use when enabling reminder" enableEventAnalytics: EventAnalytics! "If the reminder is enabled the user will be reminded when the program is available" userWillBeNotified: Boolean! } type RemoveAllFromKeepWatchingResponse { result: Boolean! } type RemoveFavoritesResponse { favorites: [FavoriteItem!]! result: Boolean! } type RemoveFromKeepWatchingResponse { result: Boolean! } type RemoveReminderResponse { result: Boolean! } type RemoveSearchClickItemResponse { result: Boolean! } type RemoveSearchClicksItemResponse { result: Boolean! } type Restrictions { blockedForChildren: Boolean! drmCopyProtection: Boolean! " Can be K1, K2 or null" drmCopyProtectionCode: String onlyAvailableInSweden: Boolean! onlyAvailableInSwedenFormatted: String! } type SaveResponse { estimatedTimePublishedFormatted: String svtId: String } type Schedule { days: [ScheduleDay!] @deprecated(reason : "Use sections instead") noResult: NoResult sections: [ScheduleSection!] } type ScheduleDay { analytics: Analytics! " Label showing how many days ago, styled differently " daysAgoLabel: String id: ID! items: [ScheduleModule!]! label: String! } type ScheduleHeader { label: String! type: ScheduleHeaderType! } type ScheduleItem { analytics: Analytics! durationFormatted: String heading: String! id: String! images: Images! liveNow: Boolean! " The live progress in percentage (0-100) if the content is live now " liveProgress: Int " Reminder button information for upcoming live content " reminderButton: ReminderButton " If reminder can be set for upcoming live content " showReminderButton: Boolean! @deprecated(reason : "Use reminderButton field instead") subHeading: String! svtId: String! timeBackgroundColor: String! @deprecated(reason : "Will be replaced by client logic based on liveNow") timeLabel: String! urls: Urls videoSvtId: String } type ScheduleModule { button: ScheduleModuleButton externalScheduleInfo: ExternalScheduleInfo id: ID! scheduleItems: [ScheduleItem!] text: [StructuredTextElement!] } type ScheduleModuleButton { calendarOption: String category: String eventAnalytics: EventAnalytics! id: ID! label: String! } type SchedulePage { analytics: Analytics! colors: ThemeColors filterOptions: SchedulePageFilter heading: String! schedule: Schedule } type SchedulePageFilter { calendar: Calendar categoryPicker: CategoryPicker } type ScheduleSection { analytics: Analytics! " Label showing how many days ago, styled differently " daysAgoLabel: String heading: String! id: ID! modules: [ScheduleSectionModule!]! } type ScheduleSectionModule { button: ScheduleModuleButton id: ID! subsection: ScheduleSubsection text: [StructuredTextElement!] } type ScheduleSubsection { externalScheduleInfo: ExternalScheduleInfo scheduleItems: [ScheduleItem!] title: String } type Scheduling { endTime: Timestamp startTime: Timestamp } type ScreenSaverPage { " Identifiers to use when reporting to Helix " analyticsIdentifiers: AnalyticsIdentifiers! " Recommendations to show on screen saver page." recommendations: Selection! } """ This is a search hit. It aims to contain all fields that are needed to present this in a search result. If something is missing, try accessing it from item field. Can represent `Listable` or `Genre. """ type SearchHit { " List of accessibility aides " accessibilities: [Accessibility!]! " The badge (overlay/label) for a teaser, for example Live broadcast, Öppet Arkiv, Upcoming, Last chance " badge: Badge " Description for the search hit, may contain tags for highlighted words " description: String! " Episode title for the search hit if this is an episode, may contain tags for highlighted words " episodeTitle: String " Id of the underlying item " id: ID! " Image for the search hit " image: Image! " If this is a genre hit " isGenre: Boolean! " The underlying item. A union of Genre and Listable. Avoid accessing this if possible " item: SearchHitItem! " If this is an ongoing live broadcast " liveNow: Boolean! " Name of the search hit, may contain tags for highlighted words. Can be a combination of \"title - episode title\" " name: String! " If search hit is öppet arkiv " oppetArkiv: Boolean! " SvtId of the underlying item or null if a genre hit " svtId: String " Title for the search hit, may contain tags for highlighted words. If this is an episode hit, this is the parent title " title: String! } type SearchPage { analytics: Analytics! " Identifiers to use when reporting to Helix " analyticsIdentifiers: AnalyticsIdentifiers! " All search hits including categories" flat: SearchPageHits " Heading for the search page. " heading: SearchPageHeading " The search query the user searched for " query: String! " Recommendations to show on search page. May be empty." recommendations: [Selection!]! " All search hits including categories divided into sections" sectioned: [SearchPageHits!]! } type SearchPageHeading { " Structured text for the heading " structuredText: [StructuredTextElement!]! text: String! type: SearchPageHeadingType! } type SearchPageHit { " The hit item if it is a category " categoryTeaser: CategoryTeaser " The hit item if it is not a category " teaser: Teaser } type SearchPageHits { analytics: Analytics! " Identifiers for this list of hits " analyticsIdentifiers: SelectionAnalyticsIdentifiers! hits: [SearchPageHit!]! " Heading to display above hits, if there is one " name: String } type Season implements Node { " Published episodes within season " episodes: [Episode!]! " Published episodes including upcoming within season " episodesIncludingUpcoming: [Episode!]! " Unique identifier. Today this is the owning Tv Series´s id with a hyphen and season number appended " id: ID! " The name of the item. Today it derives from season number " name: String! number: Int! " Total number of episodes in season " numberOfProducedEpisodes: Int! parentNode: Node " Rerun information, has this content been present on Play before? Calculated as 'has all episodes been broadcasted earlier' " rerun: Boolean! urls: Urls! } "A named list of selection of Content items" type Selection { """ If the selection is filtered by Accessibility, this field will be set to the same accessibility as the corresponding filter """ accessibility: Accessibility analytics: Analytics! " Identifiers to use when reporting to Helix " analyticsIdentifiers: SelectionAnalyticsIdentifiers! " List of categories, used for fetching related categories. " categories: [CategoryTeaser!]! @deprecated(reason : "Never used, always empty") " Unique id for the selection " id: ID! " Image of the selection " image: Image " List containing teaser data " items( "Filter items based on location, kids or öppet arkiv" filter: Filter, "This is deprecated. Use Filter instead" kidsFilter: Boolean, "Max number of items except for startPage recommended which is always 7 items. Default varies according to selection context." maxSize: Int, "Paginate/limit the number of items returned" pagination: Pagination, "This is deprecated. Use Filter instead" userIsAbroad: Boolean ): [Teaser!]! " List containing teaser data " itemsPaginated( "Filter items based on location, kids or öppet arkiv" filter: Filter, "This is deprecated. Use Filter instead" kidsFilter: Boolean, "Max number of items except for startPage recommended which is always 7 items. Default varies according to selection context." maxSize: Int, "Paginate/limit the number of items returned" pagination: Pagination!, "This is deprecated. Use Filter instead" userIsAbroad: Boolean ): ItemsPaginated! " How to present this selection, e.g. \"showcase\" " listPresentation: ListPresentation! " Name of the selection, e.g. \"Drama\" " name: String! " How to present this selection, e.g. \"showcase\" " presentation: Presentation! @deprecated(reason : "Use `listPresentation`") " Hint on how to present special case e.g. breaking mode or 'super hero left/right' in Showcase window " presentationHint: PresentationHint! " Configuration for current scheduling for this list, if any, configured in fiona" scheduling: Scheduling " Type of content in list. For example: recommended, latest, upcoming " selectionType: String! " Type of the selection, e.g. \"showcase\" " type: SelectionType! @deprecated(reason : "Use `presentation`") } type SelectionAnalyticsIdentifiers { listId: String! listIndex: Int! listName: String! listType: String! presentationType: String! } type SelectionGroup { analyticsIdentifiers: AnalyticsIdentifiers! name: String! selections: [Selection!]! slug: String! } type SelectionsPaginated { numberOfItemsAfter: Int! numberOfItemsBefore: Int! selections: [Selection!]! totalSize: Int! } type ShowMoreButton { eventAnalytics: EventAnalytics! id: ID! label: String! } type ShowMoreSelection { " Button to show more items " button: ShowMoreButton! " Unique id for the selection with show more " id: ID! " Number of items to show before the show more button is clicked " numberOfItemsToShow: Int! " The underlying selection " selection: Selection! } "A Single is a piece of stand-alone, playable content, e.g. a movie or short film" type Single implements Content & Listable & Node & Playable { " List of accessibility aides. Each aid is present if at least one of the variants has it " accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " The proportional relationship between the video's width and height " aspectRatio: String " A list of lists with associated content, for example related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? This flag can be replaced by field targetAudience, which gives one of following values: \"Kids\", \"Adults\", \"KidsAndAdults\". " barn: Boolean! " Popularity for this item from barnplay-popapp, for use in the SVT barn service " barnPopularity: Int! " TrendingMetric for this item from barnplay-popapp, for use in the SVT barn service " barnTrending: Float! " List of cast and crew, grouped by role, sorted for presentation " castAndCrew: [CastAndCrewSection!]! " Special image used for kids content to show the main character of the show " characterImage: Image " Viewer warnings for this playable " contentWarning: ContentWarning " Producing country or countries ISO code" countriesOfOrigin: [String!]! " Contains all countries that are listed as producing country " countriesOfOriginWithNames: [Country!]! " This will always be false for a Single " customSections: Boolean! " Deep links for different services, e.g. svt play and barn play " deepLinks: DeepLinks! " Content length in seconds " duration: Int! " Content length in a formatted format according to the styleguide " durationFormatted: String! " Content length in ISO format (hh:mm:ss) " durationISOFormatted: String! " End Credit Start time in seconds " endCreditStart: Int """ The episode this playable belongs to. Examples: Variant will return the Episode or Single to which it belongs. Single and Episode it will return itself. Clip and Trailer will return itself because it has no episode playable. """ episode: Playable! " Episodes as a flat list. Use allEpisodesIncludingUpcoming for all of them" episodes: [Playable!]! " Episodes as a flat list including some upcoming episodes used by searchIndexer " episodesForSearchIndexer: [Playable!]! @deprecated(reason : "This is only used by searchIndexer and is therefor hidden in explorer") " All episodes, including upcoming ones, as a flat list " episodesIncludingUpcoming: [Episode!]! " Extra material like clips or trailers for the entire tv show " extraMaterial: [ExtraMaterial!]! " Categorization by cluster tags (\"video@...\" or \"editorialvideo@...\") " genres: [Genre!]! " Does this playable have VOD video references? This is false while it is live or no Vod references exist yet. Live video references might still exist " hasVideoReferences: Boolean " Highlights are like bookmarks within the video which editors have selected" highlights: [Highlight!]! " Unique identifier. Today this is the Vision episode id " id: ID! " Image from Edith is used, see rules on contento startpage " image: Image! " Image to be exposed in external feeds " imageForFeeds: Image! @deprecated(reason : "Use imagesForFeeds instead") " Images from Edith, see rules on contento startpage " images: Images! " Images from Edith that will be used for external feeds. " imagesForFeeds: ImagesForFeeds! " Images from Edith that will be used for external tableau. " imagesForTableau: ImagesForTableau! " Contains config for turning on/off the chat in the video player as well as emoji configs " interactivityConfig: InteractivityConfig " Internal Information - Do not build integrations using this, it´s meant to be read by a human " internal: InternalInformation! " Languages for all episodes of all seasons. Uses three-letter iso format, and \"sgn\" for Sign language " languages: [String!]! " The duration of the latest episode in seconds " latestEpisodeDurationSeconds: Long " The latest PublicationDate of its underlying episodes " latestEpisodePublicationDate: Timestamp " Information for live broadcasts " live: Live " Defined in Vision. Format is suitable for a printed TV Guide " longDescription: String! " Contains all languages that are present as mainLanguage in any variant " mainLanguages: [Language!]! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services. " name: String! " Time when the next episode will be published, empty for Singles " nextEpisodeAvailable: Timestamp " Next episode in a formatted format according to the styleguide, empty for Singles " nextEpisodeAvailableFormatted: String " Indicates if this content should NOT be indexed by search engines " noIndex: Boolean! " Number of active episodes " numberOfActiveEpisodes: Int! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The original title for the playables parent content " originalProgramTitle: String! " Pointer to self as a Content instance, can be used for accessing parent.legacySlug in a type-agnostic way for example " parent: Content! parentNode: Node " Popularity for this item from popapp " popularity: Int! " Portrait image exposed to external feeds" portraitPosterForFeeds: Image @deprecated(reason : "Use imagesForFeeds instead") " Special image used for kids content to show a portrait poster image " portraitPosterImage: Image prioritizedSearchTags: [String!]! " Production year from Vision " productionYear: Int " Related content from Balthazar " related: [Content!]! " The video of this content should be watched as a linear channel " requiresLinearPlayback: Boolean " Rerun information, has this content been present on Play before? Calculated as 'has all episodes been broadcasted earlier' " rerun: Boolean! " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! " Will always be one with one episode " seasons: [Season!]! " All available seasons including upcoming seasons with episodes 5 days into the future. Used for external feeds " seasonsForFeeds: [Season!]! " Defined in Vision. Usually used as byline below the name " shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! " Defined in Edith or Vision. Tags are used to group or classify content " tags: [Tag!]! " Audience targeted for this Content " targetAudience: TargetAudience! " Internal title info " titleInternalInformation: TitleInternalInformation " Type of title/program, will be Single " titleType: String! " URL field containing various URL:s, for example SVT Play " urls: Urls! " Start of rights " validFrom: Timestamp " Start of rights in a formatted format according to the styleguide " validFromFormatted: String " End of rights " validTo: Timestamp " End of rights in a formatted format according to the styleguide " validToFormatted: String " Variants of this content like accessibility or spoken language " variants: [Variant!]! """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! " List of playable videos " videos: [Video!]! """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. If missing, do not show skip to next button. """ whenToDisplaySkipToNext: Int } """ UX for displaying next episode in skip-to-next view based on episode in current play queue position. If missing, do not display. """ type SkipToNext { """ Button label determined by`Content` in current play queue position, e.g. episodic content gets the label 'Spela eftertexter' while label for live episode gets 'Se vidare'. """ keepPlayingEpisodeLabel: String! """ Button label determined by `Content` in current play queue position, e.g. episodic content gets the label 'Spela nästa avsnitt' while live content gets 'Spela'. """ playNextEpisodeLabel: String! } type SmartStart { badge: Badge " Content Warning for Content. Content Warning for Playable is on SmartStart.item.contentWarning " contentWarning: ContentWarning id: ID! item: Playable! label: String! " Progress in percentage between 0 - 100 " progressFraction: Int progressSeconds: Int screenreaderLabel: String! videoSvtId: String! } type StartForSvtPlay { analytics: Analytics! analyticsIdentifiers: AnalyticsIdentifiers! """ List of modules for the startpage, could be of types superhero, hero, selection or favorites. If a you choose to support the hero module by having that field in your query, you will get the hero if a superhero is not present. If you choose NOT to support the hero (TV platforms) you just skip that field and the display window will be present as a selection instead. The Call to Action modules are inserted into the module list and only one are present at each time. Each CTA module has separate conditions for it to appear. The presidence rules for CTA modules are as follows: 1. survey 2. loginPromotion 3. slurpPromotion 4. pushNotificationPermission """ modules(cursorPagination: CursorPagination, pagination: Pagination): Modules! name: String! selections(exclude: [StartSelectionId], excludeById: [String!], include: [StartSelectionId], includeById: [String!], pagination: Pagination): [Selection!]! selectionsPaginated(cursorPagination: CursorPagination, exclude: [StartSelectionId], excludeById: [String!], include: [StartSelectionId], includeById: [String!], pagination: Pagination): SelectionsPaginated! } type StringAnalyticsValue { key: String! stringValue: String! } type StructuredTextElement { " Action for links. For example for 'link' it could be login or editConsent " action: String " Can be 'text' for regular text with no styling, 'highlight' for highlighted text and 'link' for links " type: String! " text content " value: String! } type Superhero { analytics: Analytics! badge: Badge blockedForChildren: Boolean! " The wide and portrait images without keyart to be used for the superhero " cleanImages: CleanImages! " Main heading (rubrik) to be used when displaying this item in a list. Context-sensitive, depending on in which selection this teaser is shown. " heading: String! " Same as module id " id: String! logotype: Logotype! " The watch progress if the teaser is for a playable item that has watch progress " progressFraction: Int " The watch progress in seconds if the teaser is for a playable item that has watch progress " progressSeconds: Int " The list of display window teasers to be associated with this superhero. If omitted, the display window will be shown as a selection." selection: Selection! " Sub heading (underrubrik) to be used when displaying this item in a list. Context-sensitive, depending on in which selection this teaser is shown. " subheading: String! svtId: String! " Parent title id or same as svtId for this item if the teaser is a title" titleSvtId: String! " Parent title URL or the same as URL if this item is a title" titleUrls: Urls! " URL of the video to play for this hero " urls: Urls! " Id of the video to play for this hero " videoSvtId: String! } type SurfaceColors { background: Color! emphasis: Color! primary: Color! secondary: Color! } type Survey { customAttributes: [SurveyCustomAttribute!]! heading: String! id: String! image: Image! qrCodeImage: Image! subHeading: String! surveyUrl: String! } """ These values are fetched from surveys backend (Abisko), and can be used for placement or other platform specific modification like only visible from version x.x.x """ type SurveyCustomAttribute { key: String! value: String! } type SwipeClip { associatedContent: Content associatedListable: Listable clip: Clip! description: String emojiPack: EmojiPack! name: String! } type SwipePlayerStartPage { categories: [SwipePlaylistCategory!]! } type SwipePlaylist { clips: [SwipeClip!]! endSwipePlaylistBehavior: EndSwipePlaylistBehavior! id: String! name: String! published: Boolean! updated: Long } type SwipePlaylistCategory { id: String! name: String! playlists: [SwipePlaylist!]! } type Tag { id: ID! " The name of the tag, e.g. \"Barn\" " name: String! " The slug of the tag, e.g. \"samhalle-och-fakta\" " slug: String! } type Teaser { " Which accessibility icons/flags/info that should be marked for this teaser " accessibilityFlags: [AccessibilityFlag!]! " Either wide or Portrait depending on the parent selection's listPresentation " adaptiveImage: Image! analytics: Analytics! " Identifiers to send for tracking including indexes " analyticsIdentifiers: TeaserAnalyticsIdentifier! @deprecated(reason : "Use analyticsIdentifiersMap instead") " The badge (overlay/label) for a teaser, for example Live broadcast, Öppet Arkiv, Upcoming, Last chance " badge: Badge " Ingångsord " byline: String! " Which context menu, if any, to show " contextMenu: String " Custom short description that can be placed on a small area e.g an Image " description: String! " Custom short description suitable for mobile apps where space is limited " descriptionForMobile: String! " Content length in a formatted format according to the styleguide, null if tvseries or tvshows " durationFormatted: String " Main heading (rubrik) to be used when displaying this item in a list. Context-sensitive, depending on in which selection this teaser is shown. " heading: String! "The unique id of a teaser" id: String! " The selected wide image for this teaser " image: Image! " All images including keyart " images: Images! " true if the item or the associated title is marked as a favorite " isFavorite: Boolean! " The item we tease for " item: Listable! liveNow: Boolean! " The name of the item when shown in this list. May differ from the actual name of the item. " name: String! " If it should play directly when clicked " playOnClick: Boolean! " Presentation hint, e.g. \"upcoming\", \"upcoming live " presentationHint: String " The watch progress if the teaser is for a playable item that has watch progress " progressFraction: Int " The watch progress in seconds if the teaser is for a playable item that has watch progress " progressSeconds: Int progressType: ProgressType " If this is item should be shown as selected, for example in a play queue " selected: Boolean! " Sub heading (underrubrik) to be used when displaying this item in a list. Context-sensitive, depending on in which selection this teaser is shown. " subHeading: String! " If this teaser should have an overlay text shown over the image. Used for upcoming teasers on detail pages. " upcomingOverlay: UpcomingOverlay } type TeaserAnalyticsIdentifier { " Index of the teaser in its Selection context " itemIndex: Int! " Index of the teaser in relation to its list source, i.e. fiona. Hero will be included here for example. " listItemIndex: Int! svtId: String! teaserId: String! teaserType: String! } type TermsElement { children: [TermsElementChild!] content: String type: TermsElementType! } type TermsElementChild { content: String! type: TermsElementType! } type TermsMarkup { elements: [TermsElement!]! version: Int! } type TermsPage { analyticsIdentifiers: AnalyticsIdentifiers! errorMessage: String terms: TermsMarkup! termsMarkdown: String! text: String! title: String! } type TextPreference { kind: TextKindPreference! language: LanguagePreference! } type ThemeColors { button: ButtonColors! surface: SurfaceColors! } type TitleInternalInformation { programIds: [Int] "Active or upcoming publication period. Aggregation from all episodes " publicationPeriod: PublicationPeriod recommendability: Recommendability! state: TitleState! svtExclusiveOriginal: Boolean! " Can be 'Normal', 'Always' or 'Hidden' " visibility: String! } type TitleTeaser { analytics: Analytics! heading: String! id: ID! image: Image! titleId: String! urls: Urls! } type Trailer implements ExtraMaterial & Listable & Node & Playable & Video { " List of available accessibility aides. " accessibilities: [Accessibility!]! " Accessibility data for this trailer " accessibility: Accessibility " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " The proportional relationship between the video's width and height " aspectRatio: String! """ A list of lists with associated content, for example seasons from parent, related from parent and clips from parent. """ associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! astridImage: AstridImage " Video format from Astrid " astridVideoFormat: AstridVideoFormat " If the clip is available in play " availableInPlay: Boolean " List of available video formats, corresponding to video-api. Missing for live content " availableVideoFormats: [VideoFormat!]! " Is this intended for children based on barn tags? " barn: Boolean! " The list of sources for this content (e.g. Astrid or Edith) " cms: [String!]! " Viewer warnings for this playable " contentWarning: ContentWarning " Video information from Direktcenter " direktcenterVideo: DirektcenterVideo " Content length in seconds " duration: Int! " Content length in a formatted format according to the styleguide " durationFormatted: String! " Content length in ISO format (hh:mm:ss) " durationISOFormatted: String! " When was the video last repackaged by videocore " encodedAt: Timestamp " If the clip is currently being encoded " encodingInProgress: Boolean " End Credit Start time in seconds " endCreditStart: Int """ The episode this playable belongs to. Examples: Variant will return the Episode or Single to which it belongs. Single and Episode it will return itself. Clip and Trailer will return itself because it has no episode playable. """ episode: Playable! " The first frame of the clip " firstFrame: String genres: [Genre!]! " Does this playable have VOD video references? This is false while it is live or no Vod references exist yet. Live video references might still exist " hasVideoReferences: Boolean " Highlights are like bookmarks within the video which editors have selected" highlights: [Highlight!]! id: ID! image: Image! " Images from Edith, including keyart, see rules on contento startpage " images: Images! " Contains config for turning on/off the chat in the video player as well as emoji configs " interactivityConfig: InteractivityConfig " Escenic videoKlipp article id " legacyId: ID! " Trailers can never be live, only needed for completeness " live: Live longDescription: String! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services. " name: String! newsDescription: String! " The name used by svt.se. " newsName: String! " Teaser image used by news & sports for current events in a news context, for example if Charlotte Kalla has won. Can contain spoilers " newsTeaserImage: Image! @deprecated(reason : "This was used when escenic was alive. Please use image or astridImage instead.") " Indicates if this content should NOT be indexed by search engines " noIndex: Boolean! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The original title for the playables parent content, always empty for extra material " originalProgramTitle: String! """ The main parent content (TvSeries/TvShow/Single) this clip belongs to ((if it has any relation). This is only left for legacy reasons. """ parent: Content parentNode: Node " All parents (TvSeries/TvShows/Singles) that this clips belongs to. " parents: [Content!]! " Popularity for this item from popapp " popularity: Int! prioritizedSearchTags: [String!]! " Production year from Vision " productionYear: Int " The video of this content should be watched as a linear channel " requiresLinearPlayback: Boolean restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " The source id for a clip. Usually the file name for the clip. Also called DKS code by some. " sourceId: String! " The type of subtitle if any. Can be 'selectable', 'burnedIn' or 'none' " subtitleType: String! " New unique identifier " svtId: String! tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! " Start of rights " validFrom: Timestamp " Start of rights in a formatted format according to the styleguide " validFromFormatted: String " End of rights " validTo: Timestamp " End of rights in a formatted format according to the styleguide " validToFormatted: String """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! " List of playable videos " videos: [Video!]! """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. If missing, do not show skip to next button. """ whenToDisplaySkipToNext: Int } """ A TV Series is episodic content, intended to be watched in a specific order. It usually consists of a number of seasons, each with a number of connected **tv series episodes** in them """ type TvSeries implements Content & Listable & Node { " List of accessibility aides. Each aid is present if at least one of the episodes has it " accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? This flag can be replaced by field targetAudience, which gives one of following values: \"Kids\", \"Adults\", \"KidsAndAdults\". " barn: Boolean! " Popularity for this item from barnplay-popapp, for use in the SVT barn service " barnPopularity: Int! " TrendingMetric for this item from barnplay-popapp, for use in the SVT barn service " barnTrending: Float! " Special image used for kids content to show the main character of the show " characterImage: Image " Viewer warning for this content, calculated from its episodes " contentWarning: ContentWarning " Producing country or countries in ISO format" countriesOfOrigin: [String!]! " Contains all countries that are listed as producing country " countriesOfOriginWithNames: [Country!]! " Are the seasons composed from editorial sections? " customSections: Boolean! " Deep links for different services, e.g. svt play and barn play " deepLinks: DeepLinks! " Episodes as a flat list. Use allEpisodesIncludingUpcoming for all of them " episodes: [Playable!]! " Episodes as a flat list including some upcoming episodes used by searchIndexer " episodesForSearchIndexer: [Playable!]! @deprecated(reason : "This is only used by searchIndexer and is therefor hidden in explorer") " All episodes, including upcoming ones, as a flat list " episodesIncludingUpcoming: [Episode!]! " Extra material like clips or trailers for the entire series " extraMaterial: [ExtraMaterial!]! " Categorization by cluster tags (\"video@...\" or \"editorialvideo@...\") " genres: [Genre!]! " Unique identifier. This will be the same value as svtId " id: ID! " Image from Edith is used, see rules on contento startpage " image: Image! " Image for external feeds" imageForFeeds: Image! @deprecated(reason : "Use imagesForFeeds instead") " Images from Edith, see rules on contento startpage " images: Images! " Images from Edith that will be used for external feeds. " imagesForFeeds: ImagesForFeeds! " Images from Edith that will be used for external tableau. " imagesForTableau: ImagesForTableau! " Languages for all episodes of all seasons. Uses three-letter iso format, and \"sgn\" for Sign language " languages: [String!]! " The duration of the latest episode in seconds " latestEpisodeDurationSeconds: Long " The latest PublicationDate of its underlying episodes " latestEpisodePublicationDate: Timestamp " Defined in Vision. Format is suitable for a printed TV Guide " longDescription: String! " Contains all languages that are present as mainLanguage in any episode variant " mainLanguages: [Language!]! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services " name: String! " Time when the next episode will be published " nextEpisodeAvailable: Timestamp " Next episode in a formatted format according to the styleguide " nextEpisodeAvailableFormatted: String " Number of active episodes " numberOfActiveEpisodes: Int! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! "Parent to which this belongs. Content will return itself." parent: Content parentNode: Node " Popularity for this item from popapp " popularity: Int! " Image for external feeds" portraitPosterForFeeds: Image @deprecated(reason : "Use imagesForFeeds instead") " Special image used for kids content to show a portrait poster image " portraitPosterImage: Image prioritizedSearchTags: [String!]! " Related content from Balthazar " related: [Content!]! " Rerun information, has this content been present on Play before? Calculated as 'has all episodes been broadcasted earlier' " rerun: Boolean! " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! " All available seasons " seasons: [Season!]! " All available seasons including upcoming seasons with episodes 5 days into the future. Used for external feeds " seasonsForFeeds: [Season!]! " Defined in Vision. Usually used as byline below the name " shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! " Defined in Edith or Vision. Tags are used to group or classify content " tags: [Tag!]! " Audience targeted for this Content " targetAudience: TargetAudience! " Internal title info " titleInternalInformation: TitleInternalInformation " Type of title/program, will be TvSeries or KidsTvSeries " titleType: String! " URL field containing various URL:s, for example SVT Play " urls: Urls! """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! } """ A TV Show is split up by its production periods, each with a number of **tv show episodes** in them, where the last broadcasted episode is usually the one the viewer wants to watch """ type TvShow implements Content & Listable & Node { " List of accessibility aides. Each aid is present if at least one of the episodes has it " accessibilities: [Accessibility!]! " Client hint for reporting to helix " analyticsIdentifiers: AnalyticsIdentifiers! " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " Is this intended for children based on barn tags? This flag can be replaced by field targetAudience, which gives one of following values: \"Kids\", \"Adults\", \"KidsAndAdults\". " barn: Boolean! " Popularity for this item from barnplay-popapp, for use in the SVT barn service " barnPopularity: Int! " TrendingMetric for this item from barnplay-popapp, for use in the SVT barn service " barnTrending: Float! " Special image used for kids content to show the main character of the show " characterImage: Image " Viewer warnings for this TV show " contentWarning: ContentWarning " Producing country or countries ISO code" countriesOfOrigin: [String!]! " Contains all countries that are listed as producing country " countriesOfOriginWithNames: [Country!]! " Are the production periods composed from editorial tv show sections? " customSections: Boolean! " Deep links for different services, e.g. svt play and barn play " deepLinks: DeepLinks! " Episodes as a flat list. Use allEpisodesIncludingUpcoming for all of them" episodes: [Playable!]! " Episodes as a flat list including some upcoming episodes used by searchIndexer " episodesForSearchIndexer: [Playable!]! @deprecated(reason : "This is only used by searchIndexer and is therefor hidden in explorer") " All episodes, including upcoming ones, as a flat list " episodesIncludingUpcoming: [Episode!]! " Extra material like clips or trailers for the entire tv show " extraMaterial: [ExtraMaterial!]! " Categorization by cluster tags (\"video@...\" or \"editorialvideo@...\") " genres: [Genre!]! " Unique identifier. This will be the same value as svtId " id: ID! " Image from Edith is used, see rules on contento startpage " image: Image! " Image for external feeds" imageForFeeds: Image! @deprecated(reason : "Use imagesForFeeds instead") " Images from Edith, see rules on contento startpage " images: Images! " Images from Edith that will be used for external feeds. " imagesForFeeds: ImagesForFeeds! " Images from Edith that will be used for external tableau. " imagesForTableau: ImagesForTableau! " Languages for all episodes of all seasons. Uses three-letter iso format, and \"sgn\" for Sign language " languages: [String!]! " The duration of the latest episode in seconds " latestEpisodeDurationSeconds: Long " The latest PublicationDate of its underlying episodes " latestEpisodePublicationDate: Timestamp " Defined in Vision. Format is suitable for a printed TV Guide " longDescription: String! " Contains all languages that are present as mainLanguage in any episode variant " mainLanguages: [Language!]! " Editorial messages directed to the viewer " messages: Messages " The name of the item. Follows all the presentation rules for our services. " name: String! " Time when the next episode will be published " nextEpisodeAvailable: Timestamp " Next episode in a formatted format according to the styleguide " nextEpisodeAvailableFormatted: String " Number of active episodes " numberOfActiveEpisodes: Int! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! "Parent to which this belongs. Content will return itself." parent: Content parentNode: Node " Popularity for this item from popapp " popularity: Int! " Image for external feeds" portraitPosterForFeeds: Image @deprecated(reason : "Use imagesForFeeds instead") " Special image used for kids content to show a portrait poster image " portraitPosterImage: Image prioritizedSearchTags: [String!]! " All available production periods grouped by production year " productionPeriods: [ProductionPeriod!]! " Related content from Balthazar " related: [Content!]! " Rerun information, has this content been present on Play before? Calculated as 'has all episodes been broadcasted earlier' " rerun: Boolean! " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! " SearchTags also describing this content (searchTags) " searchTags: [String!]! " The seasons connected to this title. Same as production periods " seasons: [Season!]! " All available seasons including upcoming seasons with episodes 5 days into the future. Used for external feeds " seasonsForFeeds: [Season!]! " Defined in Vision. Usually used as byline below the name " shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " New unique identifier " svtId: String! " Defined in Edith or Vision. Tags are used to group or classify content " tags: [Tag!]! " Audience targeted for this Content " targetAudience: TargetAudience! " Internal title info " titleInternalInformation: TitleInternalInformation " Type of title/program, will be TvShow or CurrentAffairs " titleType: String! " URL field containing various URL:s, for example SVT Play " urls: Urls! """ Default playable video id for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! } type UnplayableReason { " Text to display in SVT Play, for example `Inga avsnitt finns tillgängliga just nu. Senast tillgänglig xxx` " text: String! " The reason type why this is unplayable, can be OnVpnProxy, Expired, UpcomingVOD or UpcomingLive " type: String! } type UpcomingOverlay { heading: String! subheading: String! } type UpdateDisplayNameResponse { errorMessage: String profileState: ProfileState! } type UpdateLocalNewsRegionResponse { errorMessage: String result: LocalNewsRegion success: Boolean! } type UpdateNewsLetterConsentResponse { profileState: ProfileState! result: Boolean! } type UpdatePreferencesResponse { result: Boolean! } type UpdateUserNameResponse { errorMessage: String profileState: ProfileState! } type Urls { svtplay: String! } type UserSettings { "Users consents about communication" communicationsConsent: CommunicationsConsent! "Region options for local news region dropdown menu" localNewsRegions: [LocalNewsRegion!] preferredPlayback: PreferredPlayback! } "Variants of same content like accessibility or spoken language" type Variant implements Listable & Node & Playable & Video { " List of available accessibility aides. " accessibilities: [Accessibility!]! " Accessibility data for this variant " accessibility: Accessibility " Not used for variant, use field on parent episode " analyticsIdentifiers: AnalyticsIdentifiers! " The proportional relationship between the video's width and height " aspectRatio: String " A list of lists with associated content, for example seasons, related and clips " associatedContent( "Add following selections on top of the default ones" addExtras: [ExtraAssociatedContentId!], "Exclude following selections from default ones" exclude: [AssociatedContentId!], "Explicitly include following selections" include: [AssociatedContentId!] ): [Selection!]! " List of available video formats, corresponding to video-api. Missing for live content " availableVideoFormats: [VideoFormat!]! " Is this intended for children based on barn tags? " barn: Boolean! " Viewer warnings for this playable " contentWarning: ContentWarning " Content length in seconds " duration: Int! " Content length in a formatted format according to the styleguide " durationFormatted: String! " Content length in ISO format (hh:mm:ss) " durationISOFormatted: String! " End Credit Start time in seconds " endCreditStart: Int " The episode this variant belongs to " episode: Playable! " Categorization by cluster tags (\"video@...\" or \"editorialvideo@...\") " genres: [Genre!]! " Does this playable have VOD video references? This is false while it is live or no Vod references exist yet. Live video references might still exist " hasVideoReferences: Boolean " Highlights are like bookmarks within the video which editors have selected " highlights: [Highlight!]! """ Id for variant. Note: Variant is incidentally related to the TvSeries/TvShow id. The TvSeries/TvShow id can not inferred be from any contained variant id """ id: ID! " Image from Edith is used, see rules on contento startpage " image: Image! " Images from Edith, see rules on contento startpage " images: Images! " Contains config for turning on/off the chat in the video player as well as emoji configs " interactivityConfig: InteractivityConfig " Spoken languages in this variant " languages: [String!] " Escenic id of this variant " legacyId: Int! " Information for live broadcasts " live: Live " Long episode synopsis, taken from Vision. " longDescription: String! " Main spoken language in this variant " mainLanguage: Language! " Editorial messages directed to the viewer " messages: Messages " Name for the variant. EpisodeName with suffix for language versions and accessibility " name: String! " Name without any episode or season numbers. Unedited from source " nameRaw: String! " Indicates if this content should NOT be indexed by search engines " noIndex: Boolean! " Is this Content from öppetArkiv? " oppetArkiv: Boolean! " The original title for the playables parent content " originalProgramTitle: String! " The parent TvSeries/TvShow as a Content instance. Use this if you do not need TvSeries specific data. " parent: Content parentNode: Node " Popularity for this item from popapp " popularity: Int! " Production year from Vision " productionYear: Int " The video of this content should be watched as a linear channel " requiresLinearPlayback: Boolean " Restrictions for different viewer groups (location, age) " restrictions: Restrictions! " Intended for short episode synopsis. Taken from vision, where it currently is abused to write season name " shortDescription: String! " Slug fragment that can be used to construct a URL to this item " slug: String! " Source id for a Variant. This is commonly the filename for a clip and is unique over all clips. " sourceId: String! " New unique identifier " svtId: String! " Defined in Edith and/or Vision. Tags are used to group or classify content " tags: [Tag!]! " URL field containing various URL:s, for example SVT Play " urls: Urls! " Start of rights " validFrom: Timestamp " Start of rights in a formatted format according to the styleguide " validFromFormatted: String " End of rights " validTo: Timestamp " End of rights in a formatted format according to the styleguide " validToFormatted: String """ First playable variant for this item. Can be used to match a variant to an episode item on a detail page, for example to render progress from local storage or match selected item """ videoSvtId: String! " List of playable videos " videos: [Video!]! """ When in seconds clients should show skip to next episode button. Based on endCreditStart or logic based on length of program. If missing, do not show skip to next button. """ whenToDisplaySkipToNext: Int } "A video format as video-api defines it" type VideoFormat { id: String! } type VideoPreference { kind: VideoKindPreference! } type WhatsOnTv { channel: Channel! running: BroadcastItem variants: [Variant!]! } type upcomingPage { description: String! selections: [Selection!]! } enum Accessibility { AudioDescribed Default SignInterpreted } enum AssociatedContentId { accessibility clips productionPeriod related season upcoming upcomingLive } enum AudioKindPreference { AudioDescribed EnhancedDialogue Original SpokenCaptions } enum BroadcastAudio { surround51 unknown } enum BroadcastState { ended running upcoming } enum ContentStatus { active expired upcoming } "Filter by type. Used for editorial search." enum EditorialSearchFilterType { Content ExtraMaterial Playable } enum ExtraAssociatedContentId { accessibility upcoming } enum GenreSelectionId { all clips fiona lastchance latest personalRecommendations popular recommended signinterpretedsplit } enum GenreType { Editorial EmiBased Main } "Platform that this message is valid for, can be ALL for all platforms" enum ImportantMessagePlatform { ALL ANDROID_TV APPLE_TV APPLE_TV_OLD MOBILE_ANDROID MOBILE_IOS SMART_TV WEB } enum ImportantMessageType { "Tekniskt Meddelande till Allmänheten (used for major technical issues regarding our services or clarifying rights issues)" TMA "Viktigt Meddelande till Allmänheten (used in case of accidents, serious incidents and disruptions in essential national services)" VMA } enum InternalSearchHitReason { Filter Fuzzy Id } enum InternalSearchMatchMode { Self SelfAndParent } " Filter by type (granular). Used for searchInternal" enum InternalSearchMatchType { Clip Episode KidsTvShow Single Trailer TvSeries TvShow } enum InternalSearchPaginationType { SonicWorkaround TitleAndEpisode } enum InternalSearchSort { latestDescending validFromAscending validFromDescending } enum KidsOrAdult { Adult Kids KidsAndAdult } """ Sv = Swedish Fi = Finnish Ji = Yiddish Yi = Yiddish since 1989 Fit = Meänkieli Rom = Romani Smi = Sami En = English """ enum LanguagePreference { En Fi Fit Ji None Rom Smi Sv Yi } """ Different presentation styles for a list/selection. Make sure that you decode unknown values as 'Default' since we want to be able to add values to this enum in the future. """ enum ListPresentation { " Calendar view, tighter calendar list for upcoming " Calendar " Campaign mode " Campaign " A selection that should be presented in the default way " Default " Content to discover related to other content " Discovery " Should be displayed as a grid " Grid " Should be displayed as a \"Keep watching\" list with for instance a progressbar " KeepWatching " Playable items. Used for \"snabbtittat\" lists " Playlist " Should be displayed with portrait poster images " PortraitPosters " Should be displayed as a list of categories " RelatedCategories " Present this as a season selection under a title" Season " Promoted content. This means that it is presented in a more distinctive manner " Showcase " Present this as a selection containing upcoming " Upcoming } enum LogotypeAlignment { left right } enum Platform { android androidtv appletv ios smarttv web } "Different presentation styles for a selection." enum Presentation { " A selection that should be presented in the default way " Default " Content to discover related to other content " Discovery " Should be displayed as a grid " Grid " Should be displayed as a \"Keep watching\" list with for instance a progressbar " KeepWatching " Playable items. Used for \"snabbtittat\" lists " Playlist " Should be displayed with portrait poster images " PortraitPosters " Should be displayed as a list of categories " RelatedCategories " Present this as a season selection under a title" Season " Promoted content. This means that it is presented in a more distinctive manner " Showcase " Present this as a selection containing upcoming " Upcoming } enum PresentationHint { breakingNews default superheroLogoLeft superheroLogoRight } enum ProgressType { LiveEdge Watched } enum RecommendabilityType { Default Never Period } enum ScheduleHeaderType { day live } enum SearchPageHeadingType { " Information to display when presenting hits " Default " Information to display before searching " PreSearch " Information to display when there are no hits " ZeroHits } "Type of item the selection contains" enum SelectionType { " general content " Default " content to discover related to other content " Discovery " content that should be displayed as a \"Continue watching\" list with for example an progressbar " KeepWatching """ A list with content that a client decides what it should be. Can for example be recommendations or history. Used by SVT barn for now. """ Personal " playable items " Playlist " episodes in a season or production period " Season " promoted content " Showcase " upcoming content " Upcoming } enum StartSelectionId { dokumentartips dokumentartips_start @deprecated(reason : "This will be removed when mobile supports includeById") dramatips dramatips_start @deprecated(reason : "This will be removed when mobile supports includeById") fiona humortips humortips_start @deprecated(reason : "This will be removed when mobile supports includeById") lastchance lastchance_start @deprecated(reason : "This will be removed when mobile supports includeById") latest latest_start @deprecated(reason : "This will be removed when mobile supports includeById") live live_start @deprecated(reason : "This will be removed when mobile supports includeById") popular popular_start @deprecated(reason : "This will be removed when mobile supports includeById") recommended recommended_start @deprecated(reason : "This will be removed when mobile supports includeById") shortformat @deprecated(reason : "Snabbtittat is no more as a concept") shortformat_start @deprecated(reason : "This will be removed when mobile supports includeById") } "Adults, Kids, KidsAndAdults" enum TargetAudience { Adults Kids KidsAndAdults } enum TermsElementType { h1 h2 h3 li ol p ul } enum TextKindPreference { ClosedCaptions OpenCaptions } enum TitleState { Published Unpublished } enum VideoKindPreference { Original SignInterpreted } enum VideoType { Episode Movie } enum WatchNextType { Continue New Next_episode Watchlist } "A JSON scalar" scalar JSON "A 64-bit signed integer" scalar Long "A ISO8601 compliant date time" scalar Timestamp "An allocated variant when participating in an A/B test" input AbTestVariant { " Experiment id in a/bisko " experiment: String! " Project id in a/bisko " project: String! " Allocated variant (for now, variant slug in a/bisko) " variant: String! } input AudioPreferenceInput { kind: AudioKindPreference! language: LanguagePreference! } input CursorPagination { "Number of items to return after cursor" after: Int "Number of items to return before cursor" before: Int "ItemId to start from" cursor: String "Return all items before the cursor. Will also take into account the before and after parameter to return the correct amount of items if the cursor is on the edges of the list." fillBefore: Boolean } input Favorite { " Title (Content) id " id: String! } input Filter { "Do you want to include all öppet arkiv, not only promoted ones? If so, set this flag to true!" includeFullOppetArkiv: Boolean " If user is behind VPN " isProxied: Boolean "Removes items with blockedForChildren: true" kidsFilter: Boolean "Removes non-kids content (items with barn: false)" onlyKidsContent: Boolean "Removes items with onlyAvailableInSweden: false" userIsAbroad: Boolean } " HLS Settings for playback " input HLSPlaybackSettingsInput { " Information to identify the audio track " audio: HLSTrackInput! " Information to identify the text track " text: HLSTrackInput! " Information to identify the video track " video: HLSTrackInput! } " Information to identify a HLS track " input HLSTrackInput { " List of HLS characteristics " characteristics: [String!]! " Language of the track if relevant " language: String } input History { " Listable id " id: String! " DateTime when last watched in epoch millis" lastEngagementTime: Long " Progress in percentage between 0 - 100 " progressFraction: Int " Progress in seconds " progressSeconds: Int } input HistoryWithTime { " Listable id " id: String! " Progress in seconds " progressSeconds: Int! " DateTime when watched " time: Timestamp! } input Pagination { """ Ids already seen, provided in the order they appeared. Used to continue with the first N items from the last seen position. """ after: [String!] """ Return the first N items after the provided 'after' Ids. Use either limit/offset or first/after. """ first: Int """ Maximum number of items to return. Use either limit/offset or first/after. """ limit: Int """ Number of items to skip. Use either limit/offset or first/after. Duplicates are possible, but not likely. Ignore them if possible. """ offset: Int } "Manual video player preferences." input PreferredPlaybackInput { audio: AudioPreferenceInput text: TextPreferenceInput video: VideoPreferenceInput } input SchedulePageFilterInput { calendarOption: String category: String daysIntoTheFuture: Long } input SearchClickItem { " SearchHit item id " id: String! } input SearchHistoryItem { " Listable id " id: String! } input TextPreferenceInput { kind: TextKindPreference! language: LanguagePreference! } input VideoPreferenceInput { kind: VideoKindPreference! }