From e4162d6a53b2812a7da3985d99b362bd0eb83ae5 Mon Sep 17 00:00:00 2001 From: Jimmy Pettersson Date: Wed, 2 Sep 2026 15:46:53 +0200 Subject: [PATCH] feat(feeds): regenerate for the activity selector feed_groups scope Adds FeedGroupScope and the feed_groups property on ActivitySelectorConfig and ActivitySelectorConfigResponse, so QA tests can send the field through the typed client instead of casting the selector to any. Also sweeps up spec drift accumulated since 0.8.4: TranslateMessageResponse replaces MessageActionResponse on translateMessage, and channel member operations gain custom_set / custom_unset. Generated with ./generate-openapi.sh against GetStream/chat feature/feeds-1853-feed-group-scope (PR #16483). Co-Authored-By: Claude Opus 5 (1M context) --- src/gen/chat/ChatApi.ts | 9 ++-- src/gen/common/CommonApi.ts | 2 + src/gen/model-decoders/decoders.ts | 9 ++++ src/gen/models/index.ts | 83 ++++++++++++++++++++++++++++-- 4 files changed, 97 insertions(+), 6 deletions(-) diff --git a/src/gen/chat/ChatApi.ts b/src/gen/chat/ChatApi.ts index 36c33f9..a146814 100644 --- a/src/gen/chat/ChatApi.ts +++ b/src/gen/chat/ChatApi.ts @@ -113,6 +113,7 @@ import { StartCampaignResponse, StopCampaignRequest, TranslateMessageRequest, + TranslateMessageResponse, TruncateChannelRequest, TruncateChannelResponse, UndeleteMessageRequest, @@ -390,7 +391,9 @@ export class ChatApi { const body = { operation: request?.operation, filter: request?.filter, + custom_unset: request?.custom_unset, members: request?.members, + custom_set: request?.custom_set, data: request?.data, }; @@ -1865,7 +1868,7 @@ export class ChatApi { async translateMessage( request: TranslateMessageRequest & { id: string }, - ): Promise> { + ): Promise> { const pathParams = { id: request?.id, }; @@ -1874,7 +1877,7 @@ export class ChatApi { }; const response = await this.apiClient.sendRequest< - StreamResponse + StreamResponse >( 'POST', '/api/v2/chat/messages/{id}/translate', @@ -1884,7 +1887,7 @@ export class ChatApi { 'application/json', ); - decoders['MessageActionResponse']?.(response.body); + decoders['TranslateMessageResponse']?.(response.body); return { ...response.body, metadata: response.metadata }; } diff --git a/src/gen/common/CommonApi.ts b/src/gen/common/CommonApi.ts index 7ea4e9c..5103094 100644 --- a/src/gen/common/CommonApi.ts +++ b/src/gen/common/CommonApi.ts @@ -160,6 +160,8 @@ export class CommonApi { request?.member_custom_on_mentioned_users_enabled, member_custom_on_messages_enabled: request?.member_custom_on_messages_enabled, + member_custom_on_typing_events_enabled: + request?.member_custom_on_typing_events_enabled, migrate_permissions_to_v2: request?.migrate_permissions_to_v2, moderation_analytics_enabled: request?.moderation_analytics_enabled, moderation_enabled: request?.moderation_enabled, diff --git a/src/gen/model-decoders/decoders.ts b/src/gen/model-decoders/decoders.ts index 2f75e3c..8f2c0a6 100644 --- a/src/gen/model-decoders/decoders.ts +++ b/src/gen/model-decoders/decoders.ts @@ -3837,6 +3837,8 @@ decoders['ModerationFlagResponse'] = (input?: { [key: string]: any }) => { updated_at: { type: 'DatetimeType', isSingle: true }, + content_published_at: { type: 'DatetimeType', isSingle: true }, + review_queue_item: { type: 'ReviewQueueItemResponse', isSingle: true }, user: { type: 'UserResponse', isSingle: true }, @@ -5425,6 +5427,13 @@ decoders['TranslateCommentResponse'] = (input?: { [key: string]: any }) => { return decode(typeMappings, input); }; +decoders['TranslateMessageResponse'] = (input?: { [key: string]: any }) => { + const typeMappings: TypeMapping = { + message: { type: 'MessageResponse', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders['TruncateChannelResponse'] = (input?: { [key: string]: any }) => { const typeMappings: TypeMapping = { channel: { type: 'ChannelResponse', isSingle: true }, diff --git a/src/gen/models/index.ts b/src/gen/models/index.ts index 05631c2..70678e5 100644 --- a/src/gen/models/index.ts +++ b/src/gen/models/index.ts @@ -49,9 +49,27 @@ export interface AIVideoConfig { enabled?: boolean; + provider?: string; + + rules?: Array; +} + +export interface AIVideoConfigRequest { + async?: boolean; + + enabled?: boolean; + rules?: Array; } +export interface AIVideoConfigResponse { + enabled: boolean; + + rules: Array; + + async?: boolean; +} + export interface APIError { /** * API error code @@ -1113,6 +1131,8 @@ export interface ActivitySelectorConfig { */ sort?: Array; + feed_groups?: FeedGroupScope; + /** * Filter for activity selection */ @@ -1155,6 +1175,8 @@ export interface ActivitySelectorConfigResponse { */ sort?: Array; + feed_groups?: FeedGroupScope; + /** * Filter for activity selection */ @@ -1860,7 +1882,7 @@ export interface AnalyzeResponse { duration: string; /** - * Always `complete` — /analyze is sync-only and the full verdict is in the response. + * `complete` (all fields screened), `partial` (mix of verdicts and per-field errors), or `pending` (async). */ status: string; @@ -1940,10 +1962,14 @@ export interface AppResponseFields { member_custom_on_messages_enabled: boolean; + member_custom_on_typing_events_enabled: boolean; + moderation_audio_call_moderation_enabled: boolean; moderation_enabled: boolean; + moderation_keyframe_video_enabled: boolean; + moderation_llm_configurability_enabled: boolean; moderation_multitenant_blocklist_enabled: boolean; @@ -5398,8 +5424,18 @@ export interface ChannelBatchUpdateRequest { */ filter: Record; + /** + * `updateData` only. Deletes these keys from each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths; deleting a key that does not exist is a no-op. Cannot be combined with `data.custom` + */ + custom_unset?: Array; + members?: Array; + /** + * `updateData` only. Merges these keys into each channel's existing custom object, leaving every other custom key untouched. Keys are dot-paths, so `a.b` sets key `b` inside object `a` (the parent object must already exist). Cannot be combined with `data.custom` + */ + custom_set?: Record; + data?: ChannelDataUpdate; } @@ -8133,7 +8169,7 @@ export interface ConfigResponse { ai_text_config?: AITextConfig; - ai_video_config?: AIVideoConfig; + ai_video_config?: AIVideoConfigResponse; automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig; @@ -8764,6 +8800,9 @@ export interface CreateFeedGroupRequest { */ id: string; + /** + * Role new followers of feeds in this group are given. One of: feed_follower, feed_member_viewer. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval + */ default_follower_role?: string; /** @@ -11232,6 +11271,18 @@ export interface FeedGroupRestoredEvent { received_at?: Date; } +export interface FeedGroupScope { + /** + * Select activities from every feed group except these. An activity cross-posted to an excluded and a non-excluded group is still selected. Mutually exclusive with include + */ + exclude?: Array; + + /** + * Select only activities that live in a feed belonging to one of these feed groups. Mutually exclusive with exclude + */ + include?: Array; +} + export interface FeedInput { description?: string; @@ -13546,6 +13597,9 @@ export interface GetOrCreateCallResponse { } export interface GetOrCreateFeedGroupRequest { + /** + * Role new followers of feeds in this group are given. One of: feed_follower, feed_member_viewer. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval + */ default_follower_role?: string; /** @@ -17244,6 +17298,8 @@ export interface ModerationFlagResponse { result: Array>; + content_published_at?: Date; + entity_creator_id?: string; reason?: string; @@ -25640,6 +25696,18 @@ export interface TranslateMessageRequest { | 'ht'; } +export interface TranslateMessageResponse { + /** + * Duration of the request in milliseconds + */ + duration: string; + + /** + * Represents any chat message + */ + message: MessageResponse; +} + export interface TranslationSettings { enabled?: boolean; @@ -26296,6 +26364,8 @@ export interface UpdateAppRequest { member_custom_on_messages_enabled?: boolean; + member_custom_on_typing_events_enabled?: boolean; + migrate_permissions_to_v2?: boolean; moderation_analytics_enabled?: boolean; @@ -27152,8 +27222,15 @@ export interface UpdateExternalStorageResponse { } export interface UpdateFeedGroupRequest { + /** + * Role new followers of feeds in this group are given. One of: feed_follower, feed_member_viewer. Empty means feed_follower. Applied when the follow is accepted, so a follow that starts pending picks it up on approval + */ default_follower_role?: string; + /** + * Default visibility for the feed group. One of: public, visible, followers, members, private + */ + default_visibility?: 'public' | 'visible' | 'followers' | 'members' | 'private'; @@ -28132,7 +28209,7 @@ export interface UpsertConfigRequest { ai_text_config?: AITextConfig; - ai_video_config?: AIVideoConfig; + ai_video_config?: AIVideoConfigRequest; automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig;