diff --git a/src/main/java/io/getstream/chat/java/models/ChannelType.java b/src/main/java/io/getstream/chat/java/models/ChannelType.java index 627cb6ef..f1441a25 100644 --- a/src/main/java/io/getstream/chat/java/models/ChannelType.java +++ b/src/main/java/io/getstream/chat/java/models/ChannelType.java @@ -45,6 +45,10 @@ public class ChannelType { @JsonProperty("reminders") private Boolean reminders; + @Nullable + @JsonProperty("user_message_reminders") + private Boolean userMessageReminders; + @Nullable @JsonProperty("connect_events") private Boolean connectEvents; @@ -330,6 +334,10 @@ public static class ChannelTypeCreateRequestData { @JsonProperty("reminders") protected Boolean reminders; + @Nullable + @JsonProperty("user_message_reminders") + protected Boolean userMessageReminders; + @Nullable @JsonProperty("connect_events") protected Boolean connectEvents; @@ -477,6 +485,10 @@ public static class ChannelTypeUpdateRequestData { @JsonProperty("reminders") protected Boolean reminders; + @Nullable + @JsonProperty("user_message_reminders") + protected Boolean userMessageReminders; + @Nullable @JsonProperty("connect_events") protected Boolean connectEvents; diff --git a/src/test/java/io/getstream/chat/java/ChannelTypeTest.java b/src/test/java/io/getstream/chat/java/ChannelTypeTest.java index 6305b447..7480c020 100644 --- a/src/test/java/io/getstream/chat/java/ChannelTypeTest.java +++ b/src/test/java/io/getstream/chat/java/ChannelTypeTest.java @@ -168,4 +168,29 @@ void whenManipulatingChannelTypeWithGrants_throwsNoException() { return new HashSet<>(actualGrants).equals(new HashSet<>(expectedGrants)); }); } + + @DisplayName("Can set user_message_reminders field on channel type") + @Test + void whenSettingUserMessageRemindersOnChannelType_thenFieldIsAccessible() { + String channelTypeName = RandomStringUtils.randomAlphabetic(10); + + // Create a basic channel type first + Assertions.assertDoesNotThrow( + () -> ChannelType.create().withDefaultConfig().name(channelTypeName).request()); + pause(); + + // Test that the field can be set (even if Push V3 is not enabled, the field should be settable) + // The API will reject enabling it without Push V3, but the field should still be in the model + Assertions.assertDoesNotThrow( + () -> ChannelType.update(channelTypeName).userMessageReminders(false).request()); + pause(); + + // Retrieve and verify the field is accessible + var retrieved = Assertions.assertDoesNotThrow(() -> ChannelType.get(channelTypeName).request()); + Assertions.assertEquals(channelTypeName, retrieved.getName()); + // The field should be present in the response (even if false) + Assertions.assertNotNull(retrieved.getUserMessageReminders()); + + Assertions.assertDoesNotThrow(() -> ChannelType.delete(channelTypeName)); + } }