@tool extends TwitchData # CLASS GOT AUTOGENERATED DON'T CHANGE MANUALLY. CHANGES CAN BE OVERWRITTEN EASILY. ## ## #/components/schemas/Extension class_name TwitchExtension ## The name of the user or organization that owns the extension. @export var author_name: String: set(val): author_name = val track_data(&"author_name", val) ## A Boolean value that determines whether the extension has features that use Bits. Is **true** if the extension has features that use Bits. @export var bits_enabled: bool: set(val): bits_enabled = val track_data(&"bits_enabled", val) ## A Boolean value that determines whether a user can install the extension on their channel. Is **true** if a user can install the extension. ## ## Typically, this is set to **false** if the extension is currently in testing mode and requires users to be allowlisted (the allowlist is configured on Twitch’s [developer site](https://dev.twitch.tv/console/extensions) under the **Extensions** \-> **Extension** \-> **Version** \-> **Access**). @export var can_install: bool: set(val): can_install = val track_data(&"can_install", val) ## The location of where the extension’s configuration is stored. Possible values are: ## ## * hosted — The Extensions Configuration Service hosts the configuration. ## * custom — The Extension Backend Service (EBS) hosts the configuration. ## * none — The extension doesn't require configuration. @export var configuration_location: String: set(val): configuration_location = val track_data(&"configuration_location", val) ## A longer description of the extension. It appears on the details page. @export var description: String: set(val): description = val track_data(&"description", val) ## A URL to the extension’s Terms of Service. @export var eula_tos_url: String: set(val): eula_tos_url = val track_data(&"eula_tos_url", val) ## A Boolean value that determines whether the extension can communicate with the installed channel’s chat. Is **true** if the extension can communicate with the channel’s chat room. @export var has_chat_support: bool: set(val): has_chat_support = val track_data(&"has_chat_support", val) ## A URL to the default icon that’s displayed in the Extensions directory. @export var icon_url: String: set(val): icon_url = val track_data(&"icon_url", val) ## @export var icon_urls: TwitchExtensionIconUrls: set(val): icon_urls = val track_data(&"icon_urls", val) ## The extension’s ID. @export var id: String: set(val): id = val track_data(&"id", val) ## The extension’s name. @export var name: String: set(val): name = val track_data(&"name", val) ## A URL to the extension’s privacy policy. @export var privacy_policy_url: String: set(val): privacy_policy_url = val track_data(&"privacy_policy_url", val) ## A Boolean value that determines whether the extension wants to explicitly ask viewers to link their Twitch identity. @export var request_identity_link: bool: set(val): request_identity_link = val track_data(&"request_identity_link", val) ## A list of URLs to screenshots that are shown in the Extensions marketplace. @export var screenshot_urls: Array[String]: set(val): screenshot_urls = val track_data(&"screenshot_urls", val) ## The extension’s state. Possible values are: ## ## * Approved ## * AssetsUploaded ## * Deleted ## * Deprecated ## * InReview ## * InTest ## * PendingAction ## * Rejected ## * Released @export var state: String: set(val): state = val track_data(&"state", val) ## Indicates whether the extension can view the user’s subscription level on the channel that the extension is installed on. Possible values are: ## ## * none — The extension can't view the user’s subscription level. ## * optional — The extension can view the user’s subscription level. @export var subscriptions_support_level: String: set(val): subscriptions_support_level = val track_data(&"subscriptions_support_level", val) ## A short description of the extension that streamers see when hovering over the discovery splash screen in the Extensions manager. @export var summary: String: set(val): summary = val track_data(&"summary", val) ## The email address that users use to get support for the extension. @export var support_email: String: set(val): support_email = val track_data(&"support_email", val) ## The extension’s version number. @export var version: String: set(val): version = val track_data(&"version", val) ## A brief description displayed on the channel to explain how the extension works. @export var viewer_summary: String: set(val): viewer_summary = val track_data(&"viewer_summary", val) ## Describes all views-related information such as how the extension is displayed on mobile devices. @export var views: Views: set(val): views = val track_data(&"views", val) ## Allowlisted configuration URLs for displaying the extension (the allowlist is configured on Twitch’s [developer site](https://dev.twitch.tv/console/extensions) under the **Extensions** \-> **Extension** \-> **Version** \-> **Capabilities**). @export var allowlisted_config_urls: Array[String]: set(val): allowlisted_config_urls = val track_data(&"allowlisted_config_urls", val) ## Allowlisted panel URLs for displaying the extension (the allowlist is configured on Twitch’s [developer site](https://dev.twitch.tv/console/extensions) under the **Extensions** \-> **Extension** \-> **Version** \-> **Capabilities**). @export var allowlisted_panel_urls: Array[String]: set(val): allowlisted_panel_urls = val track_data(&"allowlisted_panel_urls", val) var response: BufferedHTTPClient.ResponseData ## Constructor with all required fields. static func create(_author_name: String, _bits_enabled: bool, _can_install: bool, _configuration_location: String, _description: String, _eula_tos_url: String, _has_chat_support: bool, _icon_url: String, _icon_urls: TwitchExtensionIconUrls, _id: String, _name: String, _privacy_policy_url: String, _request_identity_link: bool, _screenshot_urls: Array[String], _state: String, _subscriptions_support_level: String, _summary: String, _support_email: String, _version: String, _viewer_summary: String, _views: Views, _allowlisted_config_urls: Array[String], _allowlisted_panel_urls: Array[String]) -> TwitchExtension: var twitch_extension: TwitchExtension = TwitchExtension.new() twitch_extension.author_name = _author_name twitch_extension.bits_enabled = _bits_enabled twitch_extension.can_install = _can_install twitch_extension.configuration_location = _configuration_location twitch_extension.description = _description twitch_extension.eula_tos_url = _eula_tos_url twitch_extension.has_chat_support = _has_chat_support twitch_extension.icon_url = _icon_url twitch_extension.icon_urls = _icon_urls twitch_extension.id = _id twitch_extension.name = _name twitch_extension.privacy_policy_url = _privacy_policy_url twitch_extension.request_identity_link = _request_identity_link twitch_extension.screenshot_urls = _screenshot_urls twitch_extension.state = _state twitch_extension.subscriptions_support_level = _subscriptions_support_level twitch_extension.summary = _summary twitch_extension.support_email = _support_email twitch_extension.version = _version twitch_extension.viewer_summary = _viewer_summary twitch_extension.views = _views twitch_extension.allowlisted_config_urls = _allowlisted_config_urls twitch_extension.allowlisted_panel_urls = _allowlisted_panel_urls return twitch_extension static func from_json(d: Dictionary) -> TwitchExtension: var result: TwitchExtension = TwitchExtension.new() if d.get("author_name", null) != null: result.author_name = d["author_name"] if d.get("bits_enabled", null) != null: result.bits_enabled = d["bits_enabled"] if d.get("can_install", null) != null: result.can_install = d["can_install"] if d.get("configuration_location", null) != null: result.configuration_location = d["configuration_location"] if d.get("description", null) != null: result.description = d["description"] if d.get("eula_tos_url", null) != null: result.eula_tos_url = d["eula_tos_url"] if d.get("has_chat_support", null) != null: result.has_chat_support = d["has_chat_support"] if d.get("icon_url", null) != null: result.icon_url = d["icon_url"] if d.get("icon_urls", null) != null: result.icon_urls = TwitchExtensionIconUrls.from_json(d["icon_urls"]) if d.get("id", null) != null: result.id = d["id"] if d.get("name", null) != null: result.name = d["name"] if d.get("privacy_policy_url", null) != null: result.privacy_policy_url = d["privacy_policy_url"] if d.get("request_identity_link", null) != null: result.request_identity_link = d["request_identity_link"] if d.get("screenshot_urls", null) != null: for value in d["screenshot_urls"]: result.screenshot_urls.append(value) if d.get("state", null) != null: result.state = d["state"] if d.get("subscriptions_support_level", null) != null: result.subscriptions_support_level = d["subscriptions_support_level"] if d.get("summary", null) != null: result.summary = d["summary"] if d.get("support_email", null) != null: result.support_email = d["support_email"] if d.get("version", null) != null: result.version = d["version"] if d.get("viewer_summary", null) != null: result.viewer_summary = d["viewer_summary"] if d.get("views", null) != null: result.views = Views.from_json(d["views"]) if d.get("allowlisted_config_urls", null) != null: for value in d["allowlisted_config_urls"]: result.allowlisted_config_urls.append(value) if d.get("allowlisted_panel_urls", null) != null: for value in d["allowlisted_panel_urls"]: result.allowlisted_panel_urls.append(value) return result ## Describes all views-related information such as how the extension is displayed on mobile devices. ## #/components/schemas/Extension/Views class Views extends TwitchData: ## Describes how the extension is displayed on mobile devices. @export var mobile: Mobile: set(val): mobile = val track_data(&"mobile", val) ## Describes how the extension is rendered if the extension may be activated as a panel extension. @export var panel: TwitchPanel: set(val): panel = val track_data(&"panel", val) ## Describes how the extension is rendered if the extension may be activated as a video-overlay extension. @export var video_overlay: VideoOverlay: set(val): video_overlay = val track_data(&"video_overlay", val) ## Describes how the extension is rendered if the extension may be activated as a video-component extension. @export var component: Component: set(val): component = val track_data(&"component", val) ## Describes the view that is shown to broadcasters while they are configuring your extension within the Extension Manager. @export var config: Config: set(val): config = val track_data(&"config", val) ## Constructor with all required fields. static func create(_mobile: Mobile, _panel: TwitchPanel, _video_overlay: VideoOverlay, _component: Component, _config: Config) -> Views: var views: Views = Views.new() views.mobile = _mobile views.panel = _panel views.video_overlay = _video_overlay views.component = _component views.config = _config return views static func from_json(d: Dictionary) -> Views: var result: Views = Views.new() if d.get("mobile", null) != null: result.mobile = Mobile.from_json(d["mobile"]) if d.get("panel", null) != null: result.panel = TwitchPanel.from_json(d["panel"]) if d.get("video_overlay", null) != null: result.video_overlay = VideoOverlay.from_json(d["video_overlay"]) if d.get("component", null) != null: result.component = Component.from_json(d["component"]) if d.get("config", null) != null: result.config = Config.from_json(d["config"]) return result ## Describes how the extension is displayed on mobile devices. ## #/components/schemas/Extension/Views/Mobile class Mobile extends TwitchData: ## The HTML file that is shown to viewers on mobile devices. This page is presented to viewers as a panel behind the chat area of the mobile app. @export var viewer_url: String: set(val): viewer_url = val track_data(&"viewer_url", val) ## Constructor with all required fields. static func create(_viewer_url: String) -> Mobile: var mobile: Mobile = Mobile.new() mobile.viewer_url = _viewer_url return mobile static func from_json(d: Dictionary) -> Mobile: var result: Mobile = Mobile.new() if d.get("viewer_url", null) != null: result.viewer_url = d["viewer_url"] return result ## Describes how the extension is rendered if the extension may be activated as a panel extension. ## #/components/schemas/Extension/Views/Panel class TwitchPanel extends TwitchData: ## The HTML file that is shown to viewers on the channel page when the extension is activated in a Panel slot. @export var viewer_url: String: set(val): viewer_url = val track_data(&"viewer_url", val) ## The height, in pixels, of the panel component that the extension is rendered in. @export var height: int: set(val): height = val track_data(&"height", val) ## A Boolean value that determines whether the extension can link to non-Twitch domains. @export var can_link_external_content: bool: set(val): can_link_external_content = val track_data(&"can_link_external_content", val) ## Constructor with all required fields. static func create(_viewer_url: String, _height: int, _can_link_external_content: bool) -> TwitchPanel: var twitch_panel: TwitchPanel = TwitchPanel.new() twitch_panel.viewer_url = _viewer_url twitch_panel.height = _height twitch_panel.can_link_external_content = _can_link_external_content return twitch_panel static func from_json(d: Dictionary) -> TwitchPanel: var result: TwitchPanel = TwitchPanel.new() if d.get("viewer_url", null) != null: result.viewer_url = d["viewer_url"] if d.get("height", null) != null: result.height = d["height"] if d.get("can_link_external_content", null) != null: result.can_link_external_content = d["can_link_external_content"] return result ## Describes how the extension is rendered if the extension may be activated as a video-overlay extension. ## #/components/schemas/Extension/Views/VideoOverlay class VideoOverlay extends TwitchData: ## The HTML file that is shown to viewers on the channel page when the extension is activated on the Video - Overlay slot. @export var viewer_url: String: set(val): viewer_url = val track_data(&"viewer_url", val) ## A Boolean value that determines whether the extension can link to non-Twitch domains. @export var can_link_external_content: bool: set(val): can_link_external_content = val track_data(&"can_link_external_content", val) ## Constructor with all required fields. static func create(_viewer_url: String, _can_link_external_content: bool) -> VideoOverlay: var video_overlay: VideoOverlay = VideoOverlay.new() video_overlay.viewer_url = _viewer_url video_overlay.can_link_external_content = _can_link_external_content return video_overlay static func from_json(d: Dictionary) -> VideoOverlay: var result: VideoOverlay = VideoOverlay.new() if d.get("viewer_url", null) != null: result.viewer_url = d["viewer_url"] if d.get("can_link_external_content", null) != null: result.can_link_external_content = d["can_link_external_content"] return result ## Describes how the extension is rendered if the extension may be activated as a video-component extension. ## #/components/schemas/Extension/Views/Component class Component extends TwitchData: ## The HTML file that is shown to viewers on the channel page when the extension is activated in a Video - Component slot. @export var viewer_url: String: set(val): viewer_url = val track_data(&"viewer_url", val) ## The width value of the ratio (width : height) which determines the extension’s width, and how the extension’s iframe will resize in different video player environments. @export var aspect_ratio_x: int: set(val): aspect_ratio_x = val track_data(&"aspect_ratio_x", val) ## The height value of the ratio (width : height) which determines the extension’s height, and how the extension’s iframe will resize in different video player environments. @export var aspect_ratio_y: int: set(val): aspect_ratio_y = val track_data(&"aspect_ratio_y", val) ## A Boolean value that determines whether to apply CSS zoom. If **true**, a CSS zoom is applied such that the size of the extension is variable but the inner dimensions are fixed based on Scale Pixels. This allows your extension to render as if it is of fixed width and height. If **false**, the inner dimensions of the extension iframe are variable, meaning your extension must implement responsiveness. @export var autoscale: bool: set(val): autoscale = val track_data(&"autoscale", val) ## The base width, in pixels, of the extension to use when scaling (see `autoscale`). This value is ignored if `autoscale` is **false**. @export var scale_pixels: int: set(val): scale_pixels = val track_data(&"scale_pixels", val) ## The height as a percent of the maximum height of a video component extension. Values are between 1% - 100%. @export var target_height: int: set(val): target_height = val track_data(&"target_height", val) ## A Boolean value that determines whether the extension can link to non-Twitch domains. @export var can_link_external_content: bool: set(val): can_link_external_content = val track_data(&"can_link_external_content", val) ## Constructor with all required fields. static func create(_viewer_url: String, _aspect_ratio_x: int, _aspect_ratio_y: int, _autoscale: bool, _scale_pixels: int, _target_height: int, _can_link_external_content: bool) -> Component: var component: Component = Component.new() component.viewer_url = _viewer_url component.aspect_ratio_x = _aspect_ratio_x component.aspect_ratio_y = _aspect_ratio_y component.autoscale = _autoscale component.scale_pixels = _scale_pixels component.target_height = _target_height component.can_link_external_content = _can_link_external_content return component static func from_json(d: Dictionary) -> Component: var result: Component = Component.new() if d.get("viewer_url", null) != null: result.viewer_url = d["viewer_url"] if d.get("aspect_ratio_x", null) != null: result.aspect_ratio_x = d["aspect_ratio_x"] if d.get("aspect_ratio_y", null) != null: result.aspect_ratio_y = d["aspect_ratio_y"] if d.get("autoscale", null) != null: result.autoscale = d["autoscale"] if d.get("scale_pixels", null) != null: result.scale_pixels = d["scale_pixels"] if d.get("target_height", null) != null: result.target_height = d["target_height"] if d.get("can_link_external_content", null) != null: result.can_link_external_content = d["can_link_external_content"] return result ## Describes the view that is shown to broadcasters while they are configuring your extension within the Extension Manager. ## #/components/schemas/Extension/Views/Config class Config extends TwitchData: ## The HTML file shown to broadcasters while they are configuring your extension within the Extension Manager. @export var viewer_url: String: set(val): viewer_url = val track_data(&"viewer_url", val) ## A Boolean value that determines whether the extension can link to non-Twitch domains. @export var can_link_external_content: bool: set(val): can_link_external_content = val track_data(&"can_link_external_content", val) ## Constructor with all required fields. static func create(_viewer_url: String, _can_link_external_content: bool) -> Config: var config: Config = Config.new() config.viewer_url = _viewer_url config.can_link_external_content = _can_link_external_content return config static func from_json(d: Dictionary) -> Config: var result: Config = Config.new() if d.get("viewer_url", null) != null: result.viewer_url = d["viewer_url"] if d.get("can_link_external_content", null) != null: result.can_link_external_content = d["can_link_external_content"] return result