action britbox_get_app_config { label: "getAppConfig" description: "Get the global configuration for an application. Should be called during app statup.\n\nThis includes things like device and playback rules, classifications,\nsitemap and subscriptions.\n\nYou have the option to select specific configuration objects using the 'include'\nparameter, or if unspecified, getting all configuration.\n" provider: britbox method: GET path: "/config" encoding: json input: { type: "object" properties: { include: { type: "array" items: { type: "string" enum: ["classification", "playback", "sitemap", "navigation", "subscription", "general", "display", "i18n", "linear"] } } system: { type: "string" } } additionalProperties: false } output: { type: "object" properties: { classification: { type: "object" description: "The map of classification ratings." } display: { type: "object" required: ["themes"] properties: { themes: { type: "array" description: "An array of globally configured themes." items: { type: "object" required: ["colors", "type"] properties: { colors: { type: "array" description: "The list of colors defined for the theme." items: { type: "object" required: ["name", "value"] properties: { name: { type: "string" description: "The name of the theme color." } opacity: { type: "number" format: "float" description: "The opacity of the theme color from 0 to 1.\n\nWhen omitted, no opacity level is to be applied to the color, or in other words we\nassume the color has an opacity of 1\n" } value: { type: "string" description: "The hex value of the theme color." } } additionalProperties: false } } type: { type: "string" description: "The type of theme." enum: ["Background", "Text", "Custom"] } } additionalProperties: false } } } additionalProperties: false } general: { type: "object" properties: { currencyCode: { type: "string" description: "The currency code to target." } customFields: { type: "object" description: "A map of custom configuration fields." } defaultTimeZone: { type: "string" description: "The default time zone of the site. e.g. \"Etc/GMT\"" } facebookAppId: { type: "string" description: "The Facebook application id associated with an environment." } gaToken: { type: "string" description: "A Google Analytics token to track applicaton user events." } itemImageTypes: { type: "object" description: "A map of default item image types where the key is the item types." } mandatorySignIn: { type: "boolean" description: "Whether to require sign in for customers to access content." } maxUserRating: { type: "integer" format: "int32" description: "The maximum value allowed for user ratings." } stripeKey: { type: "string" description: "The public Stripe key to use for payment transactions." } websiteUrl: { type: "string" format: "uri" description: "The url of the primary website." } } additionalProperties: false } i18n: { type: "object" required: ["languages"] properties: { languages: { type: "array" description: "An array of available languages." items: { type: "object" required: ["code", "label", "title"] properties: { code: { type: "string" description: "The ISO language code of the language e.g. \"en-US\".\nSee https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\n" } label: { type: "string" description: "Display label for the language." } title: { type: "string" description: "Display title for the language." } } additionalProperties: false } } } additionalProperties: false } linear: { type: "object" properties: { scheduleCacheMaxAgeMinutes: { type: "integer" format: "int32" description: "The maximum minutes of schedule cache time." } viewingWindowDaysAfter: { type: "integer" format: "int32" description: "Number of available upcoming day schedules." } viewingWindowDaysBefore: { type: "integer" format: "int32" description: "Number of available day schedules in the past." } } additionalProperties: false } navigation: { type: "object" required: ["header"] properties: { account: { type: "object" required: ["depth"] properties: { children: { type: "array" description: "Child nav entries." items: { type: "object" additionalProperties: true } } content: { type: "object" properties: { imageType: { type: "string" description: "The image type to target when rendering items of the list.\n\ne.g wallpaper, poster, hero3x1, logo.\n" } list: { type: "object" description: "A pageable list of items." required: ["id", "items", "paging", "path", "size"] properties: { customFields: { type: "object" description: "A map of custom fields defined by a curator for a list." } description: { type: "string" description: "A full description of this list." } id: { type: "string" description: "The id of this list" } images: { type: "object" } itemTypes: { type: "array" description: "The types of items in the list" items: { type: "string" enum: ["movie", "show", "season", "episode", "program", "link", "trailer", "channel", "customAsset"] } } items: { type: "array" description: "A list of items" items: { type: "object" required: ["id", "type", "path", "title"] properties: { advisoryText: { type: "string" description: "Advisory text about this item, related to the classification" } availableEpisodeCount: { type: "integer" format: "int32" description: "The number of available episodes in the season, if the item is a season." } availableSeasonCount: { type: "integer" format: "int32" description: "The number of available seasons in the show, if the item is a show." } averageUserRating: { type: "number" format: "int32" description: "The average user rating.\nWhen based on user ratings from our system this will be out of 10.\n" } badge: { type: "string" description: "The badge this item has." } channelShortCode: { type: "string" description: "The channel short code, if the item is a channel." } classification: { type: "object" required: ["code", "name"] properties: { code: { type: "object" additionalProperties: true } name: { type: "object" additionalProperties: true } } } contextualTitle: { type: "string" description: "A contextually relative title to display after a parent title.\nMostly applicable to Season, Episode and Trailer.\n" } customFields: { type: "object" description: "A map of custom fields defined by a curator for an item." } customId: { type: "string" description: "A custom identifier for this item.\nFor example the id for this item under a different content system.\n" } duration: { type: "integer" format: "int32" description: "The duration of the media in seconds." } episodeCount: { type: "integer" format: "int32" description: "The number of episodes in the season, if the item is a season." } episodeName: { type: "string" description: "The full name of an episode." } episodeNumber: { type: "integer" format: "int32" description: "The number of an episode, if the item is an episode." } genres: { type: "array" description: "The array of genres this item belongs to." items: { type: "object" additionalProperties: true } } hasClosedCaptions: { type: "boolean" description: "Whether closed captioning is available." } id: { type: "string" description: "Unique identifier for an Item" } images: { type: "object" } offers: { type: "array" description: "The array of available offers for this item." items: { type: "object" additionalProperties: true } } path: { type: "string" description: "The path to the detail page of this item. Can be used to load the item detail page via the /page endpoint." } releaseYear: { type: "integer" format: "int32" description: "The year this item was released" } scopes: { type: "array" description: "The scopes for this item" items: { type: "object" additionalProperties: true } } seasonId: { type: "string" description: "The identifier of the season this item belongs to, if the item is an episode." } seasonNumber: { type: "integer" format: "int32" description: "The number of a season, if the item is a season." } shortDescription: { type: "string" description: "A truncated description of the item" } showId: { type: "string" description: "The identifier of the show this item belongs to, if the item is a season or episode." } showTitle: { type: "string" } subtype: { type: "string" description: "Subtype of the item. Mainly used to identify different types when `type`\nis `customAsset`\n" } tagline: { type: "string" description: "The tagline of the item" } themes: { type: "array" description: "Gets themes associated with the item" items: { type: "object" additionalProperties: true } } title: { type: "string" description: "The display title of the item." } type: { type: "string" description: "The type of item" enum: ["movie", "show", "season", "episode", "program", "link", "trailer", "channel", "customAsset"] } watchPath: { type: "string" description: "The path to watch this item, if the item is a watchable type, e.g. a `movie`, `program` and `episode`." } } } } listData: { type: "object" description: "Extra data to accompany ItemList content. The (single) key in the object is\nthe list name and the data changes depending on the list\n" properties: { ContinueWatching: { type: "object" description: "List data for ContinueWatching List" properties: { itemInclusions: { type: "object" description: "Object where keys are itemIds for the items in the list and values are objects\ncontaining additional items (either episode/season/show) that were requested\nin the \"include\" query option.\n\nFor example if you request the ContinueWatching list with \"season\" items in\nthe list, you can specify `include=episode` and then the specific next episode\nwill be returned in this object.\n" } } additionalProperties: false } } additionalProperties: false } paging: { type: "object" required: ["page", "total"] properties: { authorization: { type: "object" required: ["scope", "type"] properties: { scope: { type: "string" description: "The token scope required." enum: ["Catalog", "Commerce", "Settings"] } type: { type: "string" description: "The token type required to load the list." enum: ["UserAccount", "UserProfile"] } } } next: { type: "string" description: "Path to load next page of data, or null if not available" } options: { type: "object" properties: { completed: { type: "boolean" description: "Items filtered by whether they've been fully watched or not.\n\nOnly available on the `/account/profile/watched/list` endpoint currently.\n" } itemType: { type: "string" description: "Specific item type filter." enum: ["movie", "show", "season", "episode", "program", "link", "trailer", "channel", "customAsset"] } maxRating: { type: "string" description: "The maximum rating (inclusive) of items returned, e.g. 'AUOFLC-PG'." } order: { type: "string" description: "The applied sort order if any." enum: ["asc", "desc"] } orderBy: { type: "string" description: "The applied sort ordering property if any." enum: ["a-z", "release-year", "date-added"] } pageSize: { type: "integer" format: "int32" description: "The number of items to return in a list page." } } additionalProperties: false } page: { type: "integer" format: "int32" description: "The current page number.\n\nA value of 0 indicates that the fist page has not yet been loaded. This is\nuseful when wanting to return the paging metadata to indicate how to\nload in the first page.\n" } previous: { type: "string" description: "Path to load previous page of data, or null if not available." } size: { type: "integer" format: "int32" description: "The current page size.\n\nA value of -1 indicates that the size has not yet been determined. This may\narise when embedding secure list pagination info in a page which must be cached\nby a CDN. For example a Bookmarks list.\n" } total: { type: "integer" format: "int32" description: "The total number of pages available given the current page size.\n\nA value of -1 indicates that the total has not yet been determined. This may\narise when embedding secure list pagination info in a page which must be cached\nby a CDN. For example a Bookmarks list.\n" } } additionalProperties: false } parameter: { type: "string" description: "If this list is parameterized, then this contains the parameter of the list in the format `name:value`.\nFor example the Movies Genre list will take a parameter `genre` with a given value. e.g. `genre:action` or `genre:drama`." } path: { type: "string" description: "The path of this list" } shortDescription: { type: "string" description: "A short description of this list." } size: { type: "integer" format: "int32" description: "The total size of the list" } tagline: { type: "string" description: "The tagline of the item." } themes: { type: "array" items: { type: "object" additionalProperties: true } } title: { type: "string" description: "The title of this list" } } additionalProperties: false } title: { type: "string" description: "The title of the embedded navigation content." } } } customFields: { type: "object" description: "A map of custom fields defined by a curator for a nav entry." } depth: { type: "integer" format: "int32" description: "The depth of the NavEntry (top level is 0)" } featured: { type: "boolean" description: "True if this is a featured menu item.\n\nFeatured menu items may have a more prominent presentation than others in the navigation.\n" } icon: { type: "string" description: "The icon for this nav entry." } label: { type: "string" description: "The text label for this nav entry." } path: { type: "string" description: "The path this nav entry links to.\nMay be undefined if the nav entry is not clickable e.g. a nav heading.\nIf the value begins with `http` then it's an external url.\n" } } additionalProperties: false } copyright: { type: "string" description: "Copyright information." } customFields: { type: "object" description: "A map of custom fields defined by a curator for navigation." } footer: { type: "object" additionalProperties: true } header: { type: "array" description: "The header navigation." items: { type: "object" additionalProperties: true } } mobile: { type: "object" additionalProperties: true } } additionalProperties: false } playback: { type: "object" required: ["chainPlayCountdown", "chainPlaySqueezeback", "chainPlayTimeout", "heartbeatFrequency", "viewEventPoints"] properties: { chainPlayCountdown: { type: "integer" format: "int32" description: "The number of seconds before autoplay of next video.\n\nIf set to 0 there will be no autoplay.\n" } chainPlaySqueezeback: { type: "integer" format: "int32" description: "The number of seconds before the end of playback when the current video\nshould be minimized and user options are presented within the video player.\n\nIf set to 0 there will be no squeezeback.\n" } chainPlayTimeout: { type: "integer" format: "int32" description: "The number of minutes of user inactivity before autoplay is paused.\n\nIf set to 0 there will be no autoplay timeout.\n" } heartbeatFrequency: { type: "integer" format: "int32" description: "How often a heartbeat should be renewed during playback." } viewEventPoints: { type: "array" description: "An array of percentage points in which to fire off plabyack view events.\nFor example a value of 0.5 would indicate that an event should be\nfired when the user is half way through the video.\nOften known as quartiles when four equaly spread event points.\n" items: { type: "number" } } } additionalProperties: false } sitemap: { type: "array" items: { type: "object" required: ["id", "path", "title", "template", "isStatic", "isSystemPage"] properties: { id: { type: "string" description: "Unique identifier for the page." } isStatic: { type: "boolean" description: "True if this page is static and doesn't have any dynamic content to load.\n\nStatic pages don't need to go back to the page endpoint to load page content\ninstead the page summary loaded with the sitemap should be enough to determine\nthe page template type and render based on this.\n" } isSystemPage: { type: "boolean" description: "True if this page is a system page type.\n\n**DEPRECATED** This property doesn't have any real use in client applications\nanymore so shouldn't be used. It especially shouldn't be used to determine if\na page is static or not. Use the `isStatic` property instead.\n" } key: { type: "string" description: "Key used to lookup a known page." } path: { type: "string" description: "Unique path for the page." } template: { type: "string" description: "Identifier for of the page template to render this page." } title: { type: "string" description: "Title of the page." } } } } subscription: { type: "object" properties: { plans: { type: "array" description: "The available public plans a user can subscribe to." items: { type: "object" required: ["id", "title", "tagline", "type", "isFeatured", "isActive", "isPrivate", "revenueType", "subscriptionCode", "alias", "benefits", "billingPeriodType", "billingPeriodFrequency", "hasTrialPeriod", "trialPeriodDays", "termsAndConditions", "currency"] properties: { alias: { type: "string" description: "An alias for a plan." } benefits: { type: "array" description: "The list of benefits to display for a plan." items: { type: "string" } } billingPeriodFrequency: { type: "integer" format: "int32" description: "Given the `billingPeriodType` this is how frequently it will run. e.g. every 2 weeks." } billingPeriodType: { type: "string" description: "The type of billing period used." enum: ["day", "week", "month", "year", "none"] } currency: { type: "string" description: "The currency a plan is offered in." } customFields: { type: "object" description: "A map of custom fields defined by a curator for a plan." } hasTrialPeriod: { type: "boolean" description: "True if a plan has a trial period, false if not." } id: { type: "string" description: "The identifier of a plan." } isActive: { type: "boolean" description: "True if a plan is active, false if its retired." } isFeatured: { type: "boolean" description: "True if a plan should be highlighted as featured, false if not." } isPrivate: { type: "boolean" description: "True if a plan should not be presented in the primary plan options, false if not." } price: { type: "number" format: "float" description: "The price of a plan. If a free plan then undefined." } revenueType: { type: "string" description: "The revenue type a plan targets." enum: ["TVOD", "SVOD"] } subscriptionCode: { type: "string" description: "The subscription code a plan targets." } tagline: { type: "string" description: "The short tagline for a plan." } termsAndConditions: { type: "string" description: "The terms and conditions for a plan." } title: { type: "string" description: "The title of a plan." } trialPeriodDays: { type: "integer" format: "int32" description: "How many days a trial period runs for a plan. Only valid if `hasTrialPeriod` is true." } type: { type: "string" description: "The type of plan." enum: ["Free", "Subscription"] } } additionalProperties: false } } } additionalProperties: false } } additionalProperties: false } }