222 lines
9.3 KiB
Go
222 lines
9.3 KiB
Go
|
package extensions
|
|||
|
|
|||
|
import "time"
|
|||
|
|
|||
|
type ConfigurationSegment string
|
|||
|
|
|||
|
const (
|
|||
|
ConfigurationSegmentBroadcaster ConfigurationSegment = "broadcaster"
|
|||
|
ConfigurationSegmentDeveloper ConfigurationSegment = "developer"
|
|||
|
ConfigurationSegmentGlobal ConfigurationSegment = "global"
|
|||
|
)
|
|||
|
|
|||
|
type ExtensionSecrets struct {
|
|||
|
// The version number that identifies this definition of the secret’s data.
|
|||
|
FormatVersion int `json:"format_version"`
|
|||
|
|
|||
|
// The list of secrets.
|
|||
|
Secrets []ExtensionSecret `json:"secrets"`
|
|||
|
}
|
|||
|
|
|||
|
type ExtensionSecret struct {
|
|||
|
// The raw secret that you use with JWT encoding.
|
|||
|
Content string `json:"content"`
|
|||
|
|
|||
|
// The UTC date and time (in RFC3339 format) that you may begin using this secret to sign a JWT.
|
|||
|
ActiveAt time.Time `json:"active_at"`
|
|||
|
|
|||
|
// The UTC date and time (in RFC3339 format) that you must stop using this secret to decode a JWT.
|
|||
|
ExpiresAt time.Time `json:"expires_at"`
|
|||
|
}
|
|||
|
|
|||
|
type ConfigurationLocation string
|
|||
|
|
|||
|
const (
|
|||
|
// The Extensions Configuration Service hosts the configuration.
|
|||
|
ConfigurationLocationHosted ConfigurationLocation = "hosted"
|
|||
|
|
|||
|
// The Extension Backend Service (EBS) hosts the configuration.
|
|||
|
ConfigurationLocationCustom ConfigurationLocation = "custom"
|
|||
|
|
|||
|
// The extension doesn't require configuration.
|
|||
|
ConfigurationLocationNone ConfigurationLocation = "none"
|
|||
|
)
|
|||
|
|
|||
|
type ExtensionState string
|
|||
|
|
|||
|
const (
|
|||
|
ExtensionStateApproved ExtensionState = "Approved"
|
|||
|
ExtensionStateAssetsUploaded ExtensionState = "AssetsUploaded"
|
|||
|
ExtensionStateDeleted ExtensionState = "Deleted"
|
|||
|
ExtensionStateDeprecated ExtensionState = "Deprecated"
|
|||
|
ExtensionStateInReview ExtensionState = "InReview"
|
|||
|
ExtensionStateInTest ExtensionState = "InTest"
|
|||
|
ExtensionStatePendingAction ExtensionState = "PendingAction"
|
|||
|
ExtensionStateRejected ExtensionState = "Rejected"
|
|||
|
ExtensionStateReleased ExtensionState = "Released"
|
|||
|
)
|
|||
|
|
|||
|
type Extension struct {
|
|||
|
// The name of the user or organization that owns the extension
|
|||
|
AuthorName string `json:"author_name"`
|
|||
|
|
|||
|
// A boolean value that determines whether the extension has features that use bits.
|
|||
|
// Is true if the extension has features that use bits.
|
|||
|
HasBits bool `json:"has_bits"`
|
|||
|
|
|||
|
// A boolean value that determines whether a user can install the extension on their channel.
|
|||
|
// Is true if the user can install the extension on their channel.
|
|||
|
CanInstall bool `json:"can_install"`
|
|||
|
|
|||
|
// The location of where the extension’s configuration is stored.
|
|||
|
ConfigurationLocation ConfigurationLocation `json:"configuration_location"`
|
|||
|
|
|||
|
// A longer description of the extension. It appears on the details page.
|
|||
|
Description string `json:"description"`
|
|||
|
|
|||
|
// A URL to the extension's Terms of Service.
|
|||
|
EulaTosUrl string `json:"eula_tos_url"`
|
|||
|
|
|||
|
// 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 installed channel's chat room.
|
|||
|
HasChatSupport bool `json:"has_chat_support"`
|
|||
|
|
|||
|
// A URL to the default icon that's displayed in the Extensions directory.
|
|||
|
IconUrl string `json:"icon_url"`
|
|||
|
|
|||
|
// A dictionary that contains URLs to different sizes of the default icon.
|
|||
|
// The dictionary’s key identifies the icon’s size (for example, 24x24), and the dictionary’s value contains the URL to the icon.
|
|||
|
IconUrls map[string]string `json:"icon_urls"`
|
|||
|
|
|||
|
// The extension’s ID.
|
|||
|
ID string `json:"id"`
|
|||
|
|
|||
|
// The extension’s state.
|
|||
|
State ExtensionState `json:"state"`
|
|||
|
|
|||
|
// 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.
|
|||
|
SubscriptionsSupportLevel string `json:"subscriptions_support_level"`
|
|||
|
|
|||
|
// A short description of the extension that streamers see when hovering over the discovery splash screen in the Extensions manager.
|
|||
|
Summary string `json:"summary"`
|
|||
|
|
|||
|
// The email address that users use to get support for the extension.
|
|||
|
SupportEmail string `json:"support_email"`
|
|||
|
|
|||
|
// The extension’s version number.
|
|||
|
Version string `json:"version"`
|
|||
|
|
|||
|
// A brief description displayed on the channel to explain how the extension works.
|
|||
|
ViewerSummary string `json:"viewer_summary"`
|
|||
|
|
|||
|
// Describes all views-related information such as how the extension is displayed on mobile devices.
|
|||
|
Views struct {
|
|||
|
// Describes how the extension is displayed on mobile devices.
|
|||
|
Mobile struct {
|
|||
|
// 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.
|
|||
|
ViewerUrl string `json:"viewer_url"`
|
|||
|
} `json:"mobile"`
|
|||
|
|
|||
|
// Describes how the extension is rendered if the extension may be activated as a panel extension.
|
|||
|
Panel struct {
|
|||
|
// The HTML file that is shown to viewers when the extension is activated as a panel extension.
|
|||
|
ViewerUrl string `json:"viewer_url"`
|
|||
|
|
|||
|
// The height, in pixels, of the panel component that the extension is rendered in.
|
|||
|
Height int `json:"height"`
|
|||
|
|
|||
|
// A Boolean value that determines whether the extension can link to non-Twitch domains.
|
|||
|
CanLinkExternalContent bool `json:"can_link_external_content"`
|
|||
|
} `json:"panel"`
|
|||
|
|
|||
|
// Describes how the extension is rendered if the extension may be activated as a video-overlay extension.
|
|||
|
VideoOverlay struct {
|
|||
|
// The HTML file that is shown to viewers when the extension is activated as a video-overlay extension.
|
|||
|
ViewerUrl string `json:"viewer_url"`
|
|||
|
|
|||
|
// A Boolean value that determines whether the extension can link to non-Twitch domains.
|
|||
|
CanLinkExternalContent bool `json:"can_link_external_content"`
|
|||
|
} `json:"video_overlay"`
|
|||
|
|
|||
|
// Describes how the extension is rendered if the extension may be activated as a video-component extension.
|
|||
|
VideoComponent struct {
|
|||
|
// The HTML file that is shown to viewers when the extension is activated as a video-component extension.
|
|||
|
ViewerUrl string `json:"viewer_url"`
|
|||
|
|
|||
|
// 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.
|
|||
|
AspectRatioX int `json:"aspect_ratio_x"`
|
|||
|
|
|||
|
// 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.
|
|||
|
AspectRatioY int `json:"aspect_ratio_y"`
|
|||
|
|
|||
|
// 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.
|
|||
|
Autoscale bool `json:"autoscale"`
|
|||
|
|
|||
|
// The base width, in pixels, of the extension to use when scaling (see autoscale). This value is ignored if autoscale is false.
|
|||
|
ScalePixels int `json:"scale_pixels"`
|
|||
|
|
|||
|
// The height as a percent of the maximum height of a video component extension. Values are between 1% - 100%.
|
|||
|
TargetHeight int `json:"target_height"`
|
|||
|
|
|||
|
// A boolean value that determines whether the extension can link to non-Twitch domains.
|
|||
|
CanLinkExternalContent bool `json:"can_link_external_content"`
|
|||
|
} `json:"video_component"`
|
|||
|
|
|||
|
// Describes the view that is shown to broadcasters while they are configuring your extension within the Extension Manager.
|
|||
|
Config struct {
|
|||
|
// The HTML file that is shown to broadcasters while they are configuring your extension within the Extension Manager.
|
|||
|
ViewerUrl string `json:"viewer_url"`
|
|||
|
|
|||
|
// A Boolean value that determines whether the extension can link to non-Twitch domains.
|
|||
|
CanLinkExternalContent bool `json:"can_link_external_content"`
|
|||
|
} `json:"config"`
|
|||
|
} `json:"views"`
|
|||
|
|
|||
|
// Allowlisted configuration URLs for displaying the extension
|
|||
|
// (the allowlist is configured on Twitch’s developer site under the Extensions -> Extension -> Version -> Capabilities).
|
|||
|
AllowlistedConfigUrls []string `json:"allowlisted_config_urls"`
|
|||
|
|
|||
|
// Allowlisted panel URLs for displaying the extension
|
|||
|
// (the allowlist is configured on Twitch’s developer site under the Extensions -> Extension -> Version -> Capabilities).
|
|||
|
AllowlistedPanelUrls []string `json:"allowlisted_panel_urls"`
|
|||
|
}
|
|||
|
|
|||
|
type BitsProduct struct {
|
|||
|
// The product’s SKU. The SKU is unique across an extension’s products.
|
|||
|
SKU string `json:"sku"`
|
|||
|
|
|||
|
// An object that contains the product’s cost information.
|
|||
|
Cost struct {
|
|||
|
// The product’s price.
|
|||
|
Amount int `json:"amount"`
|
|||
|
|
|||
|
// The type of currency. Possible values are:
|
|||
|
//
|
|||
|
// bits
|
|||
|
Type string `json:"type"`
|
|||
|
} `json:"cost"`
|
|||
|
|
|||
|
// A Boolean value that indicates whether the product is in development. If true, the product is not available for public use.
|
|||
|
InDevelopment bool `json:"in_development"`
|
|||
|
|
|||
|
// The product’s name as displayed in the extension.
|
|||
|
DisplayName string `json:"display_name"`
|
|||
|
|
|||
|
// The date and time, in RFC3339 format, when the product expires.
|
|||
|
Expiration time.Time `json:"expiration"`
|
|||
|
|
|||
|
// A Boolean value that determines whether Bits product purchase events are broadcast to all instances of an extension on a channel.
|
|||
|
// The events are broadcast via the onTransactionComplete helper callback. Is true if the event is broadcast to all instances.
|
|||
|
IsBroadcast bool `json:"is_broadcast"`
|
|||
|
}
|