Team-TAU / tau

TAU- Twitch API Unifier, a containerized relay/proxy to unify the WebHook- and WebSocket-based real-time Twitch APIs under a single (local) WebSocket connection.
MIT License
149 stars 38 forks source link

[FEAT] Support all available scopes #122

Closed techygrrrl closed 1 year ago

techygrrrl commented 1 year ago

It would be great to be able to support all of the OAuth scopes Twitch supports so there are no issues when making requests against TAU to use the helix proxy.

For example, channel:read:vips and channel:manage:vips do not appear to be supported. I'm not sure what other scopes aren't supported but it would be great if we can add any missing scopes.

Here's a list of scopes Twitch publishes: https://dev.twitch.tv/docs/authentication/scopes

techygrrrl commented 1 year ago

Here are the latest scopes, scraped using this user script.

Latest scopes ```json [ { "scopeName": "analytics:read:extensions", "scopeDescriptionHtml": "View analytics data for the Twitch Extensions owned by the authenticated account.

Get Extension Analytics" }, { "scopeName": "analytics:read:games", "scopeDescriptionHtml": "View analytics data for the games owned by the authenticated account.

Get Game Analytics" }, { "scopeName": "bits:read", "scopeDescriptionHtml": "View Bits information for a channel.

Get Bits Leaderboard" }, { "scopeName": "channel:edit:commercial", "scopeDescriptionHtml": "Run commercials on a channel.

Start Commercial" }, { "scopeName": "channel:manage:broadcast", "scopeDescriptionHtml": "Manage a channel’s broadcast configuration, including updating channel configuration and managing stream markers and stream tags.

Modify Channel Information
Create Stream Marker
Replace Stream Tags" }, { "scopeName": "channel:read:charity", "scopeDescriptionHtml": "Read charity campaign details and user donations on your channel.

Get Charity Campaign" }, { "scopeName": "channel:manage:extensions", "scopeDescriptionHtml": "Manage a channel’s Extension configuration, including activating Extensions.

Get User Active Extensions
Update User Extensions" }, { "scopeName": "channel:manage:moderators", "scopeDescriptionHtml": "Add or remove the moderator role from users in your channel.

Add Channel Moderator
Remove Channel Moderator" }, { "scopeName": "channel:manage:polls", "scopeDescriptionHtml": "Manage a channel’s polls.

Create Poll
End Poll" }, { "scopeName": "channel:manage:predictions", "scopeDescriptionHtml": "Manage of channel’s Channel Points Predictions

Create Channel Points Prediction
End Channel Points Prediction" }, { "scopeName": "channel:manage:raids", "scopeDescriptionHtml": "Manage a channel raiding another channel.

Start a raid
Cancel a raid" }, { "scopeName": "channel:manage:redemptions", "scopeDescriptionHtml": "Manage Channel Points custom rewards and their redemptions on a channel.

Create Custom Rewards
Delete Custom Reward
Update Custom Reward
Update Redemption Status" }, { "scopeName": "channel:manage:schedule", "scopeDescriptionHtml": "Manage a channel’s stream schedule.

Update Channel Stream Schedule
Create Channel Stream Schedule Segment
Update Channel Stream Schedule Segment
Delete Channel Stream Schedule Segment" }, { "scopeName": "channel:manage:videos", "scopeDescriptionHtml": "Manage a channel’s videos, including deleting videos.

Delete Videos" }, { "scopeName": "channel:read:editors", "scopeDescriptionHtml": "View a list of users with the editor role for a channel.

Get Channel Editors" }, { "scopeName": "channel:read:goals", "scopeDescriptionHtml": "View Creator Goals for a channel.

Get Creator Goals" }, { "scopeName": "channel:read:hype_train", "scopeDescriptionHtml": "View Hype Train information for a channel.

Get Hype Train Events" }, { "scopeName": "channel:read:polls", "scopeDescriptionHtml": "View a channel’s polls.

Get Polls" }, { "scopeName": "channel:read:predictions", "scopeDescriptionHtml": "View a channel’s Channel Points Predictions.

Get Channel Points Predictions" }, { "scopeName": "channel:read:redemptions", "scopeDescriptionHtml": "View Channel Points custom rewards and their redemptions on a channel.

Get Custom Reward
Get Custom Reward Redemption" }, { "scopeName": "channel:read:stream_key", "scopeDescriptionHtml": "View an authorized user’s stream key.

Get Stream Key" }, { "scopeName": "channel:read:subscriptions", "scopeDescriptionHtml": "View a list of all subscribers to a channel and check if a user is subscribed to a channel.

Get Broadcaster Subscriptions" }, { "scopeName": "channel:read:vips", "scopeDescriptionHtml": "Read the list of VIPs in your channel.

Get VIPs" }, { "scopeName": "channel:manage:vips", "scopeDescriptionHtml": "Add or remove the VIP role from users in your channel.

Get VIPs
Add Channel VIP
Remove Channel VIP" }, { "scopeName": "clips:edit", "scopeDescriptionHtml": "Manage Clips for a channel.

Create Clip" }, { "scopeName": "moderation:read", "scopeDescriptionHtml": "View a channel’s moderation data including Moderators, Bans, Timeouts, and Automod settings.

Check AutoMod Status
Get Banned Users
Get Moderators" }, { "scopeName": "moderator:manage:announcements", "scopeDescriptionHtml": "Send announcements in channels where you have the moderator role.

Send Chat Announcement" }, { "scopeName": "moderator:manage:automod", "scopeDescriptionHtml": "Manage messages held for review by AutoMod in channels where you are a moderator.

Manage Held AutoMod Messages" }, { "scopeName": "moderator:read:automod_settings", "scopeDescriptionHtml": "View a broadcaster’s AutoMod settings.

Get AutoMod Settings" }, { "scopeName": "moderator:manage:automod_settings", "scopeDescriptionHtml": "Manage a broadcaster’s AutoMod settings.

Update AutoMod Settings" }, { "scopeName": "moderator:manage:banned_users", "scopeDescriptionHtml": "Ban and unban users.

Ban users
Unban user" }, { "scopeName": "moderator:read:blocked_terms", "scopeDescriptionHtml": "View a broadcaster’s list of blocked terms.

Get Blocked Terms" }, { "scopeName": "moderator:manage:blocked_terms", "scopeDescriptionHtml": "Manage a broadcaster’s list of blocked terms.

Add Blocked Term
Remove Blocked Term" }, { "scopeName": "moderator:manage:chat_messages", "scopeDescriptionHtml": "Delete chat messages in channels where you have the moderator role

Delete Chat Messages" }, { "scopeName": "moderator:read:chat_settings", "scopeDescriptionHtml": "View a broadcaster’s chat room settings.

Get Chat Settings" }, { "scopeName": "moderator:manage:chat_settings", "scopeDescriptionHtml": "Manage a broadcaster’s chat room settings.

Update Chat Settings" }, { "scopeName": "moderator:read:chatters", "scopeDescriptionHtml": "View the chatters in a broadcaster’s chat room.

Get Chatters" }, { "scopeName": "moderator:read:shield_mode", "scopeDescriptionHtml": "View a broadcaster’s Shield Mode status.

Get Shield Mode Status" }, { "scopeName": "moderator:manage:shield_mode", "scopeDescriptionHtml": "Manage a broadcaster’s Shield Mode status.

Update Shield Mode Status" }, { "scopeName": "moderator:read:shoutouts", "scopeDescriptionHtml": "View a broadcaster’s shoutouts.

" }, { "scopeName": "moderator:manage:shoutouts", "scopeDescriptionHtml": "Manage a broadcaster’s shoutouts.

Send a Shoutout" }, { "scopeName": "user:edit", "scopeDescriptionHtml": "Manage a user object.

Update User" }, { "scopeName": "user:edit:follows", "scopeDescriptionHtml": "Deprecated. Was previously used for “Create User Follows” and “Delete User Follows.” See Deprecation of Create and Delete Follows API Endpoints." }, { "scopeName": "user:manage:blocked_users", "scopeDescriptionHtml": "Manage the block list of a user.

Block User
Unblock User" }, { "scopeName": "user:read:blocked_users", "scopeDescriptionHtml": "View the block list of a user.

Get User Block List" }, { "scopeName": "user:read:broadcast", "scopeDescriptionHtml": "View a user’s broadcasting configuration, including Extension configurations.

Get Stream Markers
Get User Extensions
Get User Active Extensions" }, { "scopeName": "user:manage:chat_color", "scopeDescriptionHtml": "Update the color used for the user’s name in chat.Update User Chat Color" }, { "scopeName": "user:read:email", "scopeDescriptionHtml": "View a user’s email address.

Get Users (optional)" }, { "scopeName": "user:read:follows", "scopeDescriptionHtml": "View the list of channels a user follows.
Get Followed Streams" }, { "scopeName": "user:read:subscriptions", "scopeDescriptionHtml": "View if an authorized user is subscribed to specific channels.

Check User Subscription" }, { "scopeName": "user:manage:whispers", "scopeDescriptionHtml": "Read whispers that you send and receive, and send whispers on your behalf.

Send Whisper" } ] ```
FiniteSingularity commented 1 year ago

Apologies for taking so long to respond to this.. Busy month! :D I'll be working on this today.