diff --git a/CHANGELOG.md b/CHANGELOG.md index 55b2083..3043790 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [0.4.25](https://github.com/GetStream/stream-node/compare/v0.4.24...v0.4.25) (2025-06-24) + + +### Features + +* Update to API spec v179.7.0 ([#113](https://github.com/GetStream/stream-node/issues/113)) ([898ee9e](https://github.com/GetStream/stream-node/commit/898ee9e692b85075e60147835ff43de3f1179587)) + ## [0.4.24](https://github.com/GetStream/stream-node/compare/v0.4.23...v0.4.24) (2025-05-06) diff --git a/package.json b/package.json index 01eae7d..28b5784 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@stream-io/node-sdk", - "version": "0.4.24", + "version": "0.4.25", "description": "", "exports": { ".": { diff --git a/src/gen/chat/ChatApi.ts b/src/gen/chat/ChatApi.ts index 19d80ab..408a6c7 100644 --- a/src/gen/chat/ChatApi.ts +++ b/src/gen/chat/ChatApi.ts @@ -12,12 +12,14 @@ import { CreateCommandResponse, CreatePollOptionRequest, CreatePollRequest, + CreateReminderRequest, DeleteChannelResponse, DeleteChannelsRequest, DeleteChannelsResponse, DeleteCommandResponse, DeleteMessageResponse, DeleteReactionResponse, + DeleteReminderResponse, DeleteSegmentTargetsRequest, EventResponse, ExportChannelsRequest, @@ -30,6 +32,7 @@ import { GetDraftResponse, GetManyMessagesResponse, GetMessageResponse, + GetPushTemplatesResponse, GetReactionsResponse, GetRepliesResponse, GetSegmentResponse, @@ -71,12 +74,15 @@ import { QueryPollsResponse, QueryReactionsRequest, QueryReactionsResponse, + QueryRemindersRequest, + QueryRemindersResponse, QuerySegmentTargetsRequest, QuerySegmentTargetsResponse, QuerySegmentsRequest, QuerySegmentsResponse, QueryThreadsRequest, QueryThreadsResponse, + ReminderResponseData, Response, SearchPayload, SearchResponse, @@ -116,10 +122,14 @@ import { UpdatePollOptionRequest, UpdatePollPartialRequest, UpdatePollRequest, + UpdateReminderRequest, + UpdateReminderResponse, UpdateThreadPartialRequest, UpdateThreadPartialResponse, UpsertPushPreferencesRequest, UpsertPushPreferencesResponse, + UpsertPushTemplateRequest, + UpsertPushTemplateResponse, WrappedUnreadCountsResponse, } from '../models'; import { decoders } from '../model-decoders'; @@ -790,6 +800,7 @@ export class ChatApi extends BaseApi { skip_push: request?.skip_push, truncated_at: request?.truncated_at, user_id: request?.user_id, + member_ids: request?.member_ids, message: request?.message, user: request?.user, }; @@ -876,6 +887,7 @@ export class ChatApi extends BaseApi { typing_events: request?.typing_events, uploads: request?.uploads, url_enrichment: request?.url_enrichment, + user_message_reminders: request?.user_message_reminders, blocklists: request?.blocklists, commands: request?.commands, permissions: request?.permissions, @@ -957,6 +969,7 @@ export class ChatApi extends BaseApi { typing_events: request?.typing_events, uploads: request?.uploads, url_enrichment: request?.url_enrichment, + user_message_reminders: request?.user_message_reminders, allowed_flag_reasons: request?.allowed_flag_reasons, blocklists: request?.blocklists, commands: request?.commands, @@ -1195,6 +1208,7 @@ export class ChatApi extends BaseApi { const body = { message: request?.message, skip_enrich_url: request?.skip_enrich_url, + skip_push: request?.skip_push, }; const response = await this.sendRequest< @@ -1414,6 +1428,7 @@ export class ChatApi extends BaseApi { const body = { message: request?.message, skip_enrich_url: request?.skip_enrich_url, + skip_push: request?.skip_push, }; const response = await this.sendRequest< @@ -1484,6 +1499,85 @@ export class ChatApi extends BaseApi { return { ...response.body, metadata: response.metadata }; }; + deleteReminder = async (request: { + message_id: string; + user_id?: string; + }): Promise> => { + const queryParams = { + user_id: request?.user_id, + }; + const pathParams = { + message_id: request?.message_id, + }; + + const response = await this.sendRequest< + StreamResponse + >( + 'DELETE', + '/api/v2/chat/messages/{message_id}/reminders', + pathParams, + queryParams, + ); + + decoders.DeleteReminderResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + + updateReminder = async ( + request: UpdateReminderRequest & { message_id: string }, + ): Promise> => { + const pathParams = { + message_id: request?.message_id, + }; + const body = { + remind_at: request?.remind_at, + user_id: request?.user_id, + user: request?.user, + }; + + const response = await this.sendRequest< + StreamResponse + >( + 'PATCH', + '/api/v2/chat/messages/{message_id}/reminders', + pathParams, + undefined, + body, + ); + + decoders.UpdateReminderResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + + createReminder = async ( + request: CreateReminderRequest & { message_id: string }, + ): Promise> => { + const pathParams = { + message_id: request?.message_id, + }; + const body = { + remind_at: request?.remind_at, + user_id: request?.user_id, + user: request?.user, + }; + + const response = await this.sendRequest< + StreamResponse + >( + 'POST', + '/api/v2/chat/messages/{message_id}/reminders', + pathParams, + undefined, + body, + ); + + decoders.ReminderResponseData?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + getReplies = async (request: { parent_id: string; limit?: number; @@ -1908,6 +2002,44 @@ export class ChatApi extends BaseApi { return { ...response.body, metadata: response.metadata }; }; + getPushTemplates = async (request: { + push_provider_type: string; + push_provider_name?: string; + }): Promise> => { + const queryParams = { + push_provider_type: request?.push_provider_type, + push_provider_name: request?.push_provider_name, + }; + + const response = await this.sendRequest< + StreamResponse + >('GET', '/api/v2/chat/push_templates', undefined, queryParams); + + decoders.GetPushTemplatesResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + + upsertPushTemplate = async ( + request: UpsertPushTemplateRequest, + ): Promise> => { + const body = { + event_type: request?.event_type, + push_provider_type: request?.push_provider_type, + enable_push: request?.enable_push, + push_provider_name: request?.push_provider_name, + template: request?.template, + }; + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/chat/push_templates', undefined, undefined, body); + + decoders.UpsertPushTemplateResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + queryBannedUsers = async (request?: { payload?: QueryBannedUsersPayload; }): Promise> => { @@ -1924,6 +2056,28 @@ export class ChatApi extends BaseApi { return { ...response.body, metadata: response.metadata }; }; + queryReminders = async ( + request?: QueryRemindersRequest, + ): Promise> => { + const body = { + limit: request?.limit, + next: request?.next, + prev: request?.prev, + user_id: request?.user_id, + sort: request?.sort, + filter: request?.filter, + user: request?.user, + }; + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/chat/reminders/query', undefined, undefined, body); + + decoders.QueryRemindersResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + search = async (request?: { payload?: SearchPayload; }): Promise> => { diff --git a/src/gen/common/CommonApi.ts b/src/gen/common/CommonApi.ts index 5d574a4..6a52ad7 100644 --- a/src/gen/common/CommonApi.ts +++ b/src/gen/common/CommonApi.ts @@ -33,6 +33,8 @@ import { ExportUserResponse, ExportUsersRequest, ExportUsersResponse, + FileUploadRequest, + FileUploadResponse, GetApplicationResponse, GetBlockListResponse, GetBlockedUsersResponse, @@ -41,6 +43,8 @@ import { GetOGResponse, GetRateLimitsResponse, GetTaskResponse, + ImageUploadRequest, + ImageUploadResponse, ListBlockListResponse, ListDevicesResponse, ListExternalStorageResponse, @@ -115,6 +119,7 @@ export class CommonApi extends BaseApi { sqs_url: request?.sqs_url, webhook_url: request?.webhook_url, allowed_flag_reasons: request?.allowed_flag_reasons, + event_hooks: request?.event_hooks, image_moderation_block_labels: request?.image_moderation_block_labels, image_moderation_labels: request?.image_moderation_labels, user_search_disallowed_roles: request?.user_search_disallowed_roles, @@ -127,6 +132,8 @@ export class CommonApi extends BaseApi { grants: request?.grants, huawei_config: request?.huawei_config, image_upload_config: request?.image_upload_config, + moderation_dashboard_preferences: + request?.moderation_dashboard_preferences, push_config: request?.push_config, xiaomi_config: request?.xiaomi_config, }; @@ -247,6 +254,7 @@ export class CommonApi extends BaseApi { ): Promise> => { const body = { apn_template: request?.apn_template, + event_type: request?.event_type, firebase_data_template: request?.firebase_data_template, firebase_template: request?.firebase_template, message_id: request?.message_id, @@ -751,6 +759,83 @@ export class CommonApi extends BaseApi { return { ...response.body, metadata: response.metadata }; }; + deleteFile = async (request?: { + url?: string; + }): Promise> => { + const queryParams = { + url: request?.url, + }; + + const response = await this.sendRequest>( + 'DELETE', + '/api/v2/uploads/file', + undefined, + queryParams, + ); + + decoders.Response?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + + uploadFile = async ( + request?: FileUploadRequest, + ): Promise> => { + const body = { + file: request?.file, + user: request?.user, + }; + + const response = await this.sendRequest>( + 'POST', + '/api/v2/uploads/file', + undefined, + undefined, + body, + ); + + decoders.FileUploadResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + + deleteImage = async (request?: { + url?: string; + }): Promise> => { + const queryParams = { + url: request?.url, + }; + + const response = await this.sendRequest>( + 'DELETE', + '/api/v2/uploads/image', + undefined, + queryParams, + ); + + decoders.Response?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + + uploadImage = async ( + request?: ImageUploadRequest, + ): Promise> => { + const body = { + file: request?.file, + upload_sizes: request?.upload_sizes, + user: request?.user, + }; + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/uploads/image', undefined, undefined, body); + + decoders.ImageUploadResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + queryUsers = async (request?: { payload?: QueryUsersPayload; }): Promise> => { diff --git a/src/gen/model-decoders/index.ts b/src/gen/model-decoders/index.ts index 435e8b8..002ee56 100644 --- a/src/gen/model-decoders/index.ts +++ b/src/gen/model-decoders/index.ts @@ -60,6 +60,8 @@ decoders.ActionLogResponse = (input?: Record) => { decoders.AppResponseFields = (input?: Record) => { const typeMappings: TypeMapping = { + event_hooks: { type: 'EventHook', isSingle: false }, + call_types: { type: 'CallType', isSingle: false }, channel_configs: { type: 'ChannelConfig', isSingle: false }, @@ -135,6 +137,84 @@ decoders.BlockedUserResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.Call = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + + blocked_users: { type: 'User', isSingle: false }, + + egresses: { type: 'CallEgress', isSingle: false }, + + members: { type: 'CallMember', isSingle: false }, + + deleted_at: { type: 'DatetimeType', isSingle: true }, + + egress_updated_at: { type: 'DatetimeType', isSingle: true }, + + ended_at: { type: 'DatetimeType', isSingle: true }, + + last_heartbeat_at: { type: 'DatetimeType', isSingle: true }, + + starts_at: { type: 'DatetimeType', isSingle: true }, + + call_type: { type: 'CallType', isSingle: true }, + + created_by: { type: 'User', isSingle: true }, + + session: { type: 'CallSession', isSingle: true }, + }; + return decode(typeMappings, input); +}; + +decoders.CallEgress = (input?: Record) => { + const typeMappings: TypeMapping = { + started_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + + stopped_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + +decoders.CallMember = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + + deleted_at: { type: 'DatetimeType', isSingle: true }, + + user: { type: 'User', isSingle: true }, + }; + return decode(typeMappings, input); +}; + +decoders.CallParticipant = (input?: Record) => { + const typeMappings: TypeMapping = { + joined_at: { type: 'DatetimeType', isSingle: true }, + + ban_expires: { type: 'DatetimeType', isSingle: true }, + + created_at: { type: 'DatetimeType', isSingle: true }, + + deactivated_at: { type: 'DatetimeType', isSingle: true }, + + deleted_at: { type: 'DatetimeType', isSingle: true }, + + last_active: { type: 'DatetimeType', isSingle: true }, + + last_engaged_at: { type: 'DatetimeType', isSingle: true }, + + revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.CallParticipantResponse = (input?: Record) => { const typeMappings: TypeMapping = { joined_at: { type: 'DatetimeType', isSingle: true }, @@ -179,6 +259,37 @@ decoders.CallResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.CallSession = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + active_sf_us: { type: 'SFUIDLastSeen', isSingle: false }, + + participants: { type: 'CallParticipant', isSingle: false }, + + accepted_by: { type: 'DatetimeType', isSingle: false }, + + missed_by: { type: 'DatetimeType', isSingle: false }, + + rejected_by: { type: 'DatetimeType', isSingle: false }, + + deleted_at: { type: 'DatetimeType', isSingle: true }, + + ended_at: { type: 'DatetimeType', isSingle: true }, + + live_ended_at: { type: 'DatetimeType', isSingle: true }, + + live_started_at: { type: 'DatetimeType', isSingle: true }, + + ring_at: { type: 'DatetimeType', isSingle: true }, + + started_at: { type: 'DatetimeType', isSingle: true }, + + timer_ends_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.CallSessionResponse = (input?: Record) => { const typeMappings: TypeMapping = { participants: { type: 'CallParticipantResponse', isSingle: false }, @@ -710,6 +821,15 @@ decoders.EntityCreatorResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.EventHook = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.EventResponse = (input?: Record) => { const typeMappings: TypeMapping = { event: { type: 'WSEvent', isSingle: true }, @@ -734,6 +854,8 @@ decoders.Flag = (input?: Record) => { updated_at: { type: 'DatetimeType', isSingle: true }, + review_queue_item: { type: 'ReviewQueueItem', isSingle: true }, + user: { type: 'User', isSingle: true }, }; return decode(typeMappings, input); @@ -801,6 +923,8 @@ decoders.GetBlockedUsersResponse = (input?: Record) => { decoders.GetCallReportResponse = (input?: Record) => { const typeMappings: TypeMapping = { + video_reactions: { type: 'VideoReactionsResponse', isSingle: false }, + chat_activity: { type: 'ChatActivityStatsResponse', isSingle: true }, }; return decode(typeMappings, input); @@ -888,6 +1012,13 @@ decoders.GetOrCreateCallResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.GetPushTemplatesResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + templates: { type: 'PushTemplate', isSingle: false }, + }; + return decode(typeMappings, input); +}; + decoders.GetReactionsResponse = (input?: Record) => { const typeMappings: TypeMapping = { reactions: { type: 'Reaction', isSingle: false }, @@ -1084,6 +1215,8 @@ decoders.Message = (input?: Record) => { quoted_message: { type: 'Message', isSingle: true }, + reminder: { type: 'MessageReminder', isSingle: true }, + user: { type: 'User', isSingle: true }, }; return decode(typeMappings, input); @@ -1145,6 +1278,23 @@ decoders.MessageReadEvent = (input?: Record) => { return decode(typeMappings, input); }; +decoders.MessageReminder = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + + remind_at: { type: 'DatetimeType', isSingle: true }, + + channel: { type: 'Channel', isSingle: true }, + + message: { type: 'Message', isSingle: true }, + + user: { type: 'User', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.MessageResponse = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -1178,6 +1328,8 @@ decoders.MessageResponse = (input?: Record) => { quoted_message: { type: 'MessageResponse', isSingle: true }, reaction_groups: { type: 'ReactionGroupResponse', isSingle: false }, + + reminder: { type: 'ReminderResponseData', isSingle: true }, }; return decode(typeMappings, input); }; @@ -1224,6 +1376,17 @@ decoders.MessageWithChannelResponse = (input?: Record) => { quoted_message: { type: 'MessageResponse', isSingle: true }, reaction_groups: { type: 'ReactionGroupResponse', isSingle: false }, + + reminder: { type: 'ReminderResponseData', isSingle: true }, + }; + return decode(typeMappings, input); +}; + +decoders.ModerationFlagResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + review_queue_item: { type: 'ReviewQueueItem', isSingle: true }, + + user: { type: 'UserResponse', isSingle: true }, }; return decode(typeMappings, input); }; @@ -1424,6 +1587,8 @@ decoders.PushProvider = (input?: Record) => { updated_at: { type: 'DatetimeType', isSingle: true }, disabled_at: { type: 'DatetimeType', isSingle: true }, + + push_templates: { type: 'PushTemplate', isSingle: false }, }; return decode(typeMappings, input); }; @@ -1439,6 +1604,15 @@ decoders.PushProviderResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.PushTemplate = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.QueryBannedUsersResponse = (input?: Record) => { const typeMappings: TypeMapping = { bans: { type: 'BanResponse', isSingle: false }, @@ -1538,6 +1712,13 @@ decoders.QueryModerationConfigsResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.QueryModerationFlagsResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + flags: { type: 'ModerationFlagResponse', isSingle: false }, + }; + return decode(typeMappings, input); +}; + decoders.QueryModerationLogsResponse = (input?: Record) => { const typeMappings: TypeMapping = { logs: { type: 'ActionLogResponse', isSingle: false }, @@ -1559,6 +1740,13 @@ decoders.QueryReactionsResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.QueryRemindersResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + reminders: { type: 'ReminderResponseData', isSingle: false }, + }; + return decode(typeMappings, input); +}; + decoders.QueryReviewQueueResponse = (input?: Record) => { const typeMappings: TypeMapping = { items: { type: 'ReviewQueueItemResponse', isSingle: false }, @@ -1641,6 +1829,23 @@ decoders.ReadStateResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.ReminderResponseData = (input?: Record) => { + const typeMappings: TypeMapping = { + created_at: { type: 'DatetimeType', isSingle: true }, + + updated_at: { type: 'DatetimeType', isSingle: true }, + + remind_at: { type: 'DatetimeType', isSingle: true }, + + channel: { type: 'ChannelResponse', isSingle: true }, + + message: { type: 'Message', isSingle: true }, + + user: { type: 'User', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.ReviewQueueItem = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, @@ -1655,6 +1860,8 @@ decoders.ReviewQueueItem = (input?: Record) => { assigned_to: { type: 'User', isSingle: true }, + call: { type: 'Call', isSingle: true }, + entity_creator: { type: 'EntityCreator', isSingle: true }, feeds_v2_reaction: { type: 'Reaction', isSingle: true }, @@ -1682,6 +1889,8 @@ decoders.ReviewQueueItemResponse = (input?: Record) => { assigned_to: { type: 'UserResponse', isSingle: true }, + call: { type: 'CallResponse', isSingle: true }, + entity_creator: { type: 'EntityCreatorResponse', isSingle: true }, feeds_v2_reaction: { type: 'Reaction', isSingle: true }, @@ -1702,6 +1911,13 @@ decoders.Role = (input?: Record) => { return decode(typeMappings, input); }; +decoders.SFUIDLastSeen = (input?: Record) => { + const typeMappings: TypeMapping = { + last_seen: { type: 'DatetimeType', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.SearchResult = (input?: Record) => { const typeMappings: TypeMapping = { message: { type: 'SearchResultMessage', isSingle: true }, @@ -1744,6 +1960,8 @@ decoders.SearchResultMessage = (input?: Record) => { quoted_message: { type: 'MessageResponse', isSingle: true }, reaction_groups: { type: 'ReactionGroupResponse', isSingle: false }, + + reminder: { type: 'ReminderResponseData', isSingle: true }, }; return decode(typeMappings, input); }; @@ -1998,6 +2216,13 @@ decoders.UpdateMessageResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.UpdateReminderResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + reminder: { type: 'ReminderResponseData', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.UpdateThreadPartialResponse = (input?: Record) => { const typeMappings: TypeMapping = { thread: { type: 'ThreadResponse', isSingle: true }, @@ -2042,6 +2267,13 @@ decoders.UpsertPushProviderResponse = (input?: Record) => { return decode(typeMappings, input); }; +decoders.UpsertPushTemplateResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + template: { type: 'PushTemplate', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.User = (input?: Record) => { const typeMappings: TypeMapping = { ban_expires: { type: 'DatetimeType', isSingle: true }, @@ -2136,6 +2368,20 @@ decoders.UserResponseCommonFields = (input?: Record) => { return decode(typeMappings, input); }; +decoders.VideoReactionOverTimeResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + by_minute: { type: 'CountByMinuteResponse', isSingle: false }, + }; + return decode(typeMappings, input); +}; + +decoders.VideoReactionsResponse = (input?: Record) => { + const typeMappings: TypeMapping = { + count_over_time: { type: 'VideoReactionOverTimeResponse', isSingle: true }, + }; + return decode(typeMappings, input); +}; + decoders.WSEvent = (input?: Record) => { const typeMappings: TypeMapping = { created_at: { type: 'DatetimeType', isSingle: true }, diff --git a/src/gen/models/index.ts b/src/gen/models/index.ts index 638c86d..b746d0e 100644 --- a/src/gen/models/index.ts +++ b/src/gen/models/index.ts @@ -73,8 +73,6 @@ export interface APNConfigFields { enabled: boolean; - notification_template: string; - auth_key?: string; auth_type?: string; @@ -85,6 +83,8 @@ export interface APNConfigFields { key_id?: string; + notification_template?: string; + p12_cert?: string; team_id?: string; @@ -94,6 +94,14 @@ export interface APNS { body: string; title: string; + + content_available?: number; + + mutable_content?: number; + + sound?: string; + + data?: Record; } export interface AWSRekognitionRule { @@ -168,6 +176,22 @@ export interface ActionLogResponse { user?: UserResponse; } +export interface ActionSequence { + action: string; + + blur: boolean; + + cooldown_period: number; + + threshold: number; + + time_window: number; + + warning: boolean; + + warning_text: string; +} + export interface AnyEvent { created_at: Date; @@ -227,8 +251,12 @@ export interface AppResponseFields { suspended_explanation: string; + use_hook_v2: boolean; + webhook_url: string; + event_hooks: EventHook[]; + user_search_disallowed_roles: string[]; webhook_events: string[]; @@ -258,6 +286,26 @@ export interface AppResponseFields { image_moderation_labels?: string[]; datadog_info?: DataDogInfo; + + moderation_dashboard_preferences?: ModerationDashboardPreferences; +} + +export interface AsyncBulkImageModerationEvent { + created_at: Date; + + finished_at: Date; + + started_at: Date; + + task_id: string; + + url: string; + + custom: Record; + + type: string; + + received_at?: Date; } export interface AsyncExportChannelsEvent { @@ -549,6 +597,8 @@ export interface Ban { export interface BanActionRequest { channel_ban_only?: boolean; + delete_messages?: 'soft' | 'pruning' | 'hard'; + ip_ban?: boolean; reason?: string; @@ -565,6 +615,8 @@ export interface BanRequest { channel_cid?: string; + delete_messages?: 'soft' | 'pruning' | 'hard'; + ip_ban?: boolean; reason?: string; @@ -625,6 +677,7 @@ export interface BlockListResponse { export interface BlockListRule { action: | 'flag' + | 'mask_flag' | 'shadow' | 'remove' | 'bounce' @@ -748,6 +801,80 @@ export interface BrowserDataResponse { version?: string; } +export interface BulkImageModerationRequest { + csv_file: string; +} + +export interface BulkImageModerationResponse { + duration: string; + + task_id: string; +} + +export interface Call { + app_pk: number; + + backstage: boolean; + + channel_cid: string; + + cid: string; + + created_at: Date; + + created_by_user_id: string; + + current_session_id: string; + + id: string; + + last_session_id: string; + + team: string; + + thumbnail_url: string; + + type: string; + + updated_at: Date; + + blocked_user_i_ds: string[]; + + blocked_users: User[]; + + egresses: CallEgress[]; + + members: CallMember[]; + + custom: Record; + + deleted_at?: Date; + + egress_updated_at?: Date; + + ended_at?: Date; + + join_ahead_time_seconds?: number; + + last_heartbeat_at?: Date; + + member_count?: number; + + starts_at?: Date; + + call_type?: CallType; + + created_by?: User; + + member_lookup?: MemberLookup; + + session?: CallSession; + + settings?: CallSettings; + + settings_overrides?: CallSettings; +} + export interface CallAcceptedEvent { call_cid: string; @@ -826,6 +953,30 @@ export interface CallDurationReportResponse { daily: DailyAggregateCallDurationReportResponse[]; } +export interface CallEgress { + app_pk: number; + + call_id: string; + + call_type: string; + + egress_id: string; + + egress_type: string; + + instance_ip: string; + + started_at: Date; + + state: string; + + updated_at: Date; + + stopped_at?: Date; + + config?: EgressTaskConfig; +} + export interface CallEndedEvent { call_cid: string; @@ -835,6 +986,8 @@ export interface CallEndedEvent { type: string; + reason?: string; + user?: UserResponse; } @@ -936,6 +1089,22 @@ export interface CallLiveStartedEvent { type: string; } +export interface CallMember { + created_at: Date; + + role: string; + + updated_at: Date; + + user_id: string; + + custom: Record; + + deleted_at?: Date; + + user?: User; +} + export interface CallMemberAddedEvent { call_cid: string; @@ -1004,6 +1173,32 @@ export interface CallMissedEvent { type: string; } +export interface CallModerationBlurEvent { + call_cid: string; + + created_at: Date; + + user_id: string; + + custom: Record; + + type: string; +} + +export interface CallModerationWarningEvent { + call_cid: string; + + created_at: Date; + + message: string; + + user_id: string; + + custom: Record; + + type: string; +} + export interface CallNotificationEvent { call_cid: string; @@ -1020,6 +1215,48 @@ export interface CallNotificationEvent { type: string; } +export interface CallParticipant { + banned: boolean; + + id: string; + + joined_at: Date; + + online: boolean; + + role: string; + + user_session_id: string; + + custom: Record; + + teams_role: Record; + + ban_expires?: Date; + + created_at?: Date; + + deactivated_at?: Date; + + deleted_at?: Date; + + invisible?: boolean; + + language?: string; + + last_active?: Date; + + last_engaged_at?: Date; + + revoke_tokens_issued_before?: Date; + + updated_at?: Date; + + teams?: string[]; + + privacy_settings?: PrivacySettings; +} + export interface CallParticipantCountReport { histogram: ReportByHistogramBucket[]; } @@ -1240,6 +1477,50 @@ export interface CallRtmpBroadcastStoppedEvent { type: string; } +export interface CallSession { + anonymous_participant_count: number; + + app_pk: number; + + call_id: string; + + call_type: string; + + created_at: Date; + + session_id: string; + + active_sf_us: SFUIDLastSeen[]; + + participants: CallParticipant[]; + + sfui_ds: string[]; + + accepted_by: Record; + + missed_by: Record; + + participants_count_by_role: Record; + + rejected_by: Record; + + user_permission_overrides: Record>; + + deleted_at?: Date; + + ended_at?: Date; + + live_ended_at?: Date; + + live_started_at?: Date; + + ring_at?: Date; + + started_at?: Date; + + timer_ends_at?: Date; +} + export interface CallSessionEndedEvent { call_cid: string; @@ -1441,6 +1722,8 @@ export interface CallTranscription { filename: string; + session_id: string; + start_time: Date; url: string; @@ -1454,6 +1737,8 @@ export interface CallTranscriptionFailedEvent { egress_id: string; type: string; + + error?: string; } export interface CallTranscriptionReadyEvent { @@ -1493,8 +1778,6 @@ export interface CallType { created_at: Date; - enable_live_insights: boolean; - external_storage: string; name: string; @@ -1785,6 +2068,8 @@ export interface ChannelConfig { url_enrichment: boolean; + user_message_reminders: boolean; + commands: string[]; blocklist?: string; @@ -1793,7 +2078,7 @@ export interface ChannelConfig { partition_size?: number; - partition_ttl?: string; + partition_ttl?: number; allowed_flag_reasons?: string[]; @@ -1847,6 +2132,8 @@ export interface ChannelConfigWithInfo { url_enrichment: boolean; + user_message_reminders: boolean; + commands: Command[]; blocklist?: string; @@ -2305,6 +2592,8 @@ export interface ChannelTypeConfig { url_enrichment: boolean; + user_message_reminders: boolean; + commands: Command[]; permissions: PolicyRequest[]; @@ -2393,6 +2682,13 @@ export interface CheckExternalStorageResponse { export interface CheckPushRequest { apn_template?: string; + event_type?: + | 'message.new' + | 'message.updated' + | 'reaction.new' + | 'reaction.updated' + | 'notification.reminder_due'; + firebase_data_template?: string; firebase_template?: string; @@ -2413,6 +2709,8 @@ export interface CheckPushRequest { export interface CheckPushResponse { duration: string; + event_type?: string; + rendered_apn_template?: string; rendered_firebase_template?: string; @@ -2548,6 +2846,12 @@ export interface Command { export interface CommitMessageRequest {} +export interface CompositeAppSettings { + json_encoded_settings?: string; + + url?: string; +} + export interface ConfigOverrides { commands: string[]; @@ -2570,6 +2874,8 @@ export interface ConfigOverrides { uploads?: boolean; url_enrichment?: boolean; + + user_message_reminders?: boolean; } export interface ConfigResponse { @@ -2598,6 +2904,8 @@ export interface ConfigResponse { block_list_config?: BlockListConfig; velocity_filter_config?: VelocityFilterConfig; + + video_call_rule_config?: VideoCallRuleConfig; } export interface CountByMinuteResponse { @@ -2699,6 +3007,8 @@ export interface CreateChannelTypeRequest { url_enrichment?: boolean; + user_message_reminders?: boolean; + blocklists?: BlockListOptions[]; commands?: string[]; @@ -2755,6 +3065,8 @@ export interface CreateChannelTypeResponse { url_enrichment: boolean; + user_message_reminders: boolean; + commands: string[]; permissions: PolicyRequest[]; @@ -2902,6 +3214,14 @@ export interface CreatePollRequest { user?: UserRequest; } +export interface CreateReminderRequest { + remind_at?: Date; + + user_id?: string; + + user?: UserRequest; +} + export interface CreateRoleRequest { name: string; } @@ -3128,6 +3448,10 @@ export interface DeleteRecordingResponse { duration: string; } +export interface DeleteReminderResponse { + duration: string; +} + export interface DeleteSegmentTargetsRequest { target_ids: string[]; } @@ -3310,6 +3634,24 @@ export interface EgressResponse { hls?: EgressHLSResponse; } +export interface EgressTaskConfig { + egress_user?: EgressUser; + + frame_recording_egress_config?: FrameRecordingEgressConfig; + + hls_egress_config?: HLSEgressConfig; + + recording_egress_config?: RecordingEgressConfig; + + rtmp_egress_config?: RTMPEgressConfig; + + stt_egress_config?: STTEgressConfig; +} + +export interface EgressUser { + token?: string; +} + export interface EndCallRequest {} export interface EndCallResponse { @@ -3474,10 +3816,56 @@ export interface ErrorResult { version?: string; } +export interface EventHook { + created_at?: Date; + + enabled?: boolean; + + hook_type?: string; + + id?: string; + + sns_auth_type?: string; + + sns_key?: string; + + sns_region?: string; + + sns_role_arn?: string; + + sns_secret?: string; + + sns_topic_arn?: string; + + sqs_auth_type?: string; + + sqs_key?: string; + + sqs_queue_url?: string; + + sqs_region?: string; + + sqs_role_arn?: string; + + sqs_secret?: string; + + timeout_ms?: number; + + updated_at?: Date; + + webhook_url?: string; + + event_types?: string[]; + + callback?: AsyncModerationCallbackConfig; +} + export interface EventNotificationSettings { enabled: boolean; apns: APNS; + + fcm: FCM; } export interface EventRequest { @@ -3518,24 +3906,52 @@ export interface ExportChannelsResponse { task_id: string; } -export interface ExportUserResponse { - duration: string; +export interface ExportUserResponse { + duration: string; + + messages?: MessageResponse[]; + + reactions?: ReactionResponse[]; + + user?: UserResponse; +} + +export interface ExportUsersRequest { + user_ids: string[]; +} + +export interface ExportUsersResponse { + duration: string; + + task_id: string; +} + +export interface ExternalStorage { + abs_account_name?: string; + + abs_client_id?: string; + + abs_client_secret?: string; + + abs_tenant_id?: string; + + bucket?: string; + + gcs_credentials?: string; + + path?: string; - messages?: MessageResponse[]; + s3_api_key?: string; - reactions?: ReactionResponse[]; + s3_custom_endpoint?: string; - user?: UserResponse; -} + s3_region?: string; -export interface ExportUsersRequest { - user_ids: string[]; -} + s3_secret_key?: string; -export interface ExportUsersResponse { - duration: string; + storage_name?: string; - task_id: string; + storage_type?: number; } export interface ExternalStorageResponse { @@ -3548,6 +3964,10 @@ export interface ExternalStorageResponse { type: 's3' | 'gcs' | 'abs'; } +export interface FCM { + data?: Record; +} + export interface FeedsModerationTemplateConfig { config_key: string; @@ -3603,16 +4023,16 @@ export interface FirebaseConfig { } export interface FirebaseConfigFields { - apn_template: string; - - data_template: string; - enabled: boolean; - notification_template: string; + apn_template?: string; credentials_json?: string; + data_template?: string; + + notification_template?: string; + server_key?: string; } @@ -3629,6 +4049,8 @@ export interface Flag { entity_creator_id?: string; + is_streamed_content?: boolean; + moderation_payload_hash?: string; reason?: string; @@ -3643,6 +4065,8 @@ export interface Flag { moderation_payload?: ModerationPayload; + review_queue_item?: ReviewQueueItem; + user?: User; } @@ -3720,6 +4144,16 @@ export interface FrameRecordSettings { quality?: string; } +export interface FrameRecordingEgressConfig { + capture_interval_in_seconds?: number; + + storage_name?: string; + + external_storage?: ExternalStorage; + + quality?: Quality; +} + export interface FrameRecordingResponse { status: string; } @@ -3847,6 +4281,8 @@ export interface GetCallReportResponse { report: ReportResponse; + video_reactions?: VideoReactionsResponse[]; + chat_activity?: ChatActivityStatsResponse; } @@ -3933,6 +4369,8 @@ export interface GetChannelTypeResponse { url_enrichment: boolean; + user_message_reminders: boolean; + commands: Command[]; permissions: PolicyRequest[]; @@ -4092,6 +4530,12 @@ export interface GetOrCreateCallResponse { call: CallResponse; } +export interface GetPushTemplatesResponse { + duration: string; + + templates: PushTemplate[]; +} + export interface GetRateLimitsResponse { duration: string; @@ -4180,6 +4624,16 @@ export interface GroupedStatsResponse { unique: number; } +export interface HLSEgressConfig { + playlist_url?: string; + + start_unix_nano?: number; + + qualities?: Quality[]; + + composite_app_settings?: CompositeAppSettings; +} + export interface HLSSettings { auto_on: boolean; @@ -4210,6 +4664,12 @@ export interface HLSSettingsResponse { layout: LayoutSettingsResponse; } +export interface HarmConfig { + severity: number; + + action_sequences: ActionSequence[]; +} + export interface HideChannelRequest { clear_history?: boolean; @@ -4526,6 +4986,10 @@ export interface MemberAddedEvent { user?: User; } +export interface MemberLookup { + limit: number; +} + export interface MemberRemovedEvent { channel_id: string; @@ -4669,6 +5133,8 @@ export interface Message { quoted_message?: Message; + reminder?: MessageReminder; + user?: User; } @@ -4858,6 +5324,28 @@ export interface MessageReadEvent { user?: UserResponseCommonFields; } +export interface MessageReminder { + channel_cid: string; + + created_at: Date; + + message_id: string; + + task_id: string; + + updated_at: Date; + + user_id: string; + + remind_at?: Date; + + channel?: Channel; + + message?: Message; + + user?: User; +} + export interface MessageRequest { html?: string; @@ -4978,6 +5466,8 @@ export interface MessageResponse { quoted_message?: MessageResponse; reaction_groups?: Record; + + reminder?: ReminderResponseData; } export interface MessageStatsResponse { @@ -5126,6 +5616,8 @@ export interface MessageWithChannelResponse { quoted_message?: MessageResponse; reaction_groups?: Record; + + reminder?: ReminderResponseData; } export interface ModerationActionConfig { @@ -5172,6 +5664,42 @@ export interface ModerationCustomActionEvent { user?: User; } +export interface ModerationDashboardPreferences { + media_queue_blur_enabled?: boolean; +} + +export interface ModerationFlagResponse { + created_at: string; + + entity_id: string; + + entity_type: string; + + id: string; + + type: string; + + updated_at: string; + + entity_creator_id?: string; + + reason?: string; + + review_queue_item_id?: string; + + labels?: string[]; + + result?: Array>; + + custom?: Record; + + moderation_payload?: ModerationPayload; + + review_queue_item?: ReviewQueueItem; + + user?: UserResponse; +} + export interface ModerationFlaggedEvent { created_at: Date; @@ -5883,7 +6411,7 @@ export interface PublisherStatsResponse { } export interface PushConfig { - version: 'v1' | 'v2'; + version: 'v1' | 'v2' | 'v3'; offline_only?: boolean; } @@ -5982,6 +6510,8 @@ export interface PushProvider { xiaomi_app_secret?: string; xiaomi_package_name?: string; + + push_templates?: PushTemplate[]; } export interface PushProviderResponse { @@ -6042,6 +6572,36 @@ export interface PushProviderResponse { xiaomi_package_name?: string; } +export interface PushTemplate { + created_at: Date; + + enable_push: boolean; + + event_type: + | 'message.new' + | 'message.updated' + | 'reaction.new' + | 'notification.reminder_due'; + + updated_at: Date; + + template?: string; +} + +export interface Quality { + bitdepth?: number; + + framerate?: number; + + height?: number; + + name?: string; + + video_bitrate?: number; + + width?: number; +} + export interface QualityScoreReport { histogram: ReportByHistogramBucket[]; } @@ -6368,6 +6928,28 @@ export interface QueryModerationConfigsResponse { prev?: string; } +export interface QueryModerationFlagsRequest { + limit?: number; + + next?: string; + + prev?: string; + + sort?: SortParam[]; + + filter?: Record; +} + +export interface QueryModerationFlagsResponse { + duration: string; + + flags: ModerationFlagResponse[]; + + next?: string; + + prev?: string; +} + export interface QueryModerationLogsRequest { limit?: number; @@ -6454,6 +7036,32 @@ export interface QueryReactionsResponse { prev?: string; } +export interface QueryRemindersRequest { + limit?: number; + + next?: string; + + prev?: string; + + user_id?: string; + + sort?: SortParamRequest[]; + + filter?: Record; + + user?: UserRequest; +} + +export interface QueryRemindersResponse { + duration: string; + + reminders: ReminderResponseData[]; + + next?: string; + + prev?: string; +} + export interface QueryReviewQueueRequest { limit?: number; @@ -6636,6 +7244,14 @@ export interface RTMPBroadcastRequest { layout?: LayoutSettingsRequest; } +export interface RTMPEgressConfig { + rtmp_location?: string; + + composite_app_settings?: CompositeAppSettings; + + quality?: Quality; +} + export interface RTMPIngress { address: string; } @@ -6898,6 +7514,40 @@ export interface RecordSettingsResponse { layout: LayoutSettingsResponse; } +export interface RecordingEgressConfig { + audio_only?: boolean; + + storage_name?: string; + + composite_app_settings?: CompositeAppSettings; + + external_storage?: ExternalStorage; + + quality?: Quality; + + video_orientation_hint?: VideoOrientation; +} + +export interface ReminderResponseData { + channel_cid: string; + + created_at: Date; + + message_id: string; + + updated_at: Date; + + user_id: string; + + remind_at?: Date; + + channel?: ChannelResponse; + + message?: Message; + + user?: User; +} + export interface ReportByHistogramBucket { category: string; @@ -6981,6 +7631,8 @@ export interface ReviewQueueItem { assigned_to?: User; + call?: Call; + entity_creator?: EntityCreator; feeds_v2_activity?: EnrichedActivity; @@ -7055,6 +7707,8 @@ export interface ReviewQueueItemResponse { assigned_to?: UserResponse; + call?: CallResponse; + entity_creator?: EntityCreatorResponse; feeds_v2_activity?: EnrichedActivity; @@ -7180,6 +7834,32 @@ export interface SDKUsageReportResponse { daily: DailyAggregateSDKUsageReportResponse[]; } +export interface SFUIDLastSeen { + id: string; + + last_seen: Date; + + process_start_time: number; +} + +export interface STTEgressConfig { + closed_captions_enabled?: boolean; + + language?: string; + + storage_name?: string; + + translations_enabled?: boolean; + + upload_transcriptions?: boolean; + + whisper_server_base_url?: string; + + translation_languages?: string[]; + + external_storage?: ExternalStorage; +} + export interface ScreensharingSettings { access_request_enabled: boolean; @@ -7320,6 +8000,8 @@ export interface SearchResultMessage { quoted_message?: MessageResponse; reaction_groups?: Record; + + reminder?: ReminderResponseData; } export interface SearchWarning { @@ -7476,6 +8158,12 @@ export interface ShowChannelResponse { duration: string; } +export interface SortParam { + direction?: number; + + field?: string; +} + export interface SortParamRequest { direction?: number; @@ -7704,7 +8392,9 @@ export interface SubmitActionRequest { | 'restore' | 'delete_user' | 'unblock' - | 'shadow_block'; + | 'shadow_block' + | 'kick_user' + | 'end_call'; item_id: string; @@ -8100,6 +8790,8 @@ export interface TruncateChannelRequest { user_id?: string; + member_ids?: string[]; + message?: MessageRequest; user?: UserRequest; @@ -8306,6 +8998,8 @@ export interface UpdateAppRequest { allowed_flag_reasons?: string[]; + event_hooks?: EventHook[]; + image_moderation_block_labels?: string[]; image_moderation_labels?: string[]; @@ -8330,6 +9024,8 @@ export interface UpdateAppRequest { image_upload_config?: FileUploadConfig; + moderation_dashboard_preferences?: ModerationDashboardPreferences; + push_config?: PushConfig; xiaomi_config?: XiaomiConfig; @@ -8512,6 +9208,8 @@ export interface UpdateChannelTypeRequest { url_enrichment?: boolean; + user_message_reminders?: boolean; + allowed_flag_reasons?: string[]; blocklists?: BlockListOptions[]; @@ -8572,6 +9270,8 @@ export interface UpdateChannelTypeResponse { url_enrichment: boolean; + user_message_reminders: boolean; + commands: string[]; permissions: PolicyRequest[]; @@ -8669,6 +9369,8 @@ export interface UpdateMessageRequest { message: MessageRequest; skip_enrich_url?: boolean; + + skip_push?: boolean; } export interface UpdateMessageResponse { @@ -8729,6 +9431,20 @@ export interface UpdatePollRequest { user?: UserRequest; } +export interface UpdateReminderRequest { + remind_at?: Date; + + user_id?: string; + + user?: UserRequest; +} + +export interface UpdateReminderResponse { + duration: string; + + reminder: ReminderResponseData; +} + export interface UpdateThreadPartialRequest { user_id?: string; @@ -8827,6 +9543,8 @@ export interface UpsertConfigRequest { user?: UserRequest; velocity_filter_config?: VelocityFilterConfig; + + video_call_rule_config?: VideoCallRuleConfig; } export interface UpsertConfigResponse { @@ -8878,6 +9596,28 @@ export interface UpsertPushProviderResponse { push_provider: PushProviderResponse; } +export interface UpsertPushTemplateRequest { + event_type: + | 'message.new' + | 'message.updated' + | 'reaction.new' + | 'notification.reminder_due'; + + push_provider_type: 'firebase' | 'apn'; + + enable_push?: boolean; + + push_provider_name?: string; + + template?: string; +} + +export interface UpsertPushTemplateResponse { + duration: string; + + template?: PushTemplate; +} + export interface User { banned: boolean; @@ -9306,6 +10046,28 @@ export interface VelocityFilterConfigRule { slow_spam_ban_duration?: number; } +export interface VideoCallRuleConfig { + rules: Record; +} + +export interface VideoEndCallRequest {} + +export interface VideoKickUserRequest {} + +export interface VideoOrientation { + orientation?: number; +} + +export interface VideoReactionOverTimeResponse { + by_minute?: CountByMinuteResponse[]; +} + +export interface VideoReactionsResponse { + reaction: string; + + count_over_time?: VideoReactionOverTimeResponse; +} + export interface VideoSettings { access_request_enabled: boolean; diff --git a/src/gen/moderation/ModerationApi.ts b/src/gen/moderation/ModerationApi.ts index 6627aac..228bee4 100644 --- a/src/gen/moderation/ModerationApi.ts +++ b/src/gen/moderation/ModerationApi.ts @@ -3,6 +3,8 @@ import { StreamResponse } from '../../types'; import { BanRequest, BanResponse, + BulkImageModerationRequest, + BulkImageModerationResponse, CheckRequest, CheckResponse, CustomCheckRequest, @@ -18,6 +20,8 @@ import { QueryFeedModerationTemplatesResponse, QueryModerationConfigsRequest, QueryModerationConfigsResponse, + QueryModerationFlagsRequest, + QueryModerationFlagsResponse, QueryModerationLogsRequest, QueryModerationLogsResponse, QueryReviewQueueRequest, @@ -41,6 +45,7 @@ export class ModerationApi extends BaseApi { target_user_id: request?.target_user_id, banned_by_id: request?.banned_by_id, channel_cid: request?.channel_cid, + delete_messages: request?.delete_messages, ip_ban: request?.ip_ban, reason: request?.reason, shadow: request?.shadow, @@ -61,6 +66,28 @@ export class ModerationApi extends BaseApi { return { ...response.body, metadata: response.metadata }; }; + bulkImageModeration = async ( + request: BulkImageModerationRequest, + ): Promise> => { + const body = { + csv_file: request?.csv_file, + }; + + const response = await this.sendRequest< + StreamResponse + >( + 'POST', + '/api/v2/moderation/bulk_image_moderation', + undefined, + undefined, + body, + ); + + decoders.BulkImageModerationResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + check = async ( request: CheckRequest, ): Promise> => { @@ -112,6 +139,7 @@ export class ModerationApi extends BaseApi { rule_builder_config: request?.rule_builder_config, user: request?.user, velocity_filter_config: request?.velocity_filter_config, + video_call_rule_config: request?.video_call_rule_config, }; const response = await this.sendRequest< @@ -294,6 +322,26 @@ export class ModerationApi extends BaseApi { return { ...response.body, metadata: response.metadata }; }; + queryModerationFlags = async ( + request?: QueryModerationFlagsRequest, + ): Promise> => { + const body = { + limit: request?.limit, + next: request?.next, + prev: request?.prev, + sort: request?.sort, + filter: request?.filter, + }; + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/moderation/flags', undefined, undefined, body); + + decoders.QueryModerationFlagsResponse?.(response.body); + + return { ...response.body, metadata: response.metadata }; + }; + queryModerationLogs = async ( request?: QueryModerationLogsRequest, ): Promise> => {