Current section
Files
Jump to
Current section
Files
CHANGELOG_REVIEW.md
# Twitch API Changelog Review — Past 12 Months
Review of [https://dev.twitch.tv/docs/change-log/](https://dev.twitch.tv/docs/change-log/) against the Teac library.
**Legend:** ✅ already handled · ⚠️ needs change · 🔵 no action required
---
## 2026-04-17 — EventSub Subscriptions API Updates
### Get EventSub Subscriptions — new `conduit_id` filter
> The endpoint now accepts `conduit_id` as an additional filtering parameter.
**⚠️ ACTION NEEDED** — `Teac.Api.EventSub.Subscriptions.get/2` only accepts `:type`, `:status`, `:after`. The `:conduit_id` filter param is missing from both the NimbleOptions schema and the params list.
### Create EventSub Subscription — `id` returned on 409 Conflict
> The endpoint now returns the subscription `id` in the 409 Conflict response.
**🔵 No action** — Teac surfaces the raw `{:error, %Teac.Error{}}` on non-2xx responses. Callers can inspect the error body. No API change needed, though we could document this behaviour.
---
## 2026-04-02 — EventSub and API Updates
### Send Chat Announcement — app access token support + `for_source_only`
> Now supports app access token authorization. New optional `for_source_only` parameter routes the announcement only to the source channel in a shared chat session.
**⚠️ ACTION NEEDED** — `Teac.Api.Chat.Announcements.post/2`:
1. The `moderator_id` param is required for user tokens but must be omitted for app tokens. The current schema marks it required — needs to become optional.
2. `for_source_only` boolean param is missing entirely.
### Channel Chat Notification V1 — `is_source_only` field
> `is_source_only` added to indicate the notification came only from the source channel in a shared session.
**⚠️ ACTION NEEDED** — `Teac.EventSub.ChatNotification` does not have an `is_source_only` field. `Teac.EventSub.ChatMessage` already has it. The notification struct needs the same field added.
### Channel Bits Use V1 — Custom Power-ups added, Combos removed
> Custom Power-ups added as an event type. Combos removed from event types.
**🔵 No action** — Teac parses `channel.bits.use` events from raw maps. The `Teac.EventSub.Bits` struct will pass new/removed fields through without error. No schema breakage.
### Channel Chat Notification V1 — Watch Streaks
> Watch Streaks added to notification types.
**✅ Already handled** — `Teac.EventSub.ChatNotification` already parses `watch_streak` notifications (confirmed in source).
---
## 2026-02-05 — General Availability Promotions
### Create Clip From VOD, Add/Remove Suspicious Status — moved to GA
> Three endpoints moved from beta to generally available.
**✅ Already handled** — All three are implemented: `Teac.Api.Clips.Vod`, `Teac.Api.Moderation.SuspiciousUsers`.
### "Get Hype Train Events" endpoint removed
> Removed in favour of "Get Hype Train Status".
**⚠️ ACTION NEEDED** — `Teac.Scopes.Channel` still has a doc reference to the removed "Get Hype Train Events" URL. Should be updated to point to "Get Hype Train Status". No functional code change, doc cleanup only.
---
## 2026-01-16 — New Open Beta Endpoints
### Add/Remove Suspicious Status to Chat User
> Added as open beta (now GA as of 2026-02-05).
**✅ Already handled** — Implemented as `Teac.Api.Moderation.SuspiciousUsers`.
---
## 2025-12-19 — Clip API Improvements
### Create Clip — `title` and `duration` optional params
> The `post /helix/clips` endpoint now accepts optional `title` (clip title) and `duration` (clip length in seconds, 5–60) parameters. Also adds 2K and vertical video support, and an enhanced edit URL.
**⚠️ ACTION NEEDED** — `Teac.Api.Clips.post/2` is missing `:title` and `:duration` opts. Both are optional, so no breaking change — just additive.
---
## 2025-10-30 — General Availability Promotion
### Get Clips Download and Get Authorization By User — moved to GA
**✅ Already handled** — Both implemented: `Teac.Api.Clips.Downloads`, `Teac.Api.Users.Authorization`.
---
## 2025-09-19 / 2025-10-18 — New Open Beta Endpoints
### Get Clips Download and Get Authorization By User added
**✅ Already handled** — Implemented.
---
## 2025-08-19 — General Availability Promotion
### Get Hype Train Status — moved to GA
**✅ Already handled** — `Teac.Api.Hypetrain` exists.
---
## 2025-07-31 — New Open Beta Endpoint
### Get Hype Train Status added
**✅ Already handled** — `Teac.Api.Hypetrain` exists.
---
## 2025-06-13 — EventSub Hype Train V1 Deprecated
### channel.hype_train.begin/progress/end V1 deprecated — V2 available
> V1 types deprecated; V2 adds enhanced fields.
**✅ Already handled** — `Teac.EventSub.SubscriptionTypes.Channel` already uses version `"2"` for `hype_train_begin`, `hype_train_progress`, and `hype_train_end`.
---
## 2025-05-09 — EventSub and API Updates
### Get EventSub Subscriptions — `subscription_id` filter
> New `:subscription_id` parameter to filter by a specific subscription ID.
**⚠️ ACTION NEEDED** — `Teac.Api.EventSub.Subscriptions.get/2` is missing `:subscription_id` from the schema and params (same fix batch as `:conduit_id` above).
### Channel Bits Use — Combo events added
> Updated to send events when users perform Combos. (Note: Combos later removed again in 2026-04-02.)
**🔵 No action** — Teac passes raw event maps through for `channel.bits.use`. The addition and subsequent removal of Combos causes no breaking change in Teac.
---
## 2025-04-15 — PubSub Deprecated
### PubSub replaced with Legacy PubSub to EventSub Migration Guide
**🔵 No action** — Teac uses EventSub exclusively. No PubSub code to remove.
---
## 2025-04-10 — Shared Chat Feature Updates
### Channel Chat Message — `is_source_only` field
**✅ Already handled** — `Teac.EventSub.ChatMessage` already has `is_source_only`.
### Send Chat Message — `for_source_only` parameter
> New optional boolean parameter; routes the message only to the source channel in a shared chat session.
**⚠️ ACTION NEEDED** — `Teac.Api.Chat.Messages.post/2` is missing the `:for_source_only` optional param.
---
## 2025-03-18 — EventSub and API Updates
### Channel Suspicious User Message — new type values
> Three new `status` values added to the event payload: `ban_evader`, `manually_added`, `banned_in_shared_channel`.
**🔵 No action** — `Teac.EventSub` parses suspicious user events from raw maps. New enum values pass through without error.
### Update User — 429 Too Many Requests added
**🔵 No action** — Teac surfaces HTTP errors generically via `Teac.Error`. No code change needed.
---
## 2025-02-27 — EventSub Promotions
### Channel Bits Use — moved from open beta to V1
### Channel Points Automatic Reward Redemption Add V2 — moved to V2
**✅ Already handled** — Both subscription types are registered with correct versions in `Teac.EventSub.SubscriptionTypes.Channel`.
---
## 2025-02-19 — API Parameter Updates
### Channel Bits Use — new fields (`emote_set_id`, `owner_id`, `format`)
> EventSub payload updated with new fields.
**🔵 No action** — Teac passes the raw event map for `channel.bits.use` through. New fields are accessible on the raw map. No struct breakage.
---
## 2025-02-12 / 2025-02-06 — New Open Beta EventSub Types
### Channel Points Automatic Reward Redemption Add V2
### Channel Bits Use EventSub subscription type
**✅ Already handled** — Both registered in `Teac.EventSub.SubscriptionTypes.Channel`.
---
## 2025-01-21 — API Documentation Update
### Send Chat Announcement — 429 response code added
**🔵 No action** — Teac surfaces HTTP errors generically.
---
## 2024-12-05 — Automod EventSub V2
### automod.message.hold V2 and automod.message.update V2 released
**✅ Already handled** — Both V2 and V1 variants registered in `Teac.EventSub.SubscriptionTypes.Automod`.
---
## 2024-11-21 — Hype Train Golden Kappa
### Hype Train EventSub — Golden Kappa Train field
> Subscription types updated to indicate Golden Kappa Train status (new field on the event payload).
**⚠️ ACTION NEEDED** — Need to check whether `Teac.EventSub.HypeTrain` struct surfaces this new field. If the struct hard-maps fields from the event map, the new field would be silently dropped. If it passes through a raw map, it's fine.
---
## 2024-11-01 — Content Classification Label
### "Politics and Sensitive Social Issues" label added
> New value accepted by Get Content Classification Labels and Modify Channel Information.
**🔵 No action** — Teac returns raw maps for both endpoints. New enum values pass through.
---
## 2024-09-16 — Shared Chat GA Promotion
### channel.shared_chat.begin/update/end moved to V1
### Get Shared Chat Session moved to V1
**✅ Already handled** — All three subscription types are registered at V1 in `Teac.EventSub.SubscriptionTypes.Channel`. `Teac.Api.SharedChat` exists.
---
## 2024-07-11 — Channel Warnings GA Promotion
### channel.warning.acknowledge/send moved to V1
### Moderator Actions V2 promoted
### Warn Chat User API moved to V1
**✅ Already handled** — `Teac.Api.Moderation.Warnings` exists. Warning subscription types registered.
---
## 2024-06-13 — Channel Chat Message Enum Renames (BREAKING)
### Renamed enum values in Channel Chat Message
> `"animated"` → `"power_ups_message_effect"`
> `"gigantified_emote"` → `"power_ups_gigantified_emote"`
> Automatic Point Redemption Add: `"send_animated_message"` → `"message_effect"`, `"send_gigantified_emote"` → `"gigantify_an_emote"`
**✅ Already handled** — `Teac.EventSub.ChatMessage` already uses the new names (`power_ups_message_effect`, `power_ups_gigantified_emote`).
---
## 2024-05-22 — Power-ups Feature
### Channel Chat Message — `channel_points_animation_id` field + new message types
**✅ Already handled** — New message_type values already use the renamed forms per 2024-06-13.
---
## 2024-04-12 — Get User Emotes Update
### `broadcaster_id` query parameter re-added
> The `broadcaster_id` optional query param was re-added to GET `/helix/chat/user_emotes`, allowing callers to filter emotes for a specific channel.
**⚠️ ACTION NEEDED** — `Teac.Api.Chat.Emotes.User.get/2` currently ignores all opts and sends no params. The `:broadcaster_id` optional param needs to be added.
---
## 2024-04-22 — Goal Types Expansion
### New goal type values: `new_bit`, `new_cheerer`
**🔵 No action** — Teac parses goals from raw maps. New enum values pass through.
---
## 2024-04-05 / 2024-04-12 — Suspicious User EventSub GA
### channel.suspicious_user.message/update moved to V1
**✅ Already handled** — Registered at V1 in `Teac.EventSub.SubscriptionTypes.Channel`.
---
## Summary of Required Changes
| # | File | Change |
|---|------|--------|
| 1 | `Teac.Api.EventSub.Subscriptions` | Add `:conduit_id` and `:subscription_id` filter params to `get/2` |
| 2 | `Teac.Api.Chat.Announcements` | Make `:moderator_id` optional (for app tokens); add `:for_source_only` param |
| 3 | `Teac.Api.Chat.Messages` | Add `:for_source_only` optional param |
| 4 | `Teac.Api.Clips` | Add `:title` and `:duration` optional params to `post/2` |
| 5 | `Teac.Api.Chat.Emotes.User` | Add `:broadcaster_id` optional param |
| 6 | `Teac.EventSub.ChatNotification` | Add `is_source_only` field |
| 7 | `Teac.EventSub.HypeTrain` | Verify/add Golden Kappa Train field |
| 8 | `Teac.Scopes.Channel` | Remove stale doc link to removed "Get Hype Train Events" endpoint |