From fc4edf510abc8fa7f13ba86993200a0ef1de2fa1 Mon Sep 17 00:00:00 2001 From: zoranmiladinoski Date: Tue, 5 Aug 2025 14:56:02 +0200 Subject: [PATCH] add a new method and corresponding request/response types to support QA testing for the new endpoint GetOrCreateFeedGroup. --- src/gen/common/CommonApi.ts | 2 +- src/gen/feeds/FeedsApi.ts | 32 +++ src/gen/model-decoders/decoders.ts | 96 +++++++++ src/gen/models/index.ts | 328 +++++++++++++++++++++++++++-- 4 files changed, 441 insertions(+), 17 deletions(-) diff --git a/src/gen/common/CommonApi.ts b/src/gen/common/CommonApi.ts index 306383f..f9e76c2 100644 --- a/src/gen/common/CommonApi.ts +++ b/src/gen/common/CommonApi.ts @@ -132,6 +132,7 @@ export class CommonApi { sqs_key: request?.sqs_key, sqs_secret: request?.sqs_secret, sqs_url: request?.sqs_url, + user_response_time_enabled: request?.user_response_time_enabled, webhook_url: request?.webhook_url, allowed_flag_reasons: request?.allowed_flag_reasons, event_hooks: request?.event_hooks, @@ -1379,7 +1380,6 @@ export class CommonApi { user_id: request?.user_id, }; const body = { - created_by_device_id: request?.created_by_device_id, message_id: request?.message_id, end_at: request?.end_at, latitude: request?.latitude, diff --git a/src/gen/feeds/FeedsApi.ts b/src/gen/feeds/FeedsApi.ts index 40ac27b..1f679ca 100644 --- a/src/gen/feeds/FeedsApi.ts +++ b/src/gen/feeds/FeedsApi.ts @@ -45,6 +45,8 @@ import { GetFeedGroupResponse, GetFeedViewResponse, GetFollowSuggestionsResponse, + GetOrCreateFeedGroupRequest, + GetOrCreateFeedGroupResponse, GetOrCreateFeedRequest, GetOrCreateFeedResponse, ListFeedGroupsResponse, @@ -1044,6 +1046,35 @@ export class FeedsApi { return { ...response.body, metadata: response.metadata }; } + async getOrCreateFeedGroup( + request: GetOrCreateFeedGroupRequest & { feed_group_id: string }, + ): Promise> { + const pathParams = { + feed_group_id: request?.feed_group_id, + }; + const body = { + default_view_id: request?.default_view_id, + default_visibility: request?.default_visibility, + custom: request?.custom, + notification: request?.notification, + }; + + const response = await this.apiClient.sendRequest< + StreamResponse + >( + 'POST', + '/api/v2/feeds/feed_groups/{feed_group_id}', + pathParams, + undefined, + body, + 'application/json', + ); + + decoders.GetOrCreateFeedGroupResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + } + async updateFeedGroup( request: UpdateFeedGroupRequest & { feed_group_id: string }, ): Promise> { @@ -1183,6 +1214,7 @@ export class FeedsApi { mark_all_seen: request?.mark_all_seen, user_id: request?.user_id, mark_read: request?.mark_read, + mark_seen: request?.mark_seen, mark_watched: request?.mark_watched, user: request?.user, }; diff --git a/src/gen/model-decoders/decoders.ts b/src/gen/model-decoders/decoders.ts index 15487d2..237aa91 100644 --- a/src/gen/model-decoders/decoders.ts +++ b/src/gen/model-decoders/decoders.ts @@ -917,6 +917,15 @@ decoders.CallSessionEndedEvent = (input?: Record) => { return decode(typeMappings, input); }; +decoders.CallSessionParticipantCountsUpdatedEvent = ( + input?: Record, +) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.CallSessionParticipantJoinedEvent = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -1944,6 +1953,8 @@ decoders.FeedResponse = (input?: Record) => { created_by: { type: 'UserResponse', isSingle: true }, deleted_at: { type: 'DatetimeType', isSingle: true }, + + own_follows: { type: 'FollowResponse', isSingle: false }, }; return decode(typeMappings, input); }; @@ -2262,6 +2273,13 @@ decoders.GetOrCreateCallResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.GetOrCreateFeedGroupResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + feed_group: { type: 'FeedGroupResponse', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.GetOrCreateFeedResponse = (input?: Record) => { const typeMappings: TypeMapping = { activities: { type: 'ActivityResponse', isSingle: false }, @@ -2860,6 +2878,24 @@ decoders.MuteResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.NotificationFeedUpdatedEvent = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + received_at: { type: 'DatetimeType', isSingle: true }, + + aggregated_activities: { + type: 'AggregatedActivityResponse', + isSingle: false, + }, + + notification_status: { type: 'NotificationStatusResponse', isSingle: true }, + + user: { type: 'UserResponseCommonFields', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.NotificationMarkUnreadEvent = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -2875,6 +2911,8 @@ decoders.NotificationMarkUnreadEvent = (input?: Record) => { decoders.NotificationStatusResponse = (input?: Record) => { const typeMappings: TypeMapping = { + last_read_at: { type: 'DatetimeType', isSingle: true }, + last_seen_at: { type: 'DatetimeType', isSingle: true }, }; return decode(typeMappings, input); @@ -3451,6 +3489,39 @@ decoders.RejectFollowResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.ReminderCreatedEvent = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + received_at: { type: 'DatetimeType', isSingle: true }, + + reminder: { type: 'ReminderResponseData', isSingle: true }, + }; + return decode(typeMappings, input); +}; + +decoders.ReminderDeletedEvent = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + received_at: { type: 'DatetimeType', isSingle: true }, + + reminder: { type: 'ReminderResponseData', isSingle: true }, + }; + return decode(typeMappings, input); +}; + +decoders.ReminderNotificationEvent = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + received_at: { type: 'DatetimeType', isSingle: true }, + + reminder: { type: 'ReminderResponseData', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.ReminderResponseData = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -3468,6 +3539,17 @@ decoders.ReminderResponseData = (input?: Record) => { return decode(typeMappings, input); }; +decoders.ReminderUpdatedEvent = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + received_at: { type: 'DatetimeType', isSingle: true }, + + reminder: { type: 'ReminderResponseData', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.ReviewQueueItemNewEvent = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -3818,6 +3900,20 @@ decoders.UnblockedUserEvent = (input?: Record) => { return decode(typeMappings, input); }; +decoders.UnfollowBatchResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + follows: { type: 'FollowResponse', isSingle: false }, + }; + return decode(typeMappings, input); +}; + +decoders.UnfollowResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + follow: { type: 'FollowResponse', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.UnpinActivityResponse = (input?: Record) => { const typeMappings: TypeMapping = { activity: { type: 'ActivityResponse', isSingle: true }, diff --git a/src/gen/models/index.ts b/src/gen/models/index.ts index 9bc6e5f..fadc84e 100644 --- a/src/gen/models/index.ts +++ b/src/gen/models/index.ts @@ -307,6 +307,8 @@ export interface ActivityMarkEvent { mark_read?: string[]; + mark_seen?: string[]; + mark_watched?: string[]; user?: UserResponseCommonFields; @@ -531,7 +533,7 @@ export interface ActivityResponse { moderation?: ModerationV2Response; - object?: Record; + notification_context?: Record; parent?: ActivityResponse; @@ -773,6 +775,8 @@ export interface AppResponseFields { image_moderation_enabled: boolean; + moderation_bulk_submit_action_enabled: boolean; + moderation_enabled: boolean; moderation_multitenant_blocklist_enabled: boolean; @@ -807,6 +811,8 @@ export interface AppResponseFields { use_hook_v2: boolean; + user_response_time_enabled: boolean; + webhook_url: string; event_hooks: EventHook[]; @@ -1890,6 +1896,8 @@ export interface CallParticipant { teams_role: Record; + avg_response_time?: number; + ban_expires?: Date; created_at?: Date; @@ -2191,6 +2199,20 @@ export interface CallSessionEndedEvent { type: string; } +export interface CallSessionParticipantCountsUpdatedEvent { + anonymous_participant_count: number; + + call_cid: string; + + created_at: Date; + + session_id: string; + + participants_count_by_role: Record; + + type: string; +} + export interface CallSessionParticipantJoinedEvent { call_cid: string; @@ -2266,6 +2288,8 @@ export interface CallSettings { geofencing?: GeofenceSettings; + ingress?: IngressSettings; + limits?: LimitsSettings; recording?: RecordSettings; @@ -2294,6 +2318,8 @@ export interface CallSettingsRequest { geofencing?: GeofenceSettingsRequest; + ingress?: IngressSettingsRequest; + limits?: LimitsSettingsRequest; recording?: RecordSettingsRequest; @@ -2337,6 +2363,8 @@ export interface CallSettingsResponse { transcription: TranscriptionSettingsResponse; video: VideoSettingsResponse; + + ingress?: IngressSettingsResponse; } export interface CallStateResponseFields { @@ -4701,6 +4729,8 @@ export interface EntityCreator { teams_role: Record; + avg_response_time?: number; + ban_expires?: Date; created_at?: Date; @@ -4757,6 +4787,8 @@ export interface EntityCreatorResponse { custom: Record; + avg_response_time?: number; + ban_expires?: Date; deactivated_at?: Date; @@ -5230,6 +5262,8 @@ export interface FeedResponse { filter_tags?: string[]; + own_follows?: FollowResponse[]; + custom?: Record; } @@ -5350,29 +5384,33 @@ export interface FirebaseConfigFields { export interface Flag { created_at: Date; - created_by_automod: boolean; + entity_id: string; + + entity_type: string; updated_at: Date; - approved_at?: Date; + result: Array>; - reason?: string; + entity_creator_id?: string; - rejected_at?: Date; + is_streamed_content?: boolean; - reviewed_at?: Date; + moderation_payload_hash?: string; - reviewed_by?: string; + reason?: string; - target_message_id?: string; + review_queue_item_id?: string; - custom?: Record; + type?: string; - details?: FlagDetails; + labels?: string[]; - target_message?: Message; + custom?: Record; - target_user?: User; + moderation_payload?: ModerationPayload; + + review_queue_item?: ReviewQueueItem; user?: User; } @@ -5620,6 +5658,8 @@ export interface FullUserResponse { custom: Record; + avg_response_time?: number; + ban_expires?: Date; deactivated_at?: Date; @@ -5995,6 +6035,29 @@ export interface GetOrCreateCallResponse { call: CallResponse; } +export interface GetOrCreateFeedGroupRequest { + default_view_id?: string; + + default_visibility?: + | 'public' + | 'visible' + | 'followers' + | 'members' + | 'private'; + + custom?: Record; + + notification?: NotificationConfig; +} + +export interface GetOrCreateFeedGroupResponse { + duration: string; + + was_created: boolean; + + feed_group: FeedGroupResponse; +} + export interface GetOrCreateFeedRequest { limit?: number; @@ -6327,6 +6390,102 @@ export interface ImportTaskHistory { prev_state: string; } +export interface IngressAudioEncodingOptions { + bitrate: number; + + channels: '1' | '2'; + + enable_dtx: boolean; +} + +export interface IngressAudioEncodingOptionsRequest { + bitrate: number; + + channels: '1' | '2'; + + enable_dtx?: boolean; +} + +export interface IngressAudioEncodingResponse { + bitrate: number; + + channels: number; + + enable_dtx: boolean; +} + +export interface IngressSettings { + enabled: boolean; + + audio_encoding_options?: IngressAudioEncodingOptions; + + video_encoding_options?: Record; +} + +export interface IngressSettingsRequest { + enabled?: boolean; + + audio_encoding_options?: IngressAudioEncodingOptionsRequest; + + video_encoding_options?: Record; +} + +export interface IngressSettingsResponse { + enabled: boolean; + + audio_encoding_options?: IngressAudioEncodingResponse; + + video_encoding_options?: Record; +} + +export interface IngressVideoEncodingOptions { + layers: IngressVideoLayer[]; +} + +export interface IngressVideoEncodingOptionsRequest { + layers: IngressVideoLayerRequest[]; +} + +export interface IngressVideoEncodingResponse { + layers: IngressVideoLayerResponse[]; +} + +export interface IngressVideoLayer { + bitrate: number; + + codec: 'h264' | 'vp8'; + + frame_rate: number; + + max_dimension: number; + + min_dimension: number; +} + +export interface IngressVideoLayerRequest { + bitrate: number; + + codec: 'h264' | 'vp8'; + + frame_rate_limit: number; + + max_dimension: number; + + min_dimension: number; +} + +export interface IngressVideoLayerResponse { + bitrate: number; + + codec: string; + + frame_rate_limit: number; + + max_dimension: number; + + min_dimension: number; +} + export interface JoinCallAPIMetrics { failures: number; @@ -6516,6 +6675,8 @@ export interface MarkActivityRequest { mark_read?: string[]; + mark_seen?: string[]; + mark_watched?: string[]; user?: UserRequest; @@ -7445,6 +7606,24 @@ export interface NotificationConfig { track_seen?: boolean; } +export interface NotificationFeedUpdatedEvent { + created_at: Date; + + fid: string; + + custom: Record; + + type: string; + + received_at?: Date; + + aggregated_activities?: AggregatedActivityResponse[]; + + notification_status?: NotificationStatusResponse; + + user?: UserResponseCommonFields; +} + export interface NotificationMarkUnreadEvent { channel_id: string; @@ -7502,9 +7681,13 @@ export interface NotificationStatusResponse { unseen: number; + last_read_at?: Date; + last_seen_at?: Date; read_activities?: string[]; + + seen_activities?: string[]; } export interface NullTime {} @@ -7594,6 +7777,8 @@ export interface OwnUser { total_unread_count_by_team: Record; + avg_response_time?: number; + deactivated_at?: Date; deleted_at?: Date; @@ -7652,6 +7837,8 @@ export interface OwnUserResponse { custom: Record; + avg_response_time?: number; + deactivated_at?: Date; deleted_at?: Date; @@ -9457,6 +9644,66 @@ export interface RejectFollowResponse { follow: FollowResponse; } +export interface ReminderCreatedEvent { + cid: string; + + created_at: Date; + + message_id: string; + + user_id: string; + + custom: Record; + + type: string; + + parent_id?: string; + + received_at?: Date; + + reminder?: ReminderResponseData; +} + +export interface ReminderDeletedEvent { + cid: string; + + created_at: Date; + + message_id: string; + + user_id: string; + + custom: Record; + + type: string; + + parent_id?: string; + + received_at?: Date; + + reminder?: ReminderResponseData; +} + +export interface ReminderNotificationEvent { + cid: string; + + created_at: Date; + + message_id: string; + + user_id: string; + + custom: Record; + + type: string; + + parent_id?: string; + + received_at?: Date; + + reminder?: ReminderResponseData; +} + export interface ReminderResponseData { channel_cid: string; @@ -9477,6 +9724,26 @@ export interface ReminderResponseData { user?: User; } +export interface ReminderUpdatedEvent { + cid: string; + + created_at: Date; + + message_id: string; + + user_id: string; + + custom: Record; + + type: string; + + parent_id?: string; + + received_at?: Date; + + reminder?: ReminderResponseData; +} + export interface RepliesMeta { depth_truncated: boolean; @@ -9558,12 +9825,20 @@ export interface ReviewQueueItem { bans: Ban[]; + flag_labels: string[]; + + flag_types: string[]; + flags: Flag[]; languages: string[]; + reporter_ids: string[]; + teams: string[]; + archived_at: NullTime; + completed_at: NullTime; reviewed_at: NullTime; @@ -10466,6 +10741,7 @@ export interface SubmitActionRequest { | 'delete_user' | 'unblock' | 'shadow_block' + | 'unmask' | 'kick_user' | 'end_call'; @@ -11042,10 +11318,14 @@ export interface UnfollowBatchRequest { export interface UnfollowBatchResponse { duration: string; + + follows: FollowResponse[]; } export interface UnfollowResponse { duration: string; + + follow: FollowResponse; } export interface UnmuteChannelRequest { @@ -11129,7 +11409,7 @@ export interface UnreadCountsResponse { threads: UnreadCountsThread[]; - total_unread_count_by_team: Record; + total_unread_count_by_team?: Record; } export interface UnreadCountsThread { @@ -11243,6 +11523,8 @@ export interface UpdateAppRequest { sqs_url?: string; + user_response_time_enabled?: boolean; + webhook_url?: string; allowed_flag_reasons?: string[]; @@ -11719,8 +12001,6 @@ export interface UpdateFollowResponse { } export interface UpdateLiveLocationRequest { - created_by_device_id: string; - message_id: string; end_at?: Date; @@ -12038,6 +12318,8 @@ export interface User { teams_role: Record; + avg_response_time?: number; + ban_expires?: Date; created_at?: Date; @@ -12260,6 +12542,8 @@ export interface UserResponse { custom: Record; + avg_response_time?: number; + ban_expires?: Date; deactivated_at?: Date; @@ -12304,6 +12588,8 @@ export interface UserResponseCommonFields { custom: Record; + avg_response_time?: number; + deactivated_at?: Date; deleted_at?: Date; @@ -12340,6 +12626,8 @@ export interface UserResponsePrivacyFields { custom: Record; + avg_response_time?: number; + deactivated_at?: Date; deleted_at?: Date; @@ -12640,6 +12928,9 @@ export type WebhookEvent = | ({ type: 'call.rtmp_broadcast_started' } & CallRtmpBroadcastStartedEvent) | ({ type: 'call.rtmp_broadcast_stopped' } & CallRtmpBroadcastStoppedEvent) | ({ type: 'call.session_ended' } & CallSessionEndedEvent) + | ({ + type: 'call.session_participant_count_updated'; + } & CallSessionParticipantCountsUpdatedEvent) | ({ type: 'call.session_participant_joined'; } & CallSessionParticipantJoinedEvent) @@ -12715,6 +13006,7 @@ export type WebhookEvent = | ({ type: 'feeds.follow.created' } & FollowCreatedEvent) | ({ type: 'feeds.follow.deleted' } & FollowDeletedEvent) | ({ type: 'feeds.follow.updated' } & FollowUpdatedEvent) + | ({ type: 'feeds.notification_feed.updated' } & NotificationFeedUpdatedEvent) | ({ type: 'flag.updated' } & FlagUpdatedEvent) | ({ type: 'member.added' } & MemberAddedEvent) | ({ type: 'member.removed' } & MemberRemovedEvent) @@ -12732,10 +13024,14 @@ export type WebhookEvent = | ({ type: 'moderation.mark_reviewed' } & ModerationMarkReviewedEvent) | ({ type: 'moderation_check.completed' } & ModerationCheckCompletedEvent) | ({ type: 'notification.mark_unread' } & NotificationMarkUnreadEvent) + | ({ type: 'notification.reminder_due' } & ReminderNotificationEvent) | ({ type: 'notification.thread_message_new' } & MessageNewEvent) | ({ type: 'reaction.deleted' } & ReactionDeletedEvent) | ({ type: 'reaction.new' } & ReactionNewEvent) | ({ type: 'reaction.updated' } & ReactionUpdatedEvent) + | ({ type: 'reminder.created' } & ReminderCreatedEvent) + | ({ type: 'reminder.deleted' } & ReminderDeletedEvent) + | ({ type: 'reminder.updated' } & ReminderUpdatedEvent) | ({ type: 'review_queue_item.new' } & ReviewQueueItemNewEvent) | ({ type: 'review_queue_item.updated' } & ReviewQueueItemUpdatedEvent) | ({ type: 'thread.updated' } & ThreadUpdatedEvent) @@ -12763,7 +13059,7 @@ export interface WrappedUnreadCountsResponse { threads: UnreadCountsThread[]; - total_unread_count_by_team: Record; + total_unread_count_by_team?: Record; } export interface XiaomiConfig {