channel := client.Chat().Channel("messaging", "general")
channel.GetOrCreate(ctx, &getstream.GetOrCreateChannelRequest{
Data: &getstream.ChannelInput{
CreatedByID: getstream.PtrTo("thierry"),
Custom: map[string]any{
"source": "user",
"source_detail": map[string]any{"user_id": "123"},
"channel_detail": map[string]any{"topic": "Plants and Animals", "rating": "pg"},
},
},
})
// let's change the source of this channel
channel.UpdateChannelPartial(ctx, &getstream.UpdateChannelPartialRequest{
Set: map[string]any{
"source": "system",
},
})
// since it's system generated we no longer need source_detail
channel.UpdateChannelPartial(ctx, &getstream.UpdateChannelPartialRequest{
Unset: []string{"source_detail"},
})
// and finally update one of the nested fields in the channel_detail
channel.UpdateChannelPartial(ctx, &getstream.UpdateChannelPartialRequest{
Set: map[string]any{
"channel_detail.topic": "Nature",
},
})
// and maybe we decide we no longer need a rating
channel.UpdateChannelPartial(ctx, &getstream.UpdateChannelPartialRequest{
Unset: []string{"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.
channel.Update(ctx, &getstream.UpdateChannelRequest{
Data: &getstream.ChannelInputRequest{
Custom: map[string]any{
"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.