go-twitch/api/channelpoints/modals.go

154 lines
5.9 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package channelpoints
import "time"
type CustomReward struct {
// The ID that uniquely identifies the broadcaster.
BroadcasterID string `json:"broadcaster_id"`
// The broadcasters login name.
BroadcasterLogin string `json:"broadcaster_login"`
// The broadcasters display name.
BroadcasterName string `json:"broadcaster_name"`
// The ID that uniquely identifies this custom reward.
ID string `json:"id"`
// The title of the custom reward.
Title string `json:"title"`
// The prompt shown to the viewer when they redeem the reward if user input is required (see the is_user_input_required field).
Prompt string `json:"prompt"`
// The cost of the reward in Channel Points.
Cost int `json:"cost"`
// A set of custom images for the reward.
// This field is set to null if the broadcaster didnt upload images.
CustomImages *CustomRewardImage `json:"custom_images"`
// A set of default images for the reward.
DefaultImage CustomRewardImage `json:"default_image"`
// The background color to use for the reward. The color is in Hex format (for example, #00E5CB).
BackgroundColor string `json:"background_color"`
// A Boolean value that determines whether the reward is enabled.
// Is true if enabled; otherwise, false. Disabled rewards arent shown to the user.
IsEnabled bool `json:"is_enabled"`
// A Boolean value that determines whether the user must enter information when redeeming the reward.
// Is true if the reward requires user input.
IsUserInputRequired bool `json:"is_user_input_required"`
// The settings used to determine whether to apply a maximum to the number to the redemptions allowed per live stream.
MaxPerStreamSetting struct {
// A Boolean value that determines whether the reward applies a limit on the number of redemptions allowed per live stream.
// Is true if the reward applies a limit.
IsEnabled bool `json:"is_enabled"`
// The maximum number of redemptions allowed per live stream.
MaxPerStream int64 `json:"max_per_stream"`
} `json:"max_per_stream_setting"`
// The settings used to determine whether to apply a maximum to the number of redemptions allowed per user per live stream.
MaxPerUserPerStreamSetting struct {
// A Boolean value that determines whether the reward applies a limit on the number of redemptions allowed per user per live stream.
// Is true if the reward applies a limit.
IsEnabled bool `json:"is_enabled"`
// The maximum number of redemptions allowed per user per live stream.
MaxPerUserPerStream int64 `json:"max_per_user_per_stream"`
} `json:"max_per_user_per_stream_setting"`
// The settings used to determine whether to apply a cooldown period between redemptions and the length of the cooldown.
GlobalCooldownSetting struct {
// A Boolean value that determines whether to apply a cooldown period. Is true if a cooldown period is enabled.
IsEnabled bool `json:"is_enabled"`
// The cooldown period, in seconds.
GlobalCooldownSeconds int64 `json:"global_cooldown_seconds"`
} `json:"global_cooldown_setting"`
// A Boolean value that determines whether the reward is currently paused. Is true if the reward is paused. Viewers cant redeem paused rewards.
IsPaused bool `json:"is_paused"`
// A Boolean value that determines whether the reward is currently in stock. Is true if the reward is in stock. Viewers cant redeem out of stock rewards.
IsInStock bool `json:"is_in_stock"`
// A Boolean value that determines whether redemptions should be set to FULFILLED status immediately when a reward is redeemed.
// If false, status is UNFULFILLED and follows the normal request queue process.
ShouldRedemptionsSkipRequestQueue bool `json:"should_redemptions_skip_request_queue"`
// The number of redemptions redeemed during the current live stream. The number counts against the max_per_stream_setting limit.
// This field is null if the broadcasters stream isnt live or max_per_stream_setting isnt enabled.
RedemptionsRedeemedCurrentStream *int `json:"redemptions_redeemed_current_stream"`
// The timestamp of when the cooldown period expires. Is null if the reward isnt in a cooldown state (see the global_cooldown_setting field).
CooldownExpiresAt *time.Time `json:"cooldown_expires_at"`
}
type CustomRewardImage struct {
// The URL to a small version of the image.
URL1X string `json:"url_1x"`
// The URL to a medium version of the image.
URL2X string `json:"url_2x"`
// The URL to a large version of the image.
URL4X string `json:"url_4x"`
}
type RewardRedemptionStatus string
const (
RewardRedemptionStatusCanceled RewardRedemptionStatus = "CANCELED"
RewardRedemptionStatusFulfilled RewardRedemptionStatus = "FULFILLED"
RewardRedemptionStatusUnfulfilled RewardRedemptionStatus = "UNFULFILLED"
)
type CustomRewardRedemption struct {
// The ID that uniquely identifies the broadcaster.
BroadcasterID string `json:"broadcaster_id"`
// The broadcaster's login name.
BroadcasterLogin string `json:"broadcaster_login"`
// The broadcaster's display name.
BroadcasterName string `json:"broadcaster_name"`
// The ID that uniquely identifies this redemption.
ID string `json:"id"`
// The ID that uniquely identifies the user that redeemed the reward.
UserID string `json:"user_id"`
// The user's login name.
UserLogin string `json:"user_login"`
// The user's display name.
UserName string `json:"user_name"`
// The state of the redemption.
Status RewardRedemptionStatus `json:"status"`
//The date and time of when the reward was redeemed, in RFC3339 format.
RedeemedAt time.Time `json:"redeemed_at"`
// The reward that the user redeemed.
Reward struct {
// The ID that uniquely identifies the redeemed reward.
ID string `json:"id"`
// The reward's title.
Title string `json:"title"`
// The prompt displayed to the viewer if user input is required.
Prompt string `json:"prompt"`
// The rewards cost, in Channel Points.
Cost int64 `json:"cost"`
} `json:"reward"`
}