154 lines
5.9 KiB
Go
154 lines
5.9 KiB
Go
package channelpoints
|
||
|
||
import "time"
|
||
|
||
type CustomReward 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 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 didn’t 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 aren’t 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 can’t 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 can’t 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 broadcaster’s stream isn’t live or max_per_stream_setting isn’t enabled.
|
||
RedemptionsRedeemedCurrentStream *int `json:"redemptions_redeemed_current_stream"`
|
||
|
||
// The timestamp of when the cooldown period expires. Is null if the reward isn’t 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 reward’s cost, in Channel Points.
|
||
Cost int64 `json:"cost"`
|
||
} `json:"reward"`
|
||
}
|