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"` }