require 'getstream_ruby'
Models = GetStream::Generated::Models
# Here's a channel with some custom field data that might be useful
client.chat.get_or_create_channel(type, id,
Models::ChannelGetOrCreateRequest.new(
data: Models::ChannelInput.new(
created_by_id: 'myuserid',
custom: {
'source' => 'user',
'source_detail' => { 'user_id' => 123 },
'channel_detail' => { 'topic' => 'Plants and Animals', 'rating' => 'pg' }
}
)
)
)
# let's change the source of this channel
client.chat.update_channel_partial(type, id,
Models::UpdateChannelPartialRequest.new(set: { 'source' => 'system' })
)
# since it's system generated we no longer need source_detail
client.chat.update_channel_partial(type, id,
Models::UpdateChannelPartialRequest.new(unset: ['source_detail'])
)
# and finally update one of the nested fields in the channel_detail
client.chat.update_channel_partial(type, id,
Models::UpdateChannelPartialRequest.new(set: { 'channel_detail.topic' => 'Nature' })
)
# and maybe we decide we no longer need a rating
client.chat.update_channel_partial(type, id,
Models::UpdateChannelPartialRequest.new(unset: ['channel_detail.rating'])
)Updating a Channel
There are two ways to update a channel with the Stream API: partial updates and full updates. A partial update preserves existing custom key–value data, while a full update replaces the entire channel object and removes any fields not included in the request.
Partial Update
A partial update lets you set or unset specific fields without affecting the rest of the channel’s custom data — essentially a patch-style update.
Full Update
The update function updates all of the channel data. Any data that is present on the channel and not included in a full update will be deleted.
require 'getstream_ruby'
Models = GetStream::Generated::Models
client.chat.update_channel('messaging', 'general',
Models::UpdateChannelRequest.new(
data: Models::ChannelInputRequest.new(
custom: { 'name' => 'myspecialchannel', 'color' => 'green' }
)
)
)Request Params
| Name | Type | Description | Optional |
|---|---|---|---|
| channel data | object | Object with the new channel information. One special field is "frozen". Setting this field to true will freeze the channel. Read more about freezing channels in "Freezing Channels" | |
| text | object | Message object allowing you to show a system message in the Channel that something changed. | Yes |
Updating a channel using these methods cannot be used to add or remove members. For this, you must use specific methods for adding/removing members, more information can be found here.