diff --git a/src/client.ts b/src/client.ts index c2cbe8703..3f12c5926 100644 --- a/src/client.ts +++ b/src/client.ts @@ -209,6 +209,8 @@ import type { TokenOrProvider, TranslateResponse, UnBanUserOptions, + UpdateChannelsBatchOptions, + UpdateChannelsBatchResponse, UpdateChannelTypeRequest, UpdateChannelTypeResponse, UpdateCommandOptions, @@ -4762,4 +4764,17 @@ export class StreamChat { syncDeliveredCandidates(collections: Channel[]) { this.messageDeliveryReporter.syncDeliveredCandidates(collections); } + + /** + * Update Channels Batch + * + * @param {UpdateChannelsBatchOptions} payload for updating channels in batch + * @return {Promise} The server response + */ + async updateChannelsBatch(payload: UpdateChannelsBatchOptions) { + return await this.put( + this.baseURL + `/channels/batch`, + payload, + ); + } } diff --git a/src/types.ts b/src/types.ts index ec597d8d3..d225fe94c 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4459,3 +4459,29 @@ export type EventHook = { created_at?: string; updated_at?: string; }; + +export type UpdateChannelsBatchOptions = { + operation: string; + filter: UpdateChannelsBatchFilters; + members?: string[] | Array; + data?: Partial; +}; + +export type UpdateChannelsBatchFilters = QueryFilters<{ + cids?: + | RequireOnlyOne, '$in'>> + | RequireOnlyOne, '$eq'>> + | PrimitiveFilter; + types?: + | RequireOnlyOne, '$in'>> + | RequireOnlyOne, '$eq'>> + | PrimitiveFilter; + filter_tags?: + | RequireOnlyOne, '$in'>> + | RequireOnlyOne>, '$eq'>> + | PrimitiveFilter>; +}>; + +export type UpdateChannelsBatchResponse = { + result: Record; +} & Partial;