|
| 1 | +# Migration Guide: v5 → v6 |
| 2 | + |
| 3 | +This guide covers all breaking changes when upgrading from `stream-sdk-java` v5 to v6. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +v6 is a full OpenAPI-aligned release. The primary change is a **systematic type renaming**: types that appear in API responses now have a `Response` suffix, and input types have a `Request` suffix. There are no removed features — all functionality from v5 is available in v6. Additionally, v6 adds complete coverage of the **Feeds**, **Video**, and **Moderation** product APIs. |
| 8 | + |
| 9 | +## Installation |
| 10 | + |
| 11 | +Update your Maven `pom.xml`: |
| 12 | + |
| 13 | +```xml |
| 14 | +<dependency> |
| 15 | + <groupId>io.getstream</groupId> |
| 16 | + <artifactId>stream-sdk-java</artifactId> |
| 17 | + <version>6.0.0</version> |
| 18 | +</dependency> |
| 19 | +``` |
| 20 | + |
| 21 | +Or your Gradle `build.gradle`: |
| 22 | + |
| 23 | +```groovy |
| 24 | +implementation 'io.getstream:stream-sdk-java:6.0.0' |
| 25 | +``` |
| 26 | + |
| 27 | +## Naming Conventions |
| 28 | + |
| 29 | +All types use `PascalCase` and fields use `camelCase` (standard Java convention). The general rules: |
| 30 | + |
| 31 | +- Types returned in API responses: `Foo` → `FooResponse` |
| 32 | +- Types used as API inputs: `Foo` → `FooRequest` |
| 33 | +- Some moderation action payloads: `FooRequest` → `FooRequestPayload` |
| 34 | + |
| 35 | +## Breaking Changes |
| 36 | + |
| 37 | +### Common / Shared Types |
| 38 | + |
| 39 | +| v5 | v6 | Notes | |
| 40 | +| --- | --- | --- | |
| 41 | +| `ApplicationConfig` | `AppResponseFields` | App configuration in responses | |
| 42 | +| `ChannelPushPreferences` | `ChannelPushPreferencesResponse` | Per-channel push settings | |
| 43 | +| `Device` | `DeviceResponse` | Device data (push, voip) | |
| 44 | +| `Event` | `WSEvent` | WebSocket event envelope | |
| 45 | +| `FeedsPreferences` | `FeedsPreferencesResponse` | Feeds push preferences | |
| 46 | +| `ImportV2Task` | `ImportV2TaskItem` | V2 import task | |
| 47 | +| `OwnUser` | `OwnUserResponse` | Authenticated user data | |
| 48 | +| `Pager` | `PagerResponse` | Now cursor-based (`next`/`prev`) | |
| 49 | +| `PushPreferences` | `PushPreferencesResponse` | Push preferences | |
| 50 | +| `PushTemplate` | `PushTemplateResponse` | Push template | |
| 51 | +| `PrivacySettings` | `PrivacySettingsResponse` | Typing indicators, read receipts | |
| 52 | +| `RateLimitInfo` | `LimitInfoResponse` | Rate limit info | |
| 53 | +| `SortParam` | `SortParamRequest` | Sort parameter for queries | |
| 54 | +| `User` | `UserResponse` | Full user in responses | |
| 55 | +| `UserBlock` | `BlockedUserResponse` | Blocked user details | |
| 56 | +| `UserCustomEvent` | `CustomEvent` | Custom user event | |
| 57 | +| `UserMute` | `UserMuteResponse` | User mute details | |
| 58 | + |
| 59 | +### Event System |
| 60 | + |
| 61 | +| Before (v5) | After (v6) | Notes | |
| 62 | +| --- | --- | --- | |
| 63 | +| `BaseEvent` (field `T`) | `Event` (field `type`) | Base event type | |
| 64 | +| `Event` (WS envelope) | `WSEvent` | WebSocket event wrapper | |
| 65 | +| `*Preset` embeds | `Has*` composition types | e.g., `HasChannel`, `HasMessage` | |
| 66 | +| — | `WHEvent` | New webhook envelope type | |
| 67 | + |
| 68 | +New composition types: `HasOwnUser`, `HasUserCommonFields`, `HasUserPrivacyFields`, `HasOptionalUserCommonFields`, `HasChannel`, `HasOptionalChannel`, `HasMessage`, `HasOptionalMessage`, `HasThreadParticipants`, `HasChannelTypeAndID`. |
| 69 | + |
| 70 | +### Chat Types |
| 71 | + |
| 72 | +| v5 | v6 | Notes | |
| 73 | +| --- | --- | --- | |
| 74 | +| `Campaign` | `CampaignResponse` | | |
| 75 | +| `CampaignStats` | `CampaignStatsResponse` | | |
| 76 | +| `Channel` | `ChannelResponse` | | |
| 77 | +| `ChannelConfigFields` | `ChannelConfigWithInfo` | Channel config + commands/grants | |
| 78 | +| `ChannelMember` | `ChannelMemberResponse` | | |
| 79 | +| `ChannelTypeConfigWithInfo` | `ChannelTypeConfig` | | |
| 80 | +| `ConfigOverrides` | `ConfigOverridesRequest` | | |
| 81 | +| `DraftMessage` / `DraftMessagePayload` | `DraftResponse` | Two types merged into one | |
| 82 | +| `Message` | `MessageResponse` | | |
| 83 | +| `MessageReminder` | `ReminderResponseData` | | |
| 84 | +| `PendingMessage` | `PendingMessageResponse` | | |
| 85 | +| `Poll` | `PollResponse` | | |
| 86 | +| `PollOption` | `PollOptionResponse` | | |
| 87 | +| `PollVote` | `PollVoteResponse` | | |
| 88 | +| `Reaction` | `ReactionResponse` | | |
| 89 | +| `ReadState` | `ReadStateResponse` | | |
| 90 | +| `Thread` | `ThreadResponse` | | |
| 91 | + |
| 92 | +### Video Types |
| 93 | + |
| 94 | +| v5 | v6 | Notes | |
| 95 | +| --- | --- | --- | |
| 96 | +| `AudioSettings` | `AudioSettingsResponse` | | |
| 97 | +| `BackstageSettings` | `BackstageSettingsResponse` | | |
| 98 | +| `BroadcastSettings` | `BroadcastSettingsResponse` | | |
| 99 | +| `Call` | `CallResponse` | | |
| 100 | +| `CallEgress` | `EgressResponse` | | |
| 101 | +| `CallMember` | `MemberResponse` | Note: not `CallMemberResponse` | |
| 102 | +| `CallParticipant` | `CallParticipantResponse` | | |
| 103 | +| `CallParticipantFeedback` | *(removed)* | Use `CollectUserFeedbackRequest` | |
| 104 | +| `CallSession` | `CallSessionResponse` | | |
| 105 | +| `CallSettings` | `CallSettingsResponse` | | |
| 106 | +| `CallType` | `CallTypeResponse` | | |
| 107 | +| `EventNotificationSettings` | `EventNotificationSettingsResponse` | | |
| 108 | +| `FrameRecordSettings` | `FrameRecordingSettingsResponse` | `Recording` inserted in name | |
| 109 | +| `GeofenceSettings` | `GeofenceSettingsResponse` | | |
| 110 | +| `HLSSettings` | `HLSSettingsResponse` | | |
| 111 | +| `IndividualRecordSettings` | `IndividualRecordingSettingsResponse` | `Recording` inserted in name | |
| 112 | +| `IngressSettings` | `IngressSettingsResponse` | | |
| 113 | +| `IngressSource` | `IngressSourceResponse` | | |
| 114 | +| `IngressAudioEncodingOptions` | `IngressAudioEncodingResponse` | Shortened name | |
| 115 | +| `IngressVideoEncodingOptions` | `IngressVideoEncodingResponse` | Shortened name | |
| 116 | +| `IngressVideoLayer` | `IngressVideoLayerResponse` | | |
| 117 | +| `LimitsSettings` | `LimitsSettingsResponse` | | |
| 118 | +| `NotificationSettings` | `NotificationSettingsResponse` | | |
| 119 | +| `RawRecordSettings` | `RawRecordingSettingsResponse` | `Recording` inserted in name | |
| 120 | +| `RecordSettings` | `RecordSettingsResponse` | | |
| 121 | +| `RingSettings` | `RingSettingsResponse` | | |
| 122 | +| `RTMPSettings` | `RTMPSettingsResponse` | | |
| 123 | +| `ScreensharingSettings` | `ScreensharingSettingsResponse` | | |
| 124 | +| `SessionSettings` | `SessionSettingsResponse` | | |
| 125 | +| `SIPCallConfigs` | `SIPCallConfigsResponse` | | |
| 126 | +| `SIPCallerConfigs` | `SIPCallerConfigsResponse` | | |
| 127 | +| `SIPDirectRoutingRuleCallConfigs` | `SIPDirectRoutingRuleCallConfigsResponse` | | |
| 128 | +| `SIPInboundRoutingRules` | `SIPInboundRoutingRuleResponse` | Plural → singular | |
| 129 | +| `SIPPinProtectionConfigs` | `SIPPinProtectionConfigsResponse` | | |
| 130 | +| `SIPTrunk` | `SIPTrunkResponse` | | |
| 131 | +| `ThumbnailsSettings` | `ThumbnailsSettingsResponse` | | |
| 132 | +| `TranscriptionSettings` | `TranscriptionSettingsResponse` | | |
| 133 | +| `VideoSettings` | `VideoSettingsResponse` | | |
| 134 | + |
| 135 | +### Moderation Types |
| 136 | + |
| 137 | +| v5 | v6 | Notes | |
| 138 | +| --- | --- | --- | |
| 139 | +| `ActionLog` | `ActionLogResponse` | | |
| 140 | +| `Appeal` | `AppealItemResponse` | | |
| 141 | +| `AutomodDetails` | `AutomodDetailsResponse` | | |
| 142 | +| `Ban` | `BanInfoResponse` | | |
| 143 | +| `BanOptions` | *(removed)* | Merged into `BanActionRequestPayload` | |
| 144 | +| `BanActionRequest` | `BanActionRequestPayload` | | |
| 145 | +| `BlockActionRequest` | `BlockActionRequestPayload` | | |
| 146 | +| `BlockedMessage` | *(removed)* | Internal only | |
| 147 | +| `CustomActionRequest` | `CustomActionRequestPayload` | | |
| 148 | +| `DeleteMessageRequest` | `DeleteMessageRequestPayload` | | |
| 149 | +| `DeleteUserRequest` | `DeleteUserRequestPayload` | | |
| 150 | +| `EntityCreator` | `EntityCreatorResponse` | | |
| 151 | +| `Evaluation` | `EvaluationResponse` | | |
| 152 | +| `FeedsModerationTemplate` | `QueryFeedModerationTemplate` | No `Response` suffix | |
| 153 | +| `FeedsModerationTemplateConfig` | `FeedsModerationTemplateConfigPayload` | | |
| 154 | +| `Flag` | *(removed)* | Use `ModerationFlagResponse` | |
| 155 | +| `Flag2` | `ModerationFlagResponse` | | |
| 156 | +| `FlagDetails` | `FlagDetailsResponse` | | |
| 157 | +| `FlagFeedback` | `FlagFeedbackResponse` | | |
| 158 | +| `FlagMessageDetails` | `FlagMessageDetailsResponse` | | |
| 159 | +| `FlagReport` | *(removed)* | Internal only | |
| 160 | +| `FutureChannelBan` | `FutureChannelBanResponse` | | |
| 161 | +| `MarkReviewedRequest` | `MarkReviewedRequestPayload` | | |
| 162 | +| `Match` | `MatchResponse` | | |
| 163 | +| `ModerationActionConfig` | `ModerationActionConfigResponse` | | |
| 164 | +| `ModerationBulkSubmitActionRequest` | `BulkSubmitActionRequest` | `Moderation` prefix dropped | |
| 165 | +| `ModerationConfig` | `ConfigResponse` | | |
| 166 | +| `ModerationFlags` | *(removed)* | Use `List<ModerationFlagResponse>` | |
| 167 | +| `ModerationLog` | *(removed)* | Use `ActionLogResponse` | |
| 168 | +| `ModerationLogResponse` | *(removed)* | Use `QueryModerationLogsResponse` | |
| 169 | +| `ModerationUsageStats` | `ModerationUsageStatsResponse` | | |
| 170 | +| `RestoreActionRequest` | `RestoreActionRequestPayload` | | |
| 171 | +| `ReviewQueueItem` | `ReviewQueueItemResponse` | | |
| 172 | +| `Rule` | `RuleResponse` | | |
| 173 | +| `ShadowBlockActionRequest` | `ShadowBlockActionRequestPayload` | | |
| 174 | +| `Task` | `TaskResponse` | | |
| 175 | +| `Trigger` | `TriggerResponse` | | |
| 176 | +| `UnbanActionRequest` | `UnbanActionRequestPayload` | | |
| 177 | +| `UnblockActionRequest` | `UnblockActionRequestPayload` | | |
| 178 | +| `VideoEndCallRequest` | `VideoEndCallRequestPayload` | | |
| 179 | +| `VideoKickUserRequest` | `VideoKickUserRequestPayload` | | |
| 180 | + |
| 181 | +### Feeds Types |
| 182 | + |
| 183 | +| v5 | v6 | Notes | |
| 184 | +| --- | --- | --- | |
| 185 | +| `Activity` | `ActivityResponse` | | |
| 186 | +| `ActivityFeedback` | `ActivityFeedbackRequest` | Request-only (no `Response` suffix) | |
| 187 | +| `ActivityMark` | `MarkActivityRequest` | | |
| 188 | +| `ActivityPin` | `ActivityPinResponse` | | |
| 189 | +| `AggregatedActivity` | `AggregatedActivityResponse` | | |
| 190 | +| `Bookmark` | `BookmarkResponse` | | |
| 191 | +| `BookmarkFolder` | `BookmarkFolderResponse` | | |
| 192 | +| `Collection` | `CollectionResponse` | | |
| 193 | +| `Comment` | `CommentResponse` | | |
| 194 | +| `CommentMedia` | *(removed)* | Embedded inline in `CommentResponse` | |
| 195 | +| `CommentMention` | *(removed)* | Embedded inline in `CommentResponse` | |
| 196 | +| `DenormalizedFeedsReaction` | *(removed)* | Internal only | |
| 197 | +| `Feed` | `FeedResponse` | | |
| 198 | +| `FeedGroup` | `FeedGroupResponse` | | |
| 199 | +| `FeedMember` | `FeedMemberResponse` | | |
| 200 | +| `FeedsReaction` | `FeedsReactionResponse` | | |
| 201 | +| `FeedsReactionGroup` | `FeedsReactionGroupResponse` | | |
| 202 | +| `FeedSuggestion` | `FeedSuggestionResponse` | | |
| 203 | +| `FeedView` | `FeedViewResponse` | | |
| 204 | +| `FeedVisibilityInfo` | `FeedVisibilityResponse` | | |
| 205 | +| `Follow` | `FollowResponse` | | |
| 206 | +| `MembershipLevel` | `MembershipLevelResponse` | | |
| 207 | +| `ThreadedComment` | `ThreadedCommentResponse` | | |
| 208 | + |
| 209 | +## Getting Help |
| 210 | + |
| 211 | +- [Stream documentation](https://getstream.io/docs/) |
| 212 | +- [GitHub Issues](https://github.com/GetStream/stream-sdk-java/issues) |
| 213 | +- [Stream support](https://getstream.io/contact/support/) |
0 commit comments