diff --git a/__tests__/messages.test.ts b/__tests__/messages.test.ts index 09907e6..45b9025 100644 --- a/__tests__/messages.test.ts +++ b/__tests__/messages.test.ts @@ -155,13 +155,14 @@ describe('messages API', () => { }); it('flag', async () => { - const response = await client.flag({ - target_message_id: messageId!, + const response = await client.moderation.v2Flag({ + entity_type: 'stream:chat:v1:message', + entity_id: messageId!, user_id: user.id, - reason: 'disrespectful', + reason: 'hate', }); - expect(response.flag?.target_message_id).toBe(messageId!); + expect(response.item_id).toBeDefined(); }); it('truncate', async () => { diff --git a/__tests__/users.test.ts b/__tests__/users.test.ts index aedf34e..97f1f51 100644 --- a/__tests__/users.test.ts +++ b/__tests__/users.test.ts @@ -98,9 +98,10 @@ describe('user API', () => { }); it('ban and unban', async () => { - await client.ban({ + await client.moderation.v2Ban({ target_user_id: newUser.id, - user_id: user.id, + banned_by_id: user.id, + timeout: 5, }); let queryResponse = await client.queryBannedUsers({ @@ -111,7 +112,10 @@ describe('user API', () => { queryResponse.bans.find((b) => b.user?.id === newUser.id), ).toBeDefined(); - await client.unban({ target_user_id: newUser.id, created_by: user.id }); + await client.moderation.v2Unban({ + target_user_id: newUser.id, + created_by: user.id, + }); queryResponse = await client.queryBannedUsers({ payload: { filter_conditions: {} }, @@ -123,7 +127,7 @@ describe('user API', () => { }); it('mute and unmute', async () => { - const muteResponse = await client.muteUser({ + const muteResponse = await client.moderation.v2Mute({ target_ids: [newUser.id], user_id: user.id, timeout: 5, @@ -131,10 +135,9 @@ describe('user API', () => { expect(muteResponse.mutes?.[0]?.target?.id).toBe(newUser.id); - const unmuteResponse = await client.unmuteUser({ + const unmuteResponse = await client.moderation.v2Unmute({ target_ids: [newUser.id], user_id: user.id, - timeout: 5, }); expect(unmuteResponse).toBeDefined(); diff --git a/src/StreamClient.ts b/src/StreamClient.ts index 7a19674..2ca6f6e 100644 --- a/src/StreamClient.ts +++ b/src/StreamClient.ts @@ -5,6 +5,7 @@ import crypto from 'crypto'; import { StreamChatClient } from './StreamChatClient'; import { CallTokenPayload, RateLimit, UserTokenPayload } from './types'; import { QueryBannedUsersRequest, UserRequest } from './gen/models'; +import { StreamModerationClient } from './StreamModerationClient'; export interface StreamClientOptions { timeout?: number; @@ -14,6 +15,7 @@ export interface StreamClientOptions { export class StreamClient extends CommonApi { public readonly video: StreamVideoClient; public readonly chat: StreamChatClient; + public readonly moderation: StreamModerationClient; public readonly options: StreamClientOptions = {}; private static readonly DEFAULT_TIMEOUT = 3000; @@ -47,6 +49,12 @@ export class StreamClient extends CommonApi { timeout, baseUrl: chatBaseUrl, }); + this.moderation = new StreamModerationClient({ + apiKey, + token, + timeout, + baseUrl: chatBaseUrl, + }); } upsertUsers = (users: UserRequest[]) => { diff --git a/src/StreamModerationClient.ts b/src/StreamModerationClient.ts new file mode 100644 index 0000000..6e62397 --- /dev/null +++ b/src/StreamModerationClient.ts @@ -0,0 +1,3 @@ +import { ModerationApi } from './gen/moderation/ModerationApi'; + +export class StreamModerationClient extends ModerationApi {} diff --git a/src/gen/common/CommonApi.ts b/src/gen/common/CommonApi.ts index 85877b5..bdd7b6f 100644 --- a/src/gen/common/CommonApi.ts +++ b/src/gen/common/CommonApi.ts @@ -1,7 +1,6 @@ import { BaseApi } from '../../BaseApi'; import { StreamResponse } from '../../types'; import { - BanRequest, BlockUsersRequest, BlockUsersResponse, CheckExternalStorageResponse, @@ -33,8 +32,6 @@ import { ExportUserResponse, ExportUsersRequest, ExportUsersResponse, - FlagRequest, - FlagResponse, GetApplicationResponse, GetBlockListResponse, GetBlockedUsersResponse, @@ -50,8 +47,6 @@ import { ListPermissionsResponse, ListPushProvidersResponse, ListRolesResponse, - MuteUserRequest, - MuteUserResponse, QueryUsersPayload, QueryUsersResponse, ReactivateUserRequest, @@ -62,8 +57,6 @@ import { RestoreUsersRequest, UnblockUsersRequest, UnblockUsersResponse, - UnmuteResponse, - UnmuteUserRequest, UpdateAppRequest, UpdateBlockListRequest, UpdateExternalStorageRequest, @@ -75,7 +68,6 @@ import { UpsertPushProviderResponse, } from '../models'; import { - encodeBanRequest, encodeBlockUsersRequest, decodeBlockUsersResponse, decodeCheckExternalStorageResponse, @@ -107,8 +99,6 @@ import { decodeExportUserResponse, encodeExportUsersRequest, decodeExportUsersResponse, - encodeFlagRequest, - decodeFlagResponse, decodeGetApplicationResponse, decodeGetBlockListResponse, decodeGetBlockedUsersResponse, @@ -124,8 +114,6 @@ import { decodeListPermissionsResponse, decodeListPushProvidersResponse, decodeListRolesResponse, - encodeMuteUserRequest, - decodeMuteUserResponse, encodeQueryUsersPayload, decodeQueryUsersResponse, encodeReactivateUserRequest, @@ -136,8 +124,6 @@ import { encodeRestoreUsersRequest, encodeUnblockUsersRequest, decodeUnblockUsersResponse, - decodeUnmuteResponse, - encodeUnmuteUserRequest, encodeUpdateAppRequest, encodeUpdateBlockListRequest, encodeUpdateExternalStorageRequest, @@ -684,141 +670,6 @@ export class CommonApi extends BaseApi { return { ...response.body, responseHeaders: response.headers }; }; - unban = async (request: { - target_user_id: string; - channel_cid?: string; - created_by?: string; - }): Promise> => { - const requestCopy = JSON.parse(JSON.stringify(request ?? {})); - - const queryParams = { - target_user_id: requestCopy.target_user_id, - channel_cid: requestCopy.channel_cid, - created_by: requestCopy.created_by, - }; - - const response = await this.sendRequest>( - 'DELETE', - '/api/v2/moderation/ban', - undefined, - queryParams, - ); - - decodeResponse(response.body); - - return { ...response.body, responseHeaders: response.headers }; - }; - - ban = async (request: BanRequest): Promise> => { - const requestCopy = JSON.parse(JSON.stringify(request ?? {})); - - const body = { - target_user_id: requestCopy.target_user_id, - banned_by_id: requestCopy.banned_by_id, - channel_cid: requestCopy.channel_cid, - ip_ban: requestCopy.ip_ban, - reason: requestCopy.reason, - shadow: requestCopy.shadow, - timeout: requestCopy.timeout, - user_id: requestCopy.user_id, - banned_by: requestCopy.banned_by, - user: requestCopy.user, - }; - encodeBanRequest(body); - - const response = await this.sendRequest>( - 'POST', - '/api/v2/moderation/ban', - undefined, - undefined, - body, - ); - - decodeResponse(response.body); - - return { ...response.body, responseHeaders: response.headers }; - }; - - flag = async ( - request?: FlagRequest, - ): Promise> => { - const requestCopy = JSON.parse(JSON.stringify(request ?? {})); - - const body = { - reason: requestCopy.reason, - target_message_id: requestCopy.target_message_id, - target_user_id: requestCopy.target_user_id, - user_id: requestCopy.user_id, - custom: requestCopy.custom, - user: requestCopy.user, - }; - encodeFlagRequest(body); - - const response = await this.sendRequest>( - 'POST', - '/api/v2/moderation/flag', - undefined, - undefined, - body, - ); - - decodeFlagResponse(response.body); - - return { ...response.body, responseHeaders: response.headers }; - }; - - muteUser = async ( - request: MuteUserRequest, - ): Promise> => { - const requestCopy = JSON.parse(JSON.stringify(request ?? {})); - - const body = { - timeout: requestCopy.timeout, - user_id: requestCopy.user_id, - target_ids: requestCopy.target_ids, - user: requestCopy.user, - }; - encodeMuteUserRequest(body); - - const response = await this.sendRequest>( - 'POST', - '/api/v2/moderation/mute', - undefined, - undefined, - body, - ); - - decodeMuteUserResponse(response.body); - - return { ...response.body, responseHeaders: response.headers }; - }; - - unmuteUser = async ( - request: UnmuteUserRequest, - ): Promise> => { - const requestCopy = JSON.parse(JSON.stringify(request ?? {})); - - const body = { - timeout: requestCopy.timeout, - user_id: requestCopy.user_id, - target_ids: requestCopy.target_ids, - user: requestCopy.user, - }; - encodeUnmuteUserRequest(body); - - const response = await this.sendRequest>( - 'POST', - '/api/v2/moderation/unmute', - undefined, - undefined, - body, - ); - - decodeUnmuteResponse(response.body); - - return { ...response.body, responseHeaders: response.headers }; - }; - getOG = async (request: { url: string; }): Promise> => { diff --git a/src/gen/models-transform/index.ts b/src/gen/models-transform/index.ts index 0a194b5..172675a 100644 --- a/src/gen/models-transform/index.ts +++ b/src/gen/models-transform/index.ts @@ -200,6 +200,50 @@ export const decodeAPNS = (input: Record) => { return input; }; +export const encodeAWSRekognitionConfig = (input: Record) => { + if (!input) return input; + input.enabled = encodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = encodeAWSRekognitionRule(input.rules[key]); + }); + } + + return input; +}; + +export const decodeAWSRekognitionConfig = (input: Record) => { + if (!input) return input; + input.enabled = decodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = decodeAWSRekognitionRule(input.rules[key]); + }); + } + + return input; +}; + +export const encodeAWSRekognitionRule = (input: Record) => { + if (!input) return input; + input.action = encodestring(input.action); + + input.label = encodestring(input.label); + + return input; +}; + +export const decodeAWSRekognitionRule = (input: Record) => { + if (!input) return input; + input.action = decodestring(input.action); + + input.label = decodestring(input.label); + + return input; +}; + export const encodeAction = (input: Record) => { if (!input) return input; input.name = encodestring(input.name); @@ -230,6 +274,98 @@ export const decodeAction = (input: Record) => { return input; }; +export const encodeActionLog = (input: Record) => { + if (!input) return input; + input.created_at = encodeDatetimeType(input.created_at); + + input.id = encodestring(input.id); + + input.reason = encodestring(input.reason); + + input.review_queue_item_id = encodestring(input.review_queue_item_id); + + input.target_user_id = encodestring(input.target_user_id); + + input.type = encodestring(input.type); + + input.custom = encodeobject(input.custom); + + input.review_queue_item = encodeReviewQueueItem(input.review_queue_item); + + input.target_user = encodeUserObject(input.target_user); + + input.user = encodeUserObject(input.user); + + return input; +}; + +export const decodeActionLog = (input: Record) => { + if (!input) return input; + input.created_at = decodeDatetimeType(input.created_at); + + input.id = decodestring(input.id); + + input.reason = decodestring(input.reason); + + input.review_queue_item_id = decodestring(input.review_queue_item_id); + + input.target_user_id = decodestring(input.target_user_id); + + input.type = decodestring(input.type); + + input.custom = decodeobject(input.custom); + + input.review_queue_item = decodeReviewQueueItem(input.review_queue_item); + + input.target_user = decodeUserObject(input.target_user); + + input.user = decodeUserObject(input.user); + + return input; +}; + +export const encodeActionLogResponse = (input: Record) => { + if (!input) return input; + input.created_at = encodeDatetimeType(input.created_at); + + input.id = encodestring(input.id); + + input.reason = encodestring(input.reason); + + input.type = encodestring(input.type); + + input.custom = encodeobject(input.custom); + + input.review_queue_item = encodeReviewQueueItem(input.review_queue_item); + + input.target_user = encodeUserObject(input.target_user); + + input.user = encodeUserObject(input.user); + + return input; +}; + +export const decodeActionLogResponse = (input: Record) => { + if (!input) return input; + input.created_at = decodeDatetimeType(input.created_at); + + input.id = decodestring(input.id); + + input.reason = decodestring(input.reason); + + input.type = decodestring(input.type); + + input.custom = decodeobject(input.custom); + + input.review_queue_item = decodeReviewQueueItem(input.review_queue_item); + + input.target_user = decodeUserObject(input.target_user); + + input.user = decodeUserObject(input.user); + + return input; +}; + export const encodeAggregatedStats = (input: Record) => { if (!input) return input; if (input.countrywise_aggregate_stats) { @@ -908,6 +1044,140 @@ export const decodeAutomodDetails = (input: Record) => { return input; }; +export const encodeAutomodPlatformCircumventionConfig = ( + input: Record, +) => { + if (!input) return input; + input.enabled = encodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = encodeAutomodRule(input.rules[key]); + }); + } + + return input; +}; + +export const decodeAutomodPlatformCircumventionConfig = ( + input: Record, +) => { + if (!input) return input; + input.enabled = decodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = decodeAutomodRule(input.rules[key]); + }); + } + + return input; +}; + +export const encodeAutomodRule = (input: Record) => { + if (!input) return input; + input.action = encodestring(input.action); + + input.label = encodestring(input.label); + + input.threshold = encodenumber(input.threshold); + + return input; +}; + +export const decodeAutomodRule = (input: Record) => { + if (!input) return input; + input.action = decodestring(input.action); + + input.label = decodestring(input.label); + + input.threshold = decodenumber(input.threshold); + + return input; +}; + +export const encodeAutomodSemanticFiltersConfig = ( + input: Record, +) => { + if (!input) return input; + input.enabled = encodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = encodeAutomodSemanticFiltersRule(input.rules[key]); + }); + } + + return input; +}; + +export const decodeAutomodSemanticFiltersConfig = ( + input: Record, +) => { + if (!input) return input; + input.enabled = decodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = decodeAutomodSemanticFiltersRule(input.rules[key]); + }); + } + + return input; +}; + +export const encodeAutomodSemanticFiltersRule = ( + input: Record, +) => { + if (!input) return input; + input.action = encodestring(input.action); + + input.name = encodestring(input.name); + + input.threshold = encodenumber(input.threshold); + + return input; +}; + +export const decodeAutomodSemanticFiltersRule = ( + input: Record, +) => { + if (!input) return input; + input.action = decodestring(input.action); + + input.name = decodestring(input.name); + + input.threshold = decodenumber(input.threshold); + + return input; +}; + +export const encodeAutomodToxicityConfig = (input: Record) => { + if (!input) return input; + input.enabled = encodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = encodeAutomodRule(input.rules[key]); + }); + } + + return input; +}; + +export const decodeAutomodToxicityConfig = (input: Record) => { + if (!input) return input; + input.enabled = decodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = decodeAutomodRule(input.rules[key]); + }); + } + + return input; +}; + export const encodeAzureRequest = (input: Record) => { if (!input) return input; input.abs_account_name = encodestring(input.abs_account_name); @@ -988,59 +1258,115 @@ export const decodeBackstageSettingsResponse = (input: Record) => { return input; }; -export const encodeBanRequest = (input: Record) => { +export const encodeBan = (input: Record) => { if (!input) return input; - input.target_user_id = encodestring(input.target_user_id); - - input.banned_by_id = encodestring(input.banned_by_id); + input.created_at = encodeDatetimeType(input.created_at); - input.channel_cid = encodestring(input.channel_cid); + input.shadow = encodeboolean(input.shadow); - input.ip_ban = encodeboolean(input.ip_ban); + input.expires = encodeDatetimeType(input.expires); input.reason = encodestring(input.reason); - input.shadow = encodeboolean(input.shadow); - - input.timeout = encodeinteger(input.timeout); - - input.user_id = encodestring(input.user_id); + input.channel = encodeChannel(input.channel); - input.banned_by = encodeUserRequest(input.banned_by); + input.created_by = encodeUserObject(input.created_by); - input.user = encodeUserRequest(input.user); + input.target = encodeUserObject(input.target); return input; }; -export const decodeBanRequest = (input: Record) => { +export const decodeBan = (input: Record) => { if (!input) return input; - input.target_user_id = decodestring(input.target_user_id); - - input.banned_by_id = decodestring(input.banned_by_id); + input.created_at = decodeDatetimeType(input.created_at); - input.channel_cid = decodestring(input.channel_cid); + input.shadow = decodeboolean(input.shadow); - input.ip_ban = decodeboolean(input.ip_ban); + input.expires = decodeDatetimeType(input.expires); input.reason = decodestring(input.reason); - input.shadow = decodeboolean(input.shadow); - - input.timeout = decodeinteger(input.timeout); - - input.user_id = decodestring(input.user_id); + input.channel = decodeChannel(input.channel); - input.banned_by = decodeUserRequest(input.banned_by); + input.created_by = decodeUserObject(input.created_by); - input.user = decodeUserRequest(input.user); + input.target = decodeUserObject(input.target); return input; }; -export const encodeBanResponse = (input: Record) => { +export const encodeBanActionRequest = (input: Record) => { if (!input) return input; - input.created_at = encodeDatetimeType(input.created_at); + input.channel_ban_only = encodeboolean(input.channel_ban_only); + + input.reason = encodestring(input.reason); + + input.shadow = encodeboolean(input.shadow); + + input.timeout = encodeinteger(input.timeout); + + return input; +}; + +export const decodeBanActionRequest = (input: Record) => { + if (!input) return input; + input.channel_ban_only = decodeboolean(input.channel_ban_only); + + input.reason = decodestring(input.reason); + + input.shadow = decodeboolean(input.shadow); + + input.timeout = decodeinteger(input.timeout); + + return input; +}; + +export const encodeBanRequest = (input: Record) => { + if (!input) return input; + input.target_user_id = encodestring(input.target_user_id); + + input.timeout = encodeinteger(input.timeout); + + input.banned_by_id = encodestring(input.banned_by_id); + + input.channel_cid = encodestring(input.channel_cid); + + input.ip_ban = encodeboolean(input.ip_ban); + + input.reason = encodestring(input.reason); + + input.shadow = encodeboolean(input.shadow); + + input.banned_by = encodeUserRequest(input.banned_by); + + return input; +}; + +export const decodeBanRequest = (input: Record) => { + if (!input) return input; + input.target_user_id = decodestring(input.target_user_id); + + input.timeout = decodeinteger(input.timeout); + + input.banned_by_id = decodestring(input.banned_by_id); + + input.channel_cid = decodestring(input.channel_cid); + + input.ip_ban = decodeboolean(input.ip_ban); + + input.reason = decodestring(input.reason); + + input.shadow = decodeboolean(input.shadow); + + input.banned_by = decodeUserRequest(input.banned_by); + + return input; +}; + +export const encodeBanResponse = (input: Record) => { + if (!input) return input; + input.created_at = encodeDatetimeType(input.created_at); input.expires = encodeDatetimeType(input.expires); @@ -1076,6 +1402,32 @@ export const decodeBanResponse = (input: Record) => { return input; }; +export const encodeBlockListConfig = (input: Record) => { + if (!input) return input; + input.enabled = encodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = encodeBlockListRule(input.rules[key]); + }); + } + + return input; +}; + +export const decodeBlockListConfig = (input: Record) => { + if (!input) return input; + input.enabled = decodeboolean(input.enabled); + + if (input.rules) { + Object.keys(input.rules).forEach((key) => { + input.rules[key] = decodeBlockListRule(input.rules[key]); + }); + } + + return input; +}; + export const encodeBlockListOptions = (input: Record) => { if (!input) return input; input.behavior = encodestring(input.behavior); @@ -1132,6 +1484,64 @@ export const decodeBlockListResponse = (input: Record) => { return input; }; +export const encodeBlockListRule = (input: Record) => { + if (!input) return input; + input.action = encodestring(input.action); + + input.name = encodestring(input.name); + + return input; +}; + +export const decodeBlockListRule = (input: Record) => { + if (!input) return input; + input.action = decodestring(input.action); + + input.name = decodestring(input.name); + + return input; +}; + +export const encodeBlockRequest = (input: Record) => { + if (!input) return input; + input.blocked_user_id = encodestring(input.blocked_user_id); + + input.user_id = encodestring(input.user_id); + + input.options = encodeobject(input.options); + + input.user = encodeUserRequest(input.user); + + return input; +}; + +export const decodeBlockRequest = (input: Record) => { + if (!input) return input; + input.blocked_user_id = decodestring(input.blocked_user_id); + + input.user_id = decodestring(input.user_id); + + input.options = decodeobject(input.options); + + input.user = decodeUserRequest(input.user); + + return input; +}; + +export const encodeBlockResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + return input; +}; + +export const decodeBlockResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + return input; +}; + export const encodeBlockUserRequest = (input: Record) => { if (!input) return input; input.user_id = encodestring(input.user_id); @@ -1238,6 +1648,24 @@ export const decodeBlockedUserResponse = (input: Record) => { return input; }; +export const encodeBodyguardConfig = (input: Record) => { + if (!input) return input; + input.enabled = encodeboolean(input.enabled); + + input.profile = encodestring(input.profile); + + return input; +}; + +export const decodeBodyguardConfig = (input: Record) => { + if (!input) return input; + input.enabled = decodeboolean(input.enabled); + + input.profile = decodestring(input.profile); + + return input; +}; + export const encodeBroadcastSettings = (input: Record) => { if (!input) return input; input.enabled = encodeboolean(input.enabled); @@ -3514,6 +3942,78 @@ export const decodeCheckPushResponse = (input: Record) => { return input; }; +export const encodeCheckRequest = (input: Record) => { + if (!input) return input; + input.config_key = encodestring(input.config_key); + + input.entity_creator_id = encodestring(input.entity_creator_id); + + input.entity_id = encodestring(input.entity_id); + + input.entity_type = encodestring(input.entity_type); + + input.user_id = encodestring(input.user_id); + + input.moderation_payload = encodeModerationPayload(input.moderation_payload); + + input.options = encodeobject(input.options); + + input.user = encodeUserRequest(input.user); + + return input; +}; + +export const decodeCheckRequest = (input: Record) => { + if (!input) return input; + input.config_key = decodestring(input.config_key); + + input.entity_creator_id = decodestring(input.entity_creator_id); + + input.entity_id = decodestring(input.entity_id); + + input.entity_type = decodestring(input.entity_type); + + input.user_id = decodestring(input.user_id); + + input.moderation_payload = decodeModerationPayload(input.moderation_payload); + + input.options = decodeobject(input.options); + + input.user = decodeUserRequest(input.user); + + return input; +}; + +export const encodeCheckResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + input.recommended_action = encodestring(input.recommended_action); + + input.status = encodestring(input.status); + + input.task_id = encodestring(input.task_id); + + input.item = encodeReviewQueueItem(input.item); + + return input; +}; + +export const decodeCheckResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + input.recommended_action = decodestring(input.recommended_action); + + input.status = decodestring(input.status); + + input.task_id = decodestring(input.task_id); + + input.item = decodeReviewQueueItem(input.item); + + return input; +}; + export const encodeCheckSNSRequest = (input: Record) => { if (!input) return input; input.sns_key = encodestring(input.sns_key); @@ -3744,6 +4244,82 @@ export const decodeConfig = (input: Record) => { return input; }; +export const encodeConfigResponse = (input: Record) => { + if (!input) return input; + input.async = encodeboolean(input.async); + + input.created_at = encodeDatetimeType(input.created_at); + + input.key = encodestring(input.key); + + input.updated_at = encodeDatetimeType(input.updated_at); + + input.automod_platform_circumvention_config = + encodeAutomodPlatformCircumventionConfig( + input.automod_platform_circumvention_config, + ); + + input.automod_semantic_filters_config = encodeAutomodSemanticFiltersConfig( + input.automod_semantic_filters_config, + ); + + input.automod_toxicity_config = encodeAutomodToxicityConfig( + input.automod_toxicity_config, + ); + + input.aws_rek_og_nition_config = encodeAWSRekognitionConfig( + input.aws_rek_og_nition_config, + ); + + input.block_list_config = encodeBlockListConfig(input.block_list_config); + + input.bodyguard_config = encodeBodyguardConfig(input.bodyguard_config); + + input.go_og_le_vision_config = encodeGoogleVisionConfig( + input.go_og_le_vision_config, + ); + + return input; +}; + +export const decodeConfigResponse = (input: Record) => { + if (!input) return input; + input.async = decodeboolean(input.async); + + input.created_at = decodeDatetimeType(input.created_at); + + input.key = decodestring(input.key); + + input.updated_at = decodeDatetimeType(input.updated_at); + + input.automod_platform_circumvention_config = + decodeAutomodPlatformCircumventionConfig( + input.automod_platform_circumvention_config, + ); + + input.automod_semantic_filters_config = decodeAutomodSemanticFiltersConfig( + input.automod_semantic_filters_config, + ); + + input.automod_toxicity_config = decodeAutomodToxicityConfig( + input.automod_toxicity_config, + ); + + input.aws_rek_og_nition_config = decodeAWSRekognitionConfig( + input.aws_rek_og_nition_config, + ); + + input.block_list_config = decodeBlockListConfig(input.block_list_config); + + input.bodyguard_config = decodeBodyguardConfig(input.bodyguard_config); + + input.go_og_le_vision_config = decodeGoogleVisionConfig( + input.go_og_le_vision_config, + ); + + return input; +}; + export const encodeCoordinates = (input: Record) => { if (!input) return input; input.latitude = encodenumber(input.latitude); @@ -4630,20 +5206,140 @@ export const decodeCreateRoleResponse = (input: Record) => { return input; }; -export const encodeDataDogInfo = (input: Record) => { +export const encodeCustomActionRequest = (input: Record) => { if (!input) return input; - input.api_key = encodestring(input.api_key); - - input.enabled = encodeboolean(input.enabled); + input.id = encodestring(input.id); - input.site = encodestring(input.site); + input.options = encodeobject(input.options); return input; }; -export const decodeDataDogInfo = (input: Record) => { +export const decodeCustomActionRequest = (input: Record) => { if (!input) return input; - input.api_key = decodestring(input.api_key); + input.id = decodestring(input.id); + + input.options = decodeobject(input.options); + + return input; +}; + +export const encodeCustomCheckRequest = (input: Record) => { + if (!input) return input; + input.entity_creator_id = encodestring(input.entity_creator_id); + + input.entity_id = encodestring(input.entity_id); + + input.entity_type = encodestring(input.entity_type); + + input.name = encodestring(input.name); + + input.reason = encodestring(input.reason); + + input.recommended_action = encodestring(input.recommended_action); + + input.user_id = encodestring(input.user_id); + + input.moderation_payload = encodeModerationPayload(input.moderation_payload); + + input.user = encodeUserRequest(input.user); + + return input; +}; + +export const decodeCustomCheckRequest = (input: Record) => { + if (!input) return input; + input.entity_creator_id = decodestring(input.entity_creator_id); + + input.entity_id = decodestring(input.entity_id); + + input.entity_type = decodestring(input.entity_type); + + input.name = decodestring(input.name); + + input.reason = decodestring(input.reason); + + input.recommended_action = decodestring(input.recommended_action); + + input.user_id = decodestring(input.user_id); + + input.moderation_payload = decodeModerationPayload(input.moderation_payload); + + input.user = decodeUserRequest(input.user); + + return input; +}; + +export const encodeCustomCheckResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + input.id = encodestring(input.id); + + input.recommended_action = encodestring(input.recommended_action); + + input.scored_at = encodeDatetimeType(input.scored_at); + + input.status = encodestring(input.status); + + input.report = encodearray(input.report); + + input.moderator_action = encodestring(input.moderator_action); + + input.reviewed_at = encodeDatetimeType(input.reviewed_at); + + return input; +}; + +export const decodeCustomCheckResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + input.id = decodestring(input.id); + + input.recommended_action = decodestring(input.recommended_action); + + input.scored_at = decodeDatetimeType(input.scored_at); + + input.status = decodestring(input.status); + + input.report = decodearray(input.report); + + input.moderator_action = decodestring(input.moderator_action); + + input.reviewed_at = decodeDatetimeType(input.reviewed_at); + + return input; +}; + +export const encodeData = (input: Record) => { + if (!input) return input; + input.id = encodestring(input.id); + + return input; +}; + +export const decodeData = (input: Record) => { + if (!input) return input; + input.id = decodestring(input.id); + + return input; +}; + +export const encodeDataDogInfo = (input: Record) => { + if (!input) return input; + input.api_key = encodestring(input.api_key); + + input.enabled = encodeboolean(input.enabled); + + input.site = encodestring(input.site); + + return input; +}; + +export const decodeDataDogInfo = (input: Record) => { + if (!input) return input; + input.api_key = decodestring(input.api_key); input.enabled = decodeboolean(input.enabled); @@ -4740,6 +5436,16 @@ export const decodeDeactivateUsersResponse = (input: Record) => { return input; }; +export const encodeDeleteActivityRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const decodeDeleteActivityRequest = (input: Record) => { + if (!input) return input; + return input; +}; + export const encodeDeleteCallRequest = (input: Record) => { if (!input) return input; input.hard = encodeboolean(input.hard); @@ -4908,6 +5614,20 @@ export const decodeDeleteExternalStorageResponse = ( return input; }; +export const encodeDeleteMessageRequest = (input: Record) => { + if (!input) return input; + input.hard_delete = encodeboolean(input.hard_delete); + + return input; +}; + +export const decodeDeleteMessageRequest = (input: Record) => { + if (!input) return input; + input.hard_delete = decodeboolean(input.hard_delete); + + return input; +}; + export const encodeDeleteMessageResponse = (input: Record) => { if (!input) return input; input.duration = encodestring(input.duration); @@ -4926,6 +5646,20 @@ export const decodeDeleteMessageResponse = (input: Record) => { return input; }; +export const encodeDeleteReactionRequest = (input: Record) => { + if (!input) return input; + input.hard_delete = encodeboolean(input.hard_delete); + + return input; +}; + +export const decodeDeleteReactionRequest = (input: Record) => { + if (!input) return input; + input.hard_delete = decodeboolean(input.hard_delete); + + return input; +}; + export const encodeDeleteRecordingResponse = (input: Record) => { if (!input) return input; input.duration = encodestring(input.duration); @@ -4958,6 +5692,32 @@ export const decodeDeleteTranscriptionResponse = ( return input; }; +export const encodeDeleteUserRequest = (input: Record) => { + if (!input) return input; + input.delete_conversation_channels = encodeboolean( + input.delete_conversation_channels, + ); + + input.hard_delete = encodeboolean(input.hard_delete); + + input.mark_messages_deleted = encodeboolean(input.mark_messages_deleted); + + return input; +}; + +export const decodeDeleteUserRequest = (input: Record) => { + if (!input) return input; + input.delete_conversation_channels = decodeboolean( + input.delete_conversation_channels, + ); + + input.hard_delete = decodeboolean(input.hard_delete); + + input.mark_messages_deleted = decodeboolean(input.mark_messages_deleted); + + return input; +}; + export const encodeDeleteUsersRequest = (input: Record) => { if (!input) return input; if (input.user_ids) { @@ -5187,41 +5947,225 @@ export const encodeEgressResponse = (input: Record) => { return input; }; -export const decodeEgressResponse = (input: Record) => { - if (!input) return input; - input.broadcasting = decodeboolean(input.broadcasting); +export const decodeEgressResponse = (input: Record) => { + if (!input) return input; + input.broadcasting = decodeboolean(input.broadcasting); + + if (input.rtmp_s) { + Object.keys(input.rtmp_s).forEach((key) => { + input.rtmp_s[key] = decodeEgressRTMPResponse(input.rtmp_s[key]); + }); + } + + input.hls = decodeEgressHLSResponse(input.hls); + + return input; +}; + +export const encodeEndCallRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const decodeEndCallRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const encodeEndCallResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + return input; +}; + +export const decodeEndCallResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + return input; +}; + +export const encodeEnrichedActivity = (input: Record) => { + if (!input) return input; + input.foreign_id = encodestring(input.foreign_id); + + input.id = encodestring(input.id); + + input.score = encodenumber(input.score); + + input.verb = encodestring(input.verb); + + if (input.to) { + Object.keys(input.to).forEach((key) => { + input.to[key] = encodestring(input.to[key]); + }); + } + + input.actor = encodeData(input.actor); + + if (input.latest_reactions) { + Object.keys(input.latest_reactions).forEach((key) => { + input.latest_reactions[key] = encodearray(input.latest_reactions[key]); + }); + } + + input.object = encodeData(input.object); + + input.origin = encodeData(input.origin); + + if (input.own_reactions) { + Object.keys(input.own_reactions).forEach((key) => { + input.own_reactions[key] = encodearray(input.own_reactions[key]); + }); + } + + if (input.reaction_counts) { + Object.keys(input.reaction_counts).forEach((key) => { + input.reaction_counts[key] = encodeinteger(input.reaction_counts[key]); + }); + } + + input.target = encodeData(input.target); + + return input; +}; + +export const decodeEnrichedActivity = (input: Record) => { + if (!input) return input; + input.foreign_id = decodestring(input.foreign_id); + + input.id = decodestring(input.id); + + input.score = decodenumber(input.score); + + input.verb = decodestring(input.verb); + + if (input.to) { + Object.keys(input.to).forEach((key) => { + input.to[key] = decodestring(input.to[key]); + }); + } + + input.actor = decodeData(input.actor); + + if (input.latest_reactions) { + Object.keys(input.latest_reactions).forEach((key) => { + input.latest_reactions[key] = decodearray(input.latest_reactions[key]); + }); + } + + input.object = decodeData(input.object); + + input.origin = decodeData(input.origin); + + if (input.own_reactions) { + Object.keys(input.own_reactions).forEach((key) => { + input.own_reactions[key] = decodearray(input.own_reactions[key]); + }); + } + + if (input.reaction_counts) { + Object.keys(input.reaction_counts).forEach((key) => { + input.reaction_counts[key] = decodeinteger(input.reaction_counts[key]); + }); + } + + input.target = decodeData(input.target); + + return input; +}; + +export const encodeEnrichedReaction = (input: Record) => { + if (!input) return input; + input.activity_id = encodestring(input.activity_id); + + input.kind = encodestring(input.kind); + + input.user_id = encodestring(input.user_id); + + input.id = encodestring(input.id); + + input.parent = encodestring(input.parent); + + if (input.target_feeds) { + Object.keys(input.target_feeds).forEach((key) => { + input.target_feeds[key] = encodestring(input.target_feeds[key]); + }); + } + + if (input.children_counts) { + Object.keys(input.children_counts).forEach((key) => { + input.children_counts[key] = encodeinteger(input.children_counts[key]); + }); + } + + input.created_at = encodeTime(input.created_at); + + input.data = encodeobject(input.data); + + if (input.latest_children) { + Object.keys(input.latest_children).forEach((key) => { + input.latest_children[key] = encodearray(input.latest_children[key]); + }); + } + + if (input.own_children) { + Object.keys(input.own_children).forEach((key) => { + input.own_children[key] = encodearray(input.own_children[key]); + }); + } + + input.updated_at = encodeTime(input.updated_at); + + input.user = encodeData(input.user); + + return input; +}; + +export const decodeEnrichedReaction = (input: Record) => { + if (!input) return input; + input.activity_id = decodestring(input.activity_id); + + input.kind = decodestring(input.kind); + + input.user_id = decodestring(input.user_id); + + input.id = decodestring(input.id); + + input.parent = decodestring(input.parent); - if (input.rtmp_s) { - Object.keys(input.rtmp_s).forEach((key) => { - input.rtmp_s[key] = decodeEgressRTMPResponse(input.rtmp_s[key]); + if (input.target_feeds) { + Object.keys(input.target_feeds).forEach((key) => { + input.target_feeds[key] = decodestring(input.target_feeds[key]); }); } - input.hls = decodeEgressHLSResponse(input.hls); + if (input.children_counts) { + Object.keys(input.children_counts).forEach((key) => { + input.children_counts[key] = decodeinteger(input.children_counts[key]); + }); + } - return input; -}; + input.created_at = decodeTime(input.created_at); -export const encodeEndCallRequest = (input: Record) => { - if (!input) return input; - return input; -}; + input.data = decodeobject(input.data); -export const decodeEndCallRequest = (input: Record) => { - if (!input) return input; - return input; -}; + if (input.latest_children) { + Object.keys(input.latest_children).forEach((key) => { + input.latest_children[key] = decodearray(input.latest_children[key]); + }); + } -export const encodeEndCallResponse = (input: Record) => { - if (!input) return input; - input.duration = encodestring(input.duration); + if (input.own_children) { + Object.keys(input.own_children).forEach((key) => { + input.own_children[key] = decodearray(input.own_children[key]); + }); + } - return input; -}; + input.updated_at = decodeTime(input.updated_at); -export const decodeEndCallResponse = (input: Record) => { - if (!input) return input; - input.duration = decodestring(input.duration); + input.user = decodeData(input.user); return input; }; @@ -5516,6 +6460,36 @@ export const decodeExternalStorageResponse = (input: Record) => { return input; }; +export const encodeFeedsModerationTemplateConfig = ( + input: Record, +) => { + if (!input) return input; + input.config_key = encodestring(input.config_key); + + if (input.data_types) { + Object.keys(input.data_types).forEach((key) => { + input.data_types[key] = encodestring(input.data_types[key]); + }); + } + + return input; +}; + +export const decodeFeedsModerationTemplateConfig = ( + input: Record, +) => { + if (!input) return input; + input.config_key = decodestring(input.config_key); + + if (input.data_types) { + Object.keys(input.data_types).forEach((key) => { + input.data_types[key] = decodestring(input.data_types[key]); + }); + } + + return input; +}; + export const encodeField = (input: Record) => { if (!input) return input; input.short = encodeboolean(input.short); @@ -5724,66 +6698,82 @@ export const decodeFirebaseConfigFields = (input: Record) => { return input; }; -export const encodeFlag = (input: Record) => { +export const encodeFlag2 = (input: Record) => { if (!input) return input; input.created_at = encodeDatetimeType(input.created_at); - input.created_by_automod = encodeboolean(input.created_by_automod); + input.entity_id = encodestring(input.entity_id); - input.updated_at = encodeDatetimeType(input.updated_at); + input.entity_type = encodestring(input.entity_type); - input.approved_at = encodeDatetimeType(input.approved_at); + input.updated_at = encodeDatetimeType(input.updated_at); - input.reason = encodestring(input.reason); + if (input.result) { + Object.keys(input.result).forEach((key) => { + input.result[key] = encodeobject(input.result[key]); + }); + } - input.rejected_at = encodeDatetimeType(input.rejected_at); + input.entity_creator_id = encodestring(input.entity_creator_id); - input.reviewed_at = encodeDatetimeType(input.reviewed_at); + input.moderation_payload_hash = encodestring(input.moderation_payload_hash); - input.reviewed_by = encodestring(input.reviewed_by); + input.reason = encodestring(input.reason); - input.target_message_id = encodestring(input.target_message_id); + input.review_queue_item_id = encodestring(input.review_queue_item_id); - input.custom = encodeobject(input.custom); + input.type = encodestring(input.type); - input.details = encodeFlagDetails(input.details); + if (input.labels) { + Object.keys(input.labels).forEach((key) => { + input.labels[key] = encodestring(input.labels[key]); + }); + } - input.target_message = encodeMessage(input.target_message); + input.custom = encodeobject(input.custom); - input.target_user = encodeUserObject(input.target_user); + input.moderation_payload = encodeModerationPayload(input.moderation_payload); input.user = encodeUserObject(input.user); return input; }; -export const decodeFlag = (input: Record) => { +export const decodeFlag2 = (input: Record) => { if (!input) return input; input.created_at = decodeDatetimeType(input.created_at); - input.created_by_automod = decodeboolean(input.created_by_automod); + input.entity_id = decodestring(input.entity_id); - input.updated_at = decodeDatetimeType(input.updated_at); + input.entity_type = decodestring(input.entity_type); - input.approved_at = decodeDatetimeType(input.approved_at); + input.updated_at = decodeDatetimeType(input.updated_at); - input.reason = decodestring(input.reason); + if (input.result) { + Object.keys(input.result).forEach((key) => { + input.result[key] = decodeobject(input.result[key]); + }); + } - input.rejected_at = decodeDatetimeType(input.rejected_at); + input.entity_creator_id = decodestring(input.entity_creator_id); - input.reviewed_at = decodeDatetimeType(input.reviewed_at); + input.moderation_payload_hash = decodestring(input.moderation_payload_hash); - input.reviewed_by = decodestring(input.reviewed_by); + input.reason = decodestring(input.reason); - input.target_message_id = decodestring(input.target_message_id); + input.review_queue_item_id = decodestring(input.review_queue_item_id); - input.custom = decodeobject(input.custom); + input.type = decodestring(input.type); - input.details = decodeFlagDetails(input.details); + if (input.labels) { + Object.keys(input.labels).forEach((key) => { + input.labels[key] = decodestring(input.labels[key]); + }); + } - input.target_message = decodeMessage(input.target_message); + input.custom = decodeobject(input.custom); - input.target_user = decodeUserObject(input.target_user); + input.moderation_payload = decodeModerationPayload(input.moderation_payload); input.user = decodeUserObject(input.user); @@ -5870,16 +6860,20 @@ export const decodeFlagMessageDetails = (input: Record) => { export const encodeFlagRequest = (input: Record) => { if (!input) return input; - input.reason = encodestring(input.reason); + input.entity_id = encodestring(input.entity_id); - input.target_message_id = encodestring(input.target_message_id); + input.entity_type = encodestring(input.entity_type); - input.target_user_id = encodestring(input.target_user_id); + input.reason = encodestring(input.reason); + + input.entity_creator_id = encodestring(input.entity_creator_id); input.user_id = encodestring(input.user_id); input.custom = encodeobject(input.custom); + input.moderation_payload = encodeModerationPayload(input.moderation_payload); + input.user = encodeUserRequest(input.user); return input; @@ -5887,16 +6881,20 @@ export const encodeFlagRequest = (input: Record) => { export const decodeFlagRequest = (input: Record) => { if (!input) return input; - input.reason = decodestring(input.reason); + input.entity_id = decodestring(input.entity_id); - input.target_message_id = decodestring(input.target_message_id); + input.entity_type = decodestring(input.entity_type); - input.target_user_id = decodestring(input.target_user_id); + input.reason = decodestring(input.reason); + + input.entity_creator_id = decodestring(input.entity_creator_id); input.user_id = decodestring(input.user_id); input.custom = decodeobject(input.custom); + input.moderation_payload = decodeModerationPayload(input.moderation_payload); + input.user = decodeUserRequest(input.user); return input; @@ -5906,9 +6904,7 @@ export const encodeFlagResponse = (input: Record) => { if (!input) return input; input.duration = encodestring(input.duration); - input.review_queue_item_id = encodestring(input.review_queue_item_id); - - input.flag = encodeFlag(input.flag); + input.item_id = encodestring(input.item_id); return input; }; @@ -5917,9 +6913,7 @@ export const decodeFlagResponse = (input: Record) => { if (!input) return input; input.duration = decodestring(input.duration); - input.review_queue_item_id = decodestring(input.review_queue_item_id); - - input.flag = decodeFlag(input.flag); + input.item_id = decodestring(input.item_id); return input; }; @@ -6728,6 +7722,24 @@ export const decodeGetCommandResponse = (input: Record) => { return input; }; +export const encodeGetConfigResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + input.config = encodeConfigResponse(input.config); + + return input; +}; + +export const decodeGetConfigResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + input.config = decodeConfigResponse(input.config); + + return input; +}; + export const encodeGetCustomPermissionResponse = ( input: Record, ) => { @@ -7208,6 +8220,40 @@ export const decodeGetRepliesResponse = (input: Record) => { return input; }; +export const encodeGetReviewQueueItemResponse = ( + input: Record, +) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + if (input.history) { + Object.keys(input.history).forEach((key) => { + input.history[key] = encodeReviewQueueItem(input.history[key]); + }); + } + + input.item = encodeReviewQueueItem(input.item); + + return input; +}; + +export const decodeGetReviewQueueItemResponse = ( + input: Record, +) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + if (input.history) { + Object.keys(input.history).forEach((key) => { + input.history[key] = decodeReviewQueueItem(input.history[key]); + }); + } + + input.item = decodeReviewQueueItem(input.item); + + return input; +}; + export const encodeGetTaskResponse = (input: Record) => { if (!input) return input; input.created_at = encodeDatetimeType(input.created_at); @@ -7264,6 +8310,52 @@ export const decodeGetThreadResponse = (input: Record) => { return input; }; +export const encodeGetUserModerationReportResponse = ( + input: Record, +) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + if (input.user_blocks) { + Object.keys(input.user_blocks).forEach((key) => { + input.user_blocks[key] = encodeUserBlock(input.user_blocks[key]); + }); + } + + if (input.user_mutes) { + Object.keys(input.user_mutes).forEach((key) => { + input.user_mutes[key] = encodeUserMute(input.user_mutes[key]); + }); + } + + input.user = encodeUserResponse(input.user); + + return input; +}; + +export const decodeGetUserModerationReportResponse = ( + input: Record, +) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + if (input.user_blocks) { + Object.keys(input.user_blocks).forEach((key) => { + input.user_blocks[key] = decodeUserBlock(input.user_blocks[key]); + }); + } + + if (input.user_mutes) { + Object.keys(input.user_mutes).forEach((key) => { + input.user_mutes[key] = decodeUserMute(input.user_mutes[key]); + }); + } + + input.user = decodeUserResponse(input.user); + + return input; +}; + export const encodeGoLiveRequest = (input: Record) => { if (!input) return input; input.recording_storage_name = encodestring(input.recording_storage_name); @@ -7316,6 +8408,20 @@ export const decodeGoLiveResponse = (input: Record) => { return input; }; +export const encodeGoogleVisionConfig = (input: Record) => { + if (!input) return input; + input.enabled = encodeboolean(input.enabled); + + return input; +}; + +export const decodeGoogleVisionConfig = (input: Record) => { + if (!input) return input; + input.enabled = decodeboolean(input.enabled); + + return input; +}; + export const encodeHLSSettings = (input: Record) => { if (!input) return input; input.auto_on = encodeboolean(input.auto_on); @@ -9743,26 +10849,114 @@ export const decodeMessageWithChannelResponse = ( }); } - if (input.image_labels) { - Object.keys(input.image_labels).forEach((key) => { - input.image_labels[key] = decodearray(input.image_labels[key]); + if (input.image_labels) { + Object.keys(input.image_labels).forEach((key) => { + input.image_labels[key] = decodearray(input.image_labels[key]); + }); + } + + input.pinned_by = decodeUserResponse(input.pinned_by); + + input.poll = decodePoll(input.poll); + + input.quoted_message = decodeMessage(input.quoted_message); + + if (input.reaction_groups) { + Object.keys(input.reaction_groups).forEach((key) => { + input.reaction_groups[key] = decodeReactionGroupResponse( + input.reaction_groups[key], + ); + }); + } + + return input; +}; + +export const encodeModerationActionConfig = (input: Record) => { + if (!input) return input; + input.action = encodestring(input.action); + + input.description = encodestring(input.description); + + input.entity_type = encodestring(input.entity_type); + + input.icon = encodestring(input.icon); + + input.order = encodeinteger(input.order); + + input.custom = encodeobject(input.custom); + + return input; +}; + +export const decodeModerationActionConfig = (input: Record) => { + if (!input) return input; + input.action = decodestring(input.action); + + input.description = decodestring(input.description); + + input.entity_type = decodestring(input.entity_type); + + input.icon = decodestring(input.icon); + + input.order = decodeinteger(input.order); + + input.custom = decodeobject(input.custom); + + return input; +}; + +export const encodeModerationPayload = (input: Record) => { + if (!input) return input; + input.created_at = encodeDatetimeType(input.created_at); + + if (input.images) { + Object.keys(input.images).forEach((key) => { + input.images[key] = encodestring(input.images[key]); + }); + } + + if (input.texts) { + Object.keys(input.texts).forEach((key) => { + input.texts[key] = encodestring(input.texts[key]); + }); + } + + if (input.videos) { + Object.keys(input.videos).forEach((key) => { + input.videos[key] = encodestring(input.videos[key]); }); } - input.pinned_by = decodeUserResponse(input.pinned_by); + input.custom = encodeobject(input.custom); - input.poll = decodePoll(input.poll); + return input; +}; - input.quoted_message = decodeMessage(input.quoted_message); +export const decodeModerationPayload = (input: Record) => { + if (!input) return input; + input.created_at = decodeDatetimeType(input.created_at); - if (input.reaction_groups) { - Object.keys(input.reaction_groups).forEach((key) => { - input.reaction_groups[key] = decodeReactionGroupResponse( - input.reaction_groups[key], - ); + if (input.images) { + Object.keys(input.images).forEach((key) => { + input.images[key] = decodestring(input.images[key]); }); } + if (input.texts) { + Object.keys(input.texts).forEach((key) => { + input.texts[key] = decodestring(input.texts[key]); + }); + } + + if (input.videos) { + Object.keys(input.videos).forEach((key) => { + input.videos[key] = decodestring(input.videos[key]); + }); + } + + input.custom = decodeobject(input.custom); + return input; }; @@ -9792,6 +10986,92 @@ export const decodeModerationResponse = (input: Record) => { return input; }; +export const encodeModerationUsageStats = (input: Record) => { + if (!input) return input; + input.bucket = encodestring(input.bucket); + + input.metric = encodestring(input.metric); + + input.updated_at = encodeDatetimeType(input.updated_at); + + input.value = encodeinteger(input.value); + + return input; +}; + +export const decodeModerationUsageStats = (input: Record) => { + if (!input) return input; + input.bucket = decodestring(input.bucket); + + input.metric = decodestring(input.metric); + + input.updated_at = decodeDatetimeType(input.updated_at); + + input.value = decodeinteger(input.value); + + return input; +}; + +export const encodeModeratorStats = (input: Record) => { + if (!input) return input; + input.id = encodestring(input.id); + + input.items_reviewed = encodeinteger(input.items_reviewed); + + if (input.action_counts) { + Object.keys(input.action_counts).forEach((key) => { + input.action_counts[key] = encodeinteger(input.action_counts[key]); + }); + } + + return input; +}; + +export const decodeModeratorStats = (input: Record) => { + if (!input) return input; + input.id = decodestring(input.id); + + input.items_reviewed = decodeinteger(input.items_reviewed); + + if (input.action_counts) { + Object.keys(input.action_counts).forEach((key) => { + input.action_counts[key] = decodeinteger(input.action_counts[key]); + }); + } + + return input; +}; + +export const encodeModeratorStatsResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + if (input.moderator_stats) { + Object.keys(input.moderator_stats).forEach((key) => { + input.moderator_stats[key] = encodeModeratorStats( + input.moderator_stats[key], + ); + }); + } + + return input; +}; + +export const decodeModeratorStatsResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + if (input.moderator_stats) { + Object.keys(input.moderator_stats).forEach((key) => { + input.moderator_stats[key] = decodeModeratorStats( + input.moderator_stats[key], + ); + }); + } + + return input; +}; + export const encodeMuteChannelRequest = (input: Record) => { if (!input) return input; input.expiration = encodeinteger(input.expiration); @@ -9860,41 +11140,41 @@ export const decodeMuteChannelResponse = (input: Record) => { return input; }; -export const encodeMuteUserRequest = (input: Record) => { +export const encodeMuteRequest = (input: Record) => { if (!input) return input; input.timeout = encodeinteger(input.timeout); - input.user_id = encodestring(input.user_id); - if (input.target_ids) { Object.keys(input.target_ids).forEach((key) => { input.target_ids[key] = encodestring(input.target_ids[key]); }); } + input.user_id = encodestring(input.user_id); + input.user = encodeUserRequest(input.user); return input; }; -export const decodeMuteUserRequest = (input: Record) => { +export const decodeMuteRequest = (input: Record) => { if (!input) return input; input.timeout = decodeinteger(input.timeout); - input.user_id = decodestring(input.user_id); - if (input.target_ids) { Object.keys(input.target_ids).forEach((key) => { input.target_ids[key] = decodestring(input.target_ids[key]); }); } + input.user_id = decodestring(input.user_id); + input.user = decodeUserRequest(input.user); return input; }; -export const encodeMuteUserResponse = (input: Record) => { +export const encodeMuteResponse = (input: Record) => { if (!input) return input; input.duration = encodestring(input.duration); @@ -9912,14 +11192,12 @@ export const encodeMuteUserResponse = (input: Record) => { }); } - input.mute = encodeUserMute(input.mute); - input.own_user = encodeOwnUser(input.own_user); return input; }; -export const decodeMuteUserResponse = (input: Record) => { +export const decodeMuteResponse = (input: Record) => { if (!input) return input; input.duration = decodestring(input.duration); @@ -9937,8 +11215,6 @@ export const decodeMuteUserResponse = (input: Record) => { }); } - input.mute = decodeUserMute(input.mute); - input.own_user = decodeOwnUser(input.own_user); return input; @@ -12156,6 +13432,94 @@ export const decodeQueryMessageHistoryResponse = ( return input; }; +export const encodeQueryModerationLogsRequest = ( + input: Record, +) => { + if (!input) return input; + input.limit = encodeinteger(input.limit); + + input.next = encodestring(input.next); + + input.prev = encodestring(input.prev); + + input.user_id = encodestring(input.user_id); + + if (input.sort) { + Object.keys(input.sort).forEach((key) => { + input.sort[key] = encodeSortParamRequest(input.sort[key]); + }); + } + + input.filter = encodeobject(input.filter); + + input.user = encodeUserRequest(input.user); + + return input; +}; + +export const decodeQueryModerationLogsRequest = ( + input: Record, +) => { + if (!input) return input; + input.limit = decodeinteger(input.limit); + + input.next = decodestring(input.next); + + input.prev = decodestring(input.prev); + + input.user_id = decodestring(input.user_id); + + if (input.sort) { + Object.keys(input.sort).forEach((key) => { + input.sort[key] = decodeSortParamRequest(input.sort[key]); + }); + } + + input.filter = decodeobject(input.filter); + + input.user = decodeUserRequest(input.user); + + return input; +}; + +export const encodeQueryModerationLogsResponse = ( + input: Record, +) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + if (input.l_og_s) { + Object.keys(input.l_og_s).forEach((key) => { + input.l_og_s[key] = encodeActionLogResponse(input.l_og_s[key]); + }); + } + + input.next = encodestring(input.next); + + input.prev = encodestring(input.prev); + + return input; +}; + +export const decodeQueryModerationLogsResponse = ( + input: Record, +) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + if (input.l_og_s) { + Object.keys(input.l_og_s).forEach((key) => { + input.l_og_s[key] = decodeActionLogResponse(input.l_og_s[key]); + }); + } + + input.next = decodestring(input.next); + + input.prev = decodestring(input.prev); + + return input; +}; + export const encodeQueryPollVotesRequest = (input: Record) => { if (!input) return input; input.limit = encodeinteger(input.limit); @@ -12289,14 +13653,106 @@ export const encodeQueryReactionsRequest = (input: Record) => { return input; }; -export const decodeQueryReactionsRequest = (input: Record) => { +export const decodeQueryReactionsRequest = (input: Record) => { + if (!input) return input; + input.limit = decodeinteger(input.limit); + + input.next = decodestring(input.next); + + input.prev = decodestring(input.prev); + + input.user_id = decodestring(input.user_id); + + if (input.sort) { + Object.keys(input.sort).forEach((key) => { + input.sort[key] = decodeSortParamRequest(input.sort[key]); + }); + } + + input.filter = decodeobject(input.filter); + + input.user = decodeUserRequest(input.user); + + return input; +}; + +export const encodeQueryReactionsResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + if (input.reactions) { + Object.keys(input.reactions).forEach((key) => { + input.reactions[key] = encodeReactionResponse(input.reactions[key]); + }); + } + + input.next = encodestring(input.next); + + input.prev = encodestring(input.prev); + + return input; +}; + +export const decodeQueryReactionsResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + if (input.reactions) { + Object.keys(input.reactions).forEach((key) => { + input.reactions[key] = decodeReactionResponse(input.reactions[key]); + }); + } + + input.next = decodestring(input.next); + + input.prev = decodestring(input.prev); + + return input; +}; + +export const encodeQueryReviewQueueRequest = (input: Record) => { + if (!input) return input; + input.limit = encodeinteger(input.limit); + + input.lock_moderator_duration = encodeinteger(input.lock_moderator_duration); + + input.lock_moderator_id = encodestring(input.lock_moderator_id); + + input.next = encodestring(input.next); + + input.prev = encodestring(input.prev); + + input.stats_only = encodeboolean(input.stats_only); + + input.user_id = encodestring(input.user_id); + + if (input.sort) { + Object.keys(input.sort).forEach((key) => { + input.sort[key] = encodeSortParamRequest(input.sort[key]); + }); + } + + input.filter = encodeobject(input.filter); + + input.user = encodeUserRequest(input.user); + + return input; +}; + +export const decodeQueryReviewQueueRequest = (input: Record) => { if (!input) return input; input.limit = decodeinteger(input.limit); + input.lock_moderator_duration = decodeinteger(input.lock_moderator_duration); + + input.lock_moderator_id = decodestring(input.lock_moderator_id); + input.next = decodestring(input.next); input.prev = decodestring(input.prev); + input.stats_only = decodeboolean(input.stats_only); + input.user_id = decodestring(input.user_id); if (input.sort) { @@ -12312,13 +13768,25 @@ export const decodeQueryReactionsRequest = (input: Record) => { return input; }; -export const encodeQueryReactionsResponse = (input: Record) => { +export const encodeQueryReviewQueueResponse = (input: Record) => { if (!input) return input; input.duration = encodestring(input.duration); - if (input.reactions) { - Object.keys(input.reactions).forEach((key) => { - input.reactions[key] = encodeReactionResponse(input.reactions[key]); + if (input.items) { + Object.keys(input.items).forEach((key) => { + input.items[key] = encodeReviewQueueItem(input.items[key]); + }); + } + + if (input.action_config) { + Object.keys(input.action_config).forEach((key) => { + input.action_config[key] = encodearray(input.action_config[key]); + }); + } + + if (input.stats) { + Object.keys(input.stats).forEach((key) => { + input.stats[key] = encodeinteger(input.stats[key]); }); } @@ -12329,13 +13797,25 @@ export const encodeQueryReactionsResponse = (input: Record) => { return input; }; -export const decodeQueryReactionsResponse = (input: Record) => { +export const decodeQueryReviewQueueResponse = (input: Record) => { if (!input) return input; input.duration = decodestring(input.duration); - if (input.reactions) { - Object.keys(input.reactions).forEach((key) => { - input.reactions[key] = decodeReactionResponse(input.reactions[key]); + if (input.items) { + Object.keys(input.items).forEach((key) => { + input.items[key] = decodeReviewQueueItem(input.items[key]); + }); + } + + if (input.action_config) { + Object.keys(input.action_config).forEach((key) => { + input.action_config[key] = decodearray(input.action_config[key]); + }); + } + + if (input.stats) { + Object.keys(input.stats).forEach((key) => { + input.stats[key] = decodeinteger(input.stats[key]); }); } @@ -12422,6 +13902,86 @@ export const decodeQueryThreadsResponse = (input: Record) => { return input; }; +export const encodeQueryUsageStatsRequest = (input: Record) => { + if (!input) return input; + input.limit = encodeinteger(input.limit); + + input.next = encodestring(input.next); + + input.prev = encodestring(input.prev); + + input.user_id = encodestring(input.user_id); + + if (input.sort) { + Object.keys(input.sort).forEach((key) => { + input.sort[key] = encodeSortParamRequest(input.sort[key]); + }); + } + + input.filter = encodeobject(input.filter); + + input.user = encodeUserRequest(input.user); + + return input; +}; + +export const decodeQueryUsageStatsRequest = (input: Record) => { + if (!input) return input; + input.limit = decodeinteger(input.limit); + + input.next = decodestring(input.next); + + input.prev = decodestring(input.prev); + + input.user_id = decodestring(input.user_id); + + if (input.sort) { + Object.keys(input.sort).forEach((key) => { + input.sort[key] = decodeSortParamRequest(input.sort[key]); + }); + } + + input.filter = decodeobject(input.filter); + + input.user = decodeUserRequest(input.user); + + return input; +}; + +export const encodeQueryUsageStatsResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + if (input.items) { + Object.keys(input.items).forEach((key) => { + input.items[key] = encodeModerationUsageStats(input.items[key]); + }); + } + + input.next = encodestring(input.next); + + input.prev = encodestring(input.prev); + + return input; +}; + +export const decodeQueryUsageStatsResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + if (input.items) { + Object.keys(input.items).forEach((key) => { + input.items[key] = decodeModerationUsageStats(input.items[key]); + }); + } + + input.next = decodestring(input.next); + + input.prev = decodestring(input.prev); + + return input; +}; + export const encodeQueryUsersPayload = (input: Record) => { if (!input) return input; input.filter_conditions = encodeobject(input.filter_conditions); @@ -12502,6 +14062,40 @@ export const decodeQueryUsersResponse = (input: Record) => { return input; }; +export const encodeQueueStatsResponse = (input: Record) => { + if (!input) return input; + input.avg_time_to_action = encodeinteger(input.avg_time_to_action); + + input.duration = encodestring(input.duration); + + if (input.time_to_action_buckets) { + Object.keys(input.time_to_action_buckets).forEach((key) => { + input.time_to_action_buckets[key] = encodeinteger( + input.time_to_action_buckets[key], + ); + }); + } + + return input; +}; + +export const decodeQueueStatsResponse = (input: Record) => { + if (!input) return input; + input.avg_time_to_action = decodeinteger(input.avg_time_to_action); + + input.duration = decodestring(input.duration); + + if (input.time_to_action_buckets) { + Object.keys(input.time_to_action_buckets).forEach((key) => { + input.time_to_action_buckets[key] = decodeinteger( + input.time_to_action_buckets[key], + ); + }); + } + + return input; +}; + export const encodeRTMPIngress = (input: Record) => { if (!input) return input; input.address = encodestring(input.address); @@ -12950,6 +14544,16 @@ export const decodeResponse = (input: Record) => { return input; }; +export const encodeRestoreActionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const decodeRestoreActionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + export const encodeRestoreUsersRequest = (input: Record) => { if (!input) return input; if (input.user_ids) { @@ -12972,6 +14576,152 @@ export const decodeRestoreUsersRequest = (input: Record) => { return input; }; +export const encodeReviewQueueItem = (input: Record) => { + if (!input) return input; + input.content_changed = encodeboolean(input.content_changed); + + input.created_at = encodeDatetimeType(input.created_at); + + input.entity_id = encodestring(input.entity_id); + + input.entity_type = encodestring(input.entity_type); + + input.has_image = encodeboolean(input.has_image); + + input.has_text = encodeboolean(input.has_text); + + input.has_video = encodeboolean(input.has_video); + + input.id = encodestring(input.id); + + input.moderation_payload_hash = encodestring(input.moderation_payload_hash); + + input.recommended_action = encodestring(input.recommended_action); + + input.reviewed_by = encodestring(input.reviewed_by); + + input.severity = encodeinteger(input.severity); + + input.status = encodestring(input.status); + + input.updated_at = encodeDatetimeType(input.updated_at); + + if (input.actions) { + Object.keys(input.actions).forEach((key) => { + input.actions[key] = encodeActionLog(input.actions[key]); + }); + } + + if (input.bans) { + Object.keys(input.bans).forEach((key) => { + input.bans[key] = encodeBan(input.bans[key]); + }); + } + + if (input.flags) { + Object.keys(input.flags).forEach((key) => { + input.flags[key] = encodeFlag2(input.flags[key]); + }); + } + + if (input.languages) { + Object.keys(input.languages).forEach((key) => { + input.languages[key] = encodestring(input.languages[key]); + }); + } + + input.completed_at = encodeNullTime(input.completed_at); + + input.reviewed_at = encodeNullTime(input.reviewed_at); + + input.assigned_to = encodeUserObject(input.assigned_to); + + input.entity_creator = encodeUserObject(input.entity_creator); + + input.feeds_v2_activity = encodeEnrichedActivity(input.feeds_v2_activity); + + input.feeds_v2_reaction = encodeReaction(input.feeds_v2_reaction); + + input.message = encodeMessage(input.message); + + input.moderation_payload = encodeModerationPayload(input.moderation_payload); + + return input; +}; + +export const decodeReviewQueueItem = (input: Record) => { + if (!input) return input; + input.content_changed = decodeboolean(input.content_changed); + + input.created_at = decodeDatetimeType(input.created_at); + + input.entity_id = decodestring(input.entity_id); + + input.entity_type = decodestring(input.entity_type); + + input.has_image = decodeboolean(input.has_image); + + input.has_text = decodeboolean(input.has_text); + + input.has_video = decodeboolean(input.has_video); + + input.id = decodestring(input.id); + + input.moderation_payload_hash = decodestring(input.moderation_payload_hash); + + input.recommended_action = decodestring(input.recommended_action); + + input.reviewed_by = decodestring(input.reviewed_by); + + input.severity = decodeinteger(input.severity); + + input.status = decodestring(input.status); + + input.updated_at = decodeDatetimeType(input.updated_at); + + if (input.actions) { + Object.keys(input.actions).forEach((key) => { + input.actions[key] = decodeActionLog(input.actions[key]); + }); + } + + if (input.bans) { + Object.keys(input.bans).forEach((key) => { + input.bans[key] = decodeBan(input.bans[key]); + }); + } + + if (input.flags) { + Object.keys(input.flags).forEach((key) => { + input.flags[key] = decodeFlag2(input.flags[key]); + }); + } + + if (input.languages) { + Object.keys(input.languages).forEach((key) => { + input.languages[key] = decodestring(input.languages[key]); + }); + } + + input.completed_at = decodeNullTime(input.completed_at); + + input.reviewed_at = decodeNullTime(input.reviewed_at); + + input.assigned_to = decodeUserObject(input.assigned_to); + + input.entity_creator = decodeUserObject(input.entity_creator); + + input.feeds_v2_activity = decodeEnrichedActivity(input.feeds_v2_activity); + + input.feeds_v2_reaction = decodeReaction(input.feeds_v2_reaction); + + input.message = decodeMessage(input.message); + + input.moderation_payload = decodeModerationPayload(input.moderation_payload); + + return input; +}; + export const encodeRingSettings = (input: Record) => { if (!input) return input; input.auto_cancel_timeout_ms = encodeinteger(input.auto_cancel_timeout_ms); @@ -14057,34 +15807,102 @@ export const encodeStopRecordingResponse = (input: Record) => { return input; }; -export const decodeStopRecordingResponse = (input: Record) => { +export const decodeStopRecordingResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + return input; +}; + +export const encodeStopTranscriptionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const decodeStopTranscriptionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const encodeStopTranscriptionResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + return input; +}; + +export const decodeStopTranscriptionResponse = (input: Record) => { if (!input) return input; input.duration = decodestring(input.duration); return input; }; -export const encodeStopTranscriptionRequest = (input: Record) => { +export const encodeSubmitActionRequest = (input: Record) => { if (!input) return input; + input.action_type = encodestring(input.action_type); + + input.item_id = encodestring(input.item_id); + + input.user_id = encodestring(input.user_id); + + input.ban = encodeBanActionRequest(input.ban); + + input.custom = encodeCustomActionRequest(input.custom); + + input.delete_message = encodeDeleteMessageRequest(input.delete_message); + + input.delete_reaction = encodeDeleteReactionRequest(input.delete_reaction); + + input.delete_user = encodeDeleteUserRequest(input.delete_user); + + input.unban = encodeUnbanActionRequest(input.unban); + + input.user = encodeUserRequest(input.user); + return input; }; -export const decodeStopTranscriptionRequest = (input: Record) => { +export const decodeSubmitActionRequest = (input: Record) => { if (!input) return input; + input.action_type = decodestring(input.action_type); + + input.item_id = decodestring(input.item_id); + + input.user_id = decodestring(input.user_id); + + input.ban = decodeBanActionRequest(input.ban); + + input.custom = decodeCustomActionRequest(input.custom); + + input.delete_message = decodeDeleteMessageRequest(input.delete_message); + + input.delete_reaction = decodeDeleteReactionRequest(input.delete_reaction); + + input.delete_user = decodeDeleteUserRequest(input.delete_user); + + input.unban = decodeUnbanActionRequest(input.unban); + + input.user = decodeUserRequest(input.user); + return input; }; -export const encodeStopTranscriptionResponse = (input: Record) => { +export const encodeSubmitActionResponse = (input: Record) => { if (!input) return input; input.duration = encodestring(input.duration); + input.item = encodeReviewQueueItem(input.item); + return input; }; -export const decodeStopTranscriptionResponse = (input: Record) => { +export const decodeSubmitActionResponse = (input: Record) => { if (!input) return input; input.duration = decodestring(input.duration); + input.item = decodeReviewQueueItem(input.item); + return input; }; @@ -14658,6 +16476,16 @@ export const decodeThumbnailsSettingsResponse = ( return input; }; +export const encodeTime = (input: Record) => { + if (!input) return input; + return input; +}; + +export const decodeTime = (input: Record) => { + if (!input) return input; + return input; +}; + export const encodeTimeStats = (input: Record) => { if (!input) return input; input.average_seconds = encodenumber(input.average_seconds); @@ -14872,6 +16700,58 @@ export const decodeTypingIndicatorsResponse = (input: Record) => { return input; }; +export const encodeUnbanActionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const decodeUnbanActionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const encodeUnbanRequest = (input: Record) => { + if (!input) return input; + input.unbanned_by_id = encodestring(input.unbanned_by_id); + + input.unbanned_by = encodeUserRequest(input.unbanned_by); + + return input; +}; + +export const decodeUnbanRequest = (input: Record) => { + if (!input) return input; + input.unbanned_by_id = decodestring(input.unbanned_by_id); + + input.unbanned_by = decodeUserRequest(input.unbanned_by); + + return input; +}; + +export const encodeUnbanResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + return input; +}; + +export const decodeUnbanResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + return input; +}; + +export const encodeUnblockActionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + +export const decodeUnblockActionRequest = (input: Record) => { + if (!input) return input; + return input; +}; + export const encodeUnblockUserRequest = (input: Record) => { if (!input) return input; input.user_id = encodestring(input.user_id); @@ -14970,67 +16850,63 @@ export const decodeUnmuteChannelRequest = (input: Record) => { return input; }; -export const encodeUnmuteResponse = (input: Record) => { +export const encodeUnmuteRequest = (input: Record) => { if (!input) return input; - input.duration = encodestring(input.duration); - - if (input.non_existing_users) { - Object.keys(input.non_existing_users).forEach((key) => { - input.non_existing_users[key] = encodestring( - input.non_existing_users[key], - ); + if (input.target_ids) { + Object.keys(input.target_ids).forEach((key) => { + input.target_ids[key] = encodestring(input.target_ids[key]); }); } + input.user_id = encodestring(input.user_id); + + input.user = encodeUserRequest(input.user); + return input; }; -export const decodeUnmuteResponse = (input: Record) => { +export const decodeUnmuteRequest = (input: Record) => { if (!input) return input; - input.duration = decodestring(input.duration); - - if (input.non_existing_users) { - Object.keys(input.non_existing_users).forEach((key) => { - input.non_existing_users[key] = decodestring( - input.non_existing_users[key], - ); + if (input.target_ids) { + Object.keys(input.target_ids).forEach((key) => { + input.target_ids[key] = decodestring(input.target_ids[key]); }); } + input.user_id = decodestring(input.user_id); + + input.user = decodeUserRequest(input.user); + return input; }; -export const encodeUnmuteUserRequest = (input: Record) => { +export const encodeUnmuteResponse = (input: Record) => { if (!input) return input; - input.timeout = encodeinteger(input.timeout); - - input.user_id = encodestring(input.user_id); + input.duration = encodestring(input.duration); - if (input.target_ids) { - Object.keys(input.target_ids).forEach((key) => { - input.target_ids[key] = encodestring(input.target_ids[key]); + if (input.non_existing_users) { + Object.keys(input.non_existing_users).forEach((key) => { + input.non_existing_users[key] = encodestring( + input.non_existing_users[key], + ); }); } - input.user = encodeUserRequest(input.user); - return input; }; -export const decodeUnmuteUserRequest = (input: Record) => { +export const decodeUnmuteResponse = (input: Record) => { if (!input) return input; - input.timeout = decodeinteger(input.timeout); - - input.user_id = decodestring(input.user_id); + input.duration = decodestring(input.duration); - if (input.target_ids) { - Object.keys(input.target_ids).forEach((key) => { - input.target_ids[key] = decodestring(input.target_ids[key]); + if (input.non_existing_users) { + Object.keys(input.non_existing_users).forEach((key) => { + input.non_existing_users[key] = decodestring( + input.non_existing_users[key], + ); }); } - input.user = decodeUserRequest(input.user); - return input; }; @@ -16960,6 +18836,148 @@ export const decodeUpdateUsersResponse = (input: Record) => { return input; }; +export const encodeUpsertConfigRequest = (input: Record) => { + if (!input) return input; + input.key = encodestring(input.key); + + input.async = encodeboolean(input.async); + + input.automod_platform_circumvention_config = + encodeAutomodPlatformCircumventionConfig( + input.automod_platform_circumvention_config, + ); + + input.automod_semantic_filters_config = encodeAutomodSemanticFiltersConfig( + input.automod_semantic_filters_config, + ); + + input.automod_toxicity_config = encodeAutomodToxicityConfig( + input.automod_toxicity_config, + ); + + input.aws_rek_og_nition_config = encodeAWSRekognitionConfig( + input.aws_rek_og_nition_config, + ); + + input.block_list_config = encodeBlockListConfig(input.block_list_config); + + input.bodyguard_config = encodeBodyguardConfig(input.bodyguard_config); + + input.go_og_le_vision_config = encodeGoogleVisionConfig( + input.go_og_le_vision_config, + ); + + return input; +}; + +export const decodeUpsertConfigRequest = (input: Record) => { + if (!input) return input; + input.key = decodestring(input.key); + + input.async = decodeboolean(input.async); + + input.automod_platform_circumvention_config = + decodeAutomodPlatformCircumventionConfig( + input.automod_platform_circumvention_config, + ); + + input.automod_semantic_filters_config = decodeAutomodSemanticFiltersConfig( + input.automod_semantic_filters_config, + ); + + input.automod_toxicity_config = decodeAutomodToxicityConfig( + input.automod_toxicity_config, + ); + + input.aws_rek_og_nition_config = decodeAWSRekognitionConfig( + input.aws_rek_og_nition_config, + ); + + input.block_list_config = decodeBlockListConfig(input.block_list_config); + + input.bodyguard_config = decodeBodyguardConfig(input.bodyguard_config); + + input.go_og_le_vision_config = decodeGoogleVisionConfig( + input.go_og_le_vision_config, + ); + + return input; +}; + +export const encodeUpsertConfigResponse = (input: Record) => { + if (!input) return input; + input.duration = encodestring(input.duration); + + input.config = encodeConfigResponse(input.config); + + return input; +}; + +export const decodeUpsertConfigResponse = (input: Record) => { + if (!input) return input; + input.duration = decodestring(input.duration); + + input.config = decodeConfigResponse(input.config); + + return input; +}; + +export const encodeUpsertModerationTemplateRequest = ( + input: Record, +) => { + if (!input) return input; + input.name = encodestring(input.name); + + input.config = encodeFeedsModerationTemplateConfig(input.config); + + return input; +}; + +export const decodeUpsertModerationTemplateRequest = ( + input: Record, +) => { + if (!input) return input; + input.name = decodestring(input.name); + + input.config = decodeFeedsModerationTemplateConfig(input.config); + + return input; +}; + +export const encodeUpsertModerationTemplateResponse = ( + input: Record, +) => { + if (!input) return input; + input.created_at = encodeDatetimeType(input.created_at); + + input.duration = encodestring(input.duration); + + input.name = encodestring(input.name); + + input.updated_at = encodeDatetimeType(input.updated_at); + + input.config = encodeFeedsModerationTemplateConfig(input.config); + + return input; +}; + +export const decodeUpsertModerationTemplateResponse = ( + input: Record, +) => { + if (!input) return input; + input.created_at = decodeDatetimeType(input.created_at); + + input.duration = decodestring(input.duration); + + input.name = decodestring(input.name); + + input.updated_at = decodeDatetimeType(input.updated_at); + + input.config = decodeFeedsModerationTemplateConfig(input.config); + + return input; +}; + export const encodeUpsertPushProviderRequest = (input: Record) => { if (!input) return input; input.push_provider = encodePushProvider(input.push_provider); @@ -16996,6 +19014,28 @@ export const decodeUpsertPushProviderResponse = ( return input; }; +export const encodeUserBlock = (input: Record) => { + if (!input) return input; + input.blocked_by_user_id = encodestring(input.blocked_by_user_id); + + input.blocked_user_id = encodestring(input.blocked_user_id); + + input.created_at = encodeDatetimeType(input.created_at); + + return input; +}; + +export const decodeUserBlock = (input: Record) => { + if (!input) return input; + input.blocked_by_user_id = decodestring(input.blocked_by_user_id); + + input.blocked_user_id = decodestring(input.blocked_user_id); + + input.created_at = decodeDatetimeType(input.created_at); + + return input; +}; + export const encodeUserCustomEventRequest = (input: Record) => { if (!input) return input; input.type = encodestring(input.type); diff --git a/src/gen/models/index.ts b/src/gen/models/index.ts index 73689e0..6d525b2 100644 --- a/src/gen/models/index.ts +++ b/src/gen/models/index.ts @@ -64,6 +64,18 @@ export interface APNS { title: string; } +export interface AWSRekognitionConfig { + enabled: boolean; + + rules?: AWSRekognitionRule[]; +} + +export interface AWSRekognitionRule { + action: 'flag' | 'shadow_message' | 'remove_message' | 'remove'; + + label: string; +} + export interface Action { name: string; @@ -76,6 +88,46 @@ export interface Action { value?: string; } +export interface ActionLog { + created_at: Date; + + id: string; + + reason: string; + + review_queue_item_id: string; + + target_user_id: string; + + type: string; + + custom: Record; + + review_queue_item?: ReviewQueueItem; + + target_user?: UserObject; + + user?: UserObject; +} + +export interface ActionLogResponse { + created_at: Date; + + id: string; + + reason: string; + + type: string; + + custom: Record; + + review_queue_item?: ReviewQueueItem; + + target_user?: UserObject; + + user?: UserObject; +} + export interface AggregatedStats { countrywise_aggregate_stats?: Record; @@ -292,6 +344,40 @@ export interface AutomodDetails { result?: MessageModerationResult; } +export interface AutomodPlatformCircumventionConfig { + enabled: boolean; + + rules?: AutomodRule[]; +} + +export interface AutomodRule { + action: 'flag' | 'shadow_message' | 'remove_message' | 'remove'; + + label: string; + + threshold: number; +} + +export interface AutomodSemanticFiltersConfig { + enabled: boolean; + + rules?: AutomodSemanticFiltersRule[]; +} + +export interface AutomodSemanticFiltersRule { + action: 'flag' | 'shadow_message' | 'remove_message' | 'remove'; + + name: string; + + threshold: number; +} + +export interface AutomodToxicityConfig { + enabled: boolean; + + rules?: AutomodRule[]; +} + export interface AzureRequest { abs_account_name: string; @@ -320,9 +406,37 @@ export interface BackstageSettingsResponse { join_ahead_time_seconds?: number; } +export interface Ban { + created_at: Date; + + shadow: boolean; + + expires?: Date; + + reason?: string; + + channel?: Channel; + + created_by?: UserObject; + + target?: UserObject; +} + +export interface BanActionRequest { + channel_ban_only?: boolean; + + reason?: string; + + shadow?: boolean; + + timeout?: number; +} + export interface BanRequest { target_user_id: string; + timeout: number; + banned_by_id?: string; channel_cid?: string; @@ -333,13 +447,7 @@ export interface BanRequest { shadow?: boolean; - timeout?: number; - - user_id?: string; - banned_by?: UserRequest; - - user?: UserRequest; } export interface BanResponse { @@ -358,6 +466,12 @@ export interface BanResponse { user?: UserObject; } +export interface BlockListConfig { + enabled: boolean; + + rules?: BlockListRule[]; +} + export interface BlockListOptions { behavior: 'flag' | 'block' | 'shadow_block'; @@ -376,6 +490,26 @@ export interface BlockListResponse { updated_at?: Date; } +export interface BlockListRule { + action: 'flag' | 'shadow_message' | 'remove_message' | 'remove'; + + name: string; +} + +export interface BlockRequest { + blocked_user_id: string; + + user_id: string; + + options?: Record; + + user?: UserRequest; +} + +export interface BlockResponse { + duration: string; +} + export interface BlockUserRequest { user_id: string; } @@ -414,6 +548,12 @@ export interface BlockedUserResponse { user: UserResponse; } +export interface BodyguardConfig { + enabled: boolean; + + profile?: string; +} + export interface BroadcastSettings { enabled: boolean; @@ -1210,6 +1350,36 @@ export interface CheckPushResponse { rendered_message?: Record; } +export interface CheckRequest { + config_key: string; + + entity_creator_id: string; + + entity_id: string; + + entity_type: string; + + user_id?: string; + + moderation_payload?: ModerationPayload; + + options?: Record; + + user?: UserRequest; +} + +export interface CheckResponse { + duration: string; + + recommended_action: string; + + status: string; + + task_id?: string; + + item?: ReviewQueueItem; +} + export interface CheckSNSRequest { sns_key?: string; @@ -1290,6 +1460,30 @@ export interface Config { role_map?: Record; } +export interface ConfigResponse { + async: boolean; + + created_at: Date; + + key: string; + + updated_at: Date; + + automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig; + + automod_semantic_filters_config?: AutomodSemanticFiltersConfig; + + automod_toxicity_config?: AutomodToxicityConfig; + + aws_rek_og_nition_config?: AWSRekognitionConfig; + + block_list_config?: BlockListConfig; + + bodyguard_config?: BodyguardConfig; + + go_og_le_vision_config?: GoogleVisionConfig; +} + export interface Coordinates { latitude: number; @@ -1600,6 +1794,54 @@ export interface CreateRoleResponse { role: Role; } +export interface CustomActionRequest { + id?: string; + + options?: Record; +} + +export interface CustomCheckRequest { + entity_creator_id: string; + + entity_id: string; + + entity_type: string; + + name?: string; + + reason?: string; + + recommended_action?: string; + + user_id?: string; + + moderation_payload?: ModerationPayload; + + user?: UserRequest; +} + +export interface CustomCheckResponse { + duration: string; + + id: string; + + recommended_action: string; + + scored_at: Date; + + status: string; + + report: any[]; + + moderator_action?: string; + + reviewed_at?: Date; +} + +export interface Data { + id: string; +} + export interface DataDogInfo { api_key?: string; @@ -1636,6 +1878,8 @@ export interface DeactivateUsersResponse { task_id: string; } +export interface DeleteActivityRequest {} + export interface DeleteCallRequest { hard?: boolean; } @@ -1684,12 +1928,20 @@ export interface DeleteExternalStorageResponse { duration: string; } +export interface DeleteMessageRequest { + hard_delete?: boolean; +} + export interface DeleteMessageResponse { duration: string; message: MessageResponse; } +export interface DeleteReactionRequest { + hard_delete?: boolean; +} + export interface DeleteRecordingResponse { duration: string; } @@ -1698,6 +1950,14 @@ export interface DeleteTranscriptionResponse { duration: string; } +export interface DeleteUserRequest { + delete_conversation_channels?: boolean; + + hard_delete?: boolean; + + mark_messages_deleted?: boolean; +} + export interface DeleteUsersRequest { user_ids: string[]; @@ -1794,6 +2054,60 @@ export interface EndCallResponse { duration: string; } +export interface EnrichedActivity { + foreign_id?: string; + + id?: string; + + score?: number; + + verb?: string; + + to?: string[]; + + actor?: Data; + + latest_reactions?: Record>; + + object?: Data; + + origin?: Data; + + own_reactions?: Record>; + + reaction_counts?: Record; + + target?: Data; +} + +export interface EnrichedReaction { + activity_id: string; + + kind: string; + + user_id: string; + + id?: string; + + parent?: string; + + target_feeds?: string[]; + + children_counts?: Record; + + created_at?: Time; + + data?: Record; + + latest_children?: Record>; + + own_children?: Record>; + + updated_at?: Time; + + user?: Data; +} + export interface ErrorResult { type: string; @@ -1884,6 +2198,12 @@ export interface ExternalStorageResponse { type: 's3' | 'gcs' | 'abs'; } +export interface FeedsModerationTemplateConfig { + config_key: string; + + data_types: Record; +} + export interface Field { short: boolean; @@ -1946,32 +2266,32 @@ export interface FirebaseConfigFields { server_key?: string; } -export interface Flag { +export interface Flag2 { created_at: Date; - created_by_automod: boolean; + entity_id: string; - updated_at: Date; + entity_type: string; - approved_at?: Date; + updated_at: Date; - reason?: string; + result: Array>; - rejected_at?: Date; + entity_creator_id?: string; - 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?: UserObject; + moderation_payload?: ModerationPayload; user?: UserObject; } @@ -2003,25 +2323,27 @@ export interface FlagMessageDetails { } export interface FlagRequest { - reason?: string; + entity_id: string; + + entity_type: string; - target_message_id?: string; + reason: string; - target_user_id?: string; + entity_creator_id?: string; user_id?: string; custom?: Record; + moderation_payload?: ModerationPayload; + user?: UserRequest; } export interface FlagResponse { duration: string; - review_queue_item_id: string; - - flag?: Flag; + item_id: string; } export interface FullUserResponse { @@ -2280,6 +2602,12 @@ export interface GetCommandResponse { updated_at?: Date; } +export interface GetConfigResponse { + duration: string; + + config?: ConfigResponse; +} + export interface GetCustomPermissionResponse { duration: string; @@ -2430,6 +2758,14 @@ export interface GetRepliesResponse { messages: MessageResponse[]; } +export interface GetReviewQueueItemResponse { + duration: string; + + history: ReviewQueueItem[]; + + item?: ReviewQueueItem; +} + export interface GetTaskResponse { created_at: Date; @@ -2452,6 +2788,16 @@ export interface GetThreadResponse { thread: ThreadStateResponse; } +export interface GetUserModerationReportResponse { + duration: string; + + user_blocks: UserBlock[]; + + user_mutes: UserMute[]; + + user: UserResponse; +} + export interface GoLiveRequest { recording_storage_name?: string; @@ -2470,6 +2816,10 @@ export interface GoLiveResponse { call: CallResponse; } +export interface GoogleVisionConfig { + enabled: boolean; +} + export interface HLSSettings { auto_on: boolean; @@ -3238,6 +3588,32 @@ export interface MessageWithChannelResponse { reaction_groups?: Record; } +export interface ModerationActionConfig { + action: string; + + description: string; + + entity_type: string; + + icon: string; + + order: number; + + custom: Record; +} + +export interface ModerationPayload { + created_at?: Date; + + images?: string[]; + + texts?: string[]; + + videos?: string[]; + + custom?: Record; +} + export interface ModerationResponse { action: string; @@ -3248,6 +3624,30 @@ export interface ModerationResponse { toxic: number; } +export interface ModerationUsageStats { + bucket: string; + + metric: string; + + updated_at: Date; + + value: number; +} + +export interface ModeratorStats { + id: string; + + items_reviewed: number; + + action_counts: Record; +} + +export interface ModeratorStatsResponse { + duration: string; + + moderator_stats: ModeratorStats[]; +} + export interface MuteChannelRequest { expiration?: number; @@ -3268,25 +3668,23 @@ export interface MuteChannelResponse { own_user?: OwnUser; } -export interface MuteUserRequest { +export interface MuteRequest { timeout: number; - user_id?: string; + target_ids: string[]; - target_ids?: string[]; + user_id?: string; user?: UserRequest; } -export interface MuteUserResponse { +export interface MuteResponse { duration: string; mutes?: UserMute[]; non_existing_users?: string[]; - mute?: UserMute; - own_user?: OwnUser; } @@ -4052,6 +4450,32 @@ export interface QueryMessageHistoryResponse { prev?: string; } +export interface QueryModerationLogsRequest { + limit?: number; + + next?: string; + + prev?: string; + + user_id?: string; + + sort?: SortParamRequest[]; + + filter?: Record; + + user?: UserRequest; +} + +export interface QueryModerationLogsResponse { + duration: string; + + l_og_s: ActionLogResponse[]; + + next?: string; + + prev?: string; +} + export interface QueryPollVotesRequest { limit?: number; @@ -4112,6 +4536,42 @@ export interface QueryReactionsResponse { prev?: string; } +export interface QueryReviewQueueRequest { + limit?: number; + + lock_moderator_duration?: number; + + lock_moderator_id?: string; + + next?: string; + + prev?: string; + + stats_only?: boolean; + + user_id?: string; + + sort?: SortParamRequest[]; + + filter?: Record; + + user?: UserRequest; +} + +export interface QueryReviewQueueResponse { + duration: string; + + items: ReviewQueueItem[]; + + action_config: Record>; + + stats: Record; + + next?: string; + + prev?: string; +} + export interface QueryThreadsRequest { limit?: number; @@ -4140,6 +4600,32 @@ export interface QueryThreadsResponse { prev?: string; } +export interface QueryUsageStatsRequest { + limit?: number; + + next?: string; + + prev?: string; + + user_id?: string; + + sort?: SortParamRequest[]; + + filter?: Record; + + user?: UserRequest; +} + +export interface QueryUsageStatsResponse { + duration: string; + + items: ModerationUsageStats[]; + + next?: string; + + prev?: string; +} + export interface QueryUsersPayload { filter_conditions: Record; @@ -4164,6 +4650,14 @@ export interface QueryUsersResponse { users: FullUserResponse[]; } +export interface QueueStatsResponse { + avg_time_to_action: number; + + duration: string; + + time_to_action_buckets: Record; +} + export interface RTMPIngress { address: string; } @@ -4340,10 +4834,66 @@ export interface Response { duration: string; } +export interface RestoreActionRequest {} + export interface RestoreUsersRequest { user_ids: string[]; } +export interface ReviewQueueItem { + content_changed: boolean; + + created_at: Date; + + entity_id: string; + + entity_type: string; + + has_image: boolean; + + has_text: boolean; + + has_video: boolean; + + id: string; + + moderation_payload_hash: string; + + recommended_action: string; + + reviewed_by: string; + + severity: number; + + status: string; + + updated_at: Date; + + actions: ActionLog[]; + + bans: Ban[]; + + flags: Flag2[]; + + languages: string[]; + + completed_at: NullTime; + + reviewed_at: NullTime; + + assigned_to?: UserObject; + + entity_creator?: UserObject; + + feeds_v2_activity?: EnrichedActivity; + + feeds_v2_reaction?: Reaction; + + message?: Message; + + moderation_payload?: ModerationPayload; +} + export interface RingSettings { auto_cancel_timeout_ms: number; @@ -4676,6 +5226,44 @@ export interface StopTranscriptionResponse { duration: string; } +export interface SubmitActionRequest { + action_type: + | 'mark_safe' + | 'delete_message' + | 'delete_activity' + | 'delete_reaction' + | 'ban' + | 'custom' + | 'unban' + | 'restore' + | 'delete_user' + | 'unblock'; + + item_id: string; + + user_id?: string; + + ban?: BanActionRequest; + + custom?: CustomActionRequest; + + delete_message?: DeleteMessageRequest; + + delete_reaction?: DeleteReactionRequest; + + delete_user?: DeleteUserRequest; + + unban?: UnbanActionRequest; + + user?: UserRequest; +} + +export interface SubmitActionResponse { + duration: string; + + item?: ReviewQueueItem; +} + export interface Subsession { ended_at: number; @@ -4878,6 +5466,8 @@ export interface ThumbnailsSettingsResponse { enabled: boolean; } +export interface Time {} + export interface TimeStats { average_seconds: number; @@ -4997,6 +5587,20 @@ export interface TypingIndicatorsResponse { enabled: boolean; } +export interface UnbanActionRequest {} + +export interface UnbanRequest { + unbanned_by_id?: string; + + unbanned_by?: UserRequest; +} + +export interface UnbanResponse { + duration: string; +} + +export interface UnblockActionRequest {} + export interface UnblockUserRequest { user_id: string; } @@ -5027,22 +5631,20 @@ export interface UnmuteChannelRequest { user?: UserRequest; } -export interface UnmuteResponse { - duration: string; - - non_existing_users?: string[]; -} - -export interface UnmuteUserRequest { - timeout: number; +export interface UnmuteRequest { + target_ids: string[]; user_id?: string; - target_ids?: string[]; - user?: UserRequest; } +export interface UnmuteResponse { + duration: string; + + non_existing_users?: string[]; +} + export interface UnpinRequest { session_id: string; @@ -5605,6 +6207,50 @@ export interface UpdateUsersResponse { users: Record; } +export interface UpsertConfigRequest { + key: string; + + async?: boolean; + + automod_platform_circumvention_config?: AutomodPlatformCircumventionConfig; + + automod_semantic_filters_config?: AutomodSemanticFiltersConfig; + + automod_toxicity_config?: AutomodToxicityConfig; + + aws_rek_og_nition_config?: AWSRekognitionConfig; + + block_list_config?: BlockListConfig; + + bodyguard_config?: BodyguardConfig; + + go_og_le_vision_config?: GoogleVisionConfig; +} + +export interface UpsertConfigResponse { + duration: string; + + config?: ConfigResponse; +} + +export interface UpsertModerationTemplateRequest { + name: string; + + config: FeedsModerationTemplateConfig; +} + +export interface UpsertModerationTemplateResponse { + created_at: Date; + + duration: string; + + name: string; + + updated_at: Date; + + config?: FeedsModerationTemplateConfig; +} + export interface UpsertPushProviderRequest { push_provider?: PushProvider; } @@ -5615,6 +6261,14 @@ export interface UpsertPushProviderResponse { push_provider: PushProviderResponse; } +export interface UserBlock { + blocked_by_user_id: string; + + blocked_user_id: string; + + created_at: Date; +} + export interface UserCustomEventRequest { type: string; diff --git a/src/gen/moderation/ModerationApi.ts b/src/gen/moderation/ModerationApi.ts new file mode 100644 index 0000000..9b2a7b9 --- /dev/null +++ b/src/gen/moderation/ModerationApi.ts @@ -0,0 +1,524 @@ +import { BaseApi } from '../../BaseApi'; +import { StreamResponse } from '../../types'; +import { + BanRequest, + BanResponse, + BlockRequest, + BlockResponse, + CheckRequest, + CheckResponse, + CustomCheckRequest, + CustomCheckResponse, + FlagRequest, + FlagResponse, + GetConfigResponse, + GetReviewQueueItemResponse, + GetUserModerationReportResponse, + ModeratorStatsResponse, + MuteRequest, + MuteResponse, + QueryModerationLogsRequest, + QueryModerationLogsResponse, + QueryReviewQueueRequest, + QueryReviewQueueResponse, + QueryUsageStatsRequest, + QueryUsageStatsResponse, + QueueStatsResponse, + SubmitActionRequest, + SubmitActionResponse, + UnbanRequest, + UnbanResponse, + UnmuteRequest, + UnmuteResponse, + UpsertConfigRequest, + UpsertConfigResponse, + UpsertModerationTemplateRequest, + UpsertModerationTemplateResponse, +} from '../models'; +import { + encodeBanRequest, + decodeBanResponse, + encodeBlockRequest, + decodeBlockResponse, + encodeCheckRequest, + decodeCheckResponse, + encodeCustomCheckRequest, + decodeCustomCheckResponse, + encodeFlagRequest, + decodeFlagResponse, + decodeGetConfigResponse, + decodeGetReviewQueueItemResponse, + decodeGetUserModerationReportResponse, + decodeModeratorStatsResponse, + encodeMuteRequest, + decodeMuteResponse, + encodeQueryModerationLogsRequest, + decodeQueryModerationLogsResponse, + encodeQueryReviewQueueRequest, + decodeQueryReviewQueueResponse, + encodeQueryUsageStatsRequest, + decodeQueryUsageStatsResponse, + decodeQueueStatsResponse, + encodeSubmitActionRequest, + decodeSubmitActionResponse, + encodeUnbanRequest, + decodeUnbanResponse, + encodeUnmuteRequest, + decodeUnmuteResponse, + encodeUpsertConfigRequest, + decodeUpsertConfigResponse, + encodeUpsertModerationTemplateRequest, + decodeUpsertModerationTemplateResponse, +} from '../models-transform'; + +export class ModerationApi extends BaseApi { + v2Ban = async (request: BanRequest): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + target_user_id: requestCopy.target_user_id, + timeout: requestCopy.timeout, + banned_by_id: requestCopy.banned_by_id, + channel_cid: requestCopy.channel_cid, + ip_ban: requestCopy.ip_ban, + reason: requestCopy.reason, + shadow: requestCopy.shadow, + banned_by: requestCopy.banned_by, + }; + encodeBanRequest(body); + + const response = await this.sendRequest>( + 'POST', + '/api/v2/moderation/ban', + undefined, + undefined, + body, + ); + + decodeBanResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2Block = async ( + request: BlockRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + blocked_user_id: requestCopy.blocked_user_id, + user_id: requestCopy.user_id, + options: requestCopy.options, + user: requestCopy.user, + }; + encodeBlockRequest(body); + + const response = await this.sendRequest>( + 'POST', + '/api/v2/moderation/block', + undefined, + undefined, + body, + ); + + decodeBlockResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2Check = async ( + request: CheckRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + config_key: requestCopy.config_key, + entity_creator_id: requestCopy.entity_creator_id, + entity_id: requestCopy.entity_id, + entity_type: requestCopy.entity_type, + user_id: requestCopy.user_id, + moderation_payload: requestCopy.moderation_payload, + options: requestCopy.options, + user: requestCopy.user, + }; + encodeCheckRequest(body); + + const response = await this.sendRequest>( + 'POST', + '/api/v2/moderation/check', + undefined, + undefined, + body, + ); + + decodeCheckResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2UpsertConfig = async ( + request: UpsertConfigRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + key: requestCopy.key, + async: requestCopy.async, + automod_platform_circumvention_config: + requestCopy.automod_platform_circumvention_config, + automod_semantic_filters_config: + requestCopy.automod_semantic_filters_config, + automod_toxicity_config: requestCopy.automod_toxicity_config, + aws_rek_og_nition_config: requestCopy.aws_rek_og_nition_config, + block_list_config: requestCopy.block_list_config, + bodyguard_config: requestCopy.bodyguard_config, + go_og_le_vision_config: requestCopy.go_og_le_vision_config, + }; + encodeUpsertConfigRequest(body); + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/moderation/config', undefined, undefined, body); + + decodeUpsertConfigResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2GetConfig = async (request: { + key: string; + }): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const pathParams = { + key: requestCopy.key, + }; + + const response = await this.sendRequest>( + 'GET', + '/api/v2/moderation/config/{key}', + pathParams, + undefined, + ); + + decodeGetConfigResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2CustomCheck = async ( + request: CustomCheckRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + entity_creator_id: requestCopy.entity_creator_id, + entity_id: requestCopy.entity_id, + entity_type: requestCopy.entity_type, + name: requestCopy.name, + reason: requestCopy.reason, + recommended_action: requestCopy.recommended_action, + user_id: requestCopy.user_id, + moderation_payload: requestCopy.moderation_payload, + user: requestCopy.user, + }; + encodeCustomCheckRequest(body); + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/moderation/custom_check', undefined, undefined, body); + + decodeCustomCheckResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2UpsertTemplate = async ( + request: UpsertModerationTemplateRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + name: requestCopy.name, + config: requestCopy.config, + }; + encodeUpsertModerationTemplateRequest(body); + + const response = await this.sendRequest< + StreamResponse + >( + 'POST', + '/api/v2/moderation/feeds_moderation_template', + undefined, + undefined, + body, + ); + + decodeUpsertModerationTemplateResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2Flag = async ( + request: FlagRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + entity_id: requestCopy.entity_id, + entity_type: requestCopy.entity_type, + reason: requestCopy.reason, + entity_creator_id: requestCopy.entity_creator_id, + user_id: requestCopy.user_id, + custom: requestCopy.custom, + moderation_payload: requestCopy.moderation_payload, + user: requestCopy.user, + }; + encodeFlagRequest(body); + + const response = await this.sendRequest>( + 'POST', + '/api/v2/moderation/flag', + undefined, + undefined, + body, + ); + + decodeFlagResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2QueryModerationLogs = async ( + request?: QueryModerationLogsRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + limit: requestCopy.limit, + next: requestCopy.next, + prev: requestCopy.prev, + user_id: requestCopy.user_id, + sort: requestCopy.sort, + filter: requestCopy.filter, + user: requestCopy.user, + }; + encodeQueryModerationLogsRequest(body); + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/moderation/logs', undefined, undefined, body); + + decodeQueryModerationLogsResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2ModeratorStats = async (): Promise< + StreamResponse + > => { + const response = await this.sendRequest< + StreamResponse + >('GET', '/api/v2/moderation/moderator_stats', undefined, undefined); + + decodeModeratorStatsResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2Mute = async ( + request: MuteRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + timeout: requestCopy.timeout, + target_ids: requestCopy.target_ids, + user_id: requestCopy.user_id, + user: requestCopy.user, + }; + encodeMuteRequest(body); + + const response = await this.sendRequest>( + 'POST', + '/api/v2/moderation/mute', + undefined, + undefined, + body, + ); + + decodeMuteResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2QueueStats = async (): Promise> => { + const response = await this.sendRequest>( + 'GET', + '/api/v2/moderation/queue_stats', + undefined, + undefined, + ); + + decodeQueueStatsResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2QueryReviewQueue = async ( + request?: QueryReviewQueueRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + limit: requestCopy.limit, + lock_moderator_duration: requestCopy.lock_moderator_duration, + lock_moderator_id: requestCopy.lock_moderator_id, + next: requestCopy.next, + prev: requestCopy.prev, + stats_only: requestCopy.stats_only, + user_id: requestCopy.user_id, + sort: requestCopy.sort, + filter: requestCopy.filter, + user: requestCopy.user, + }; + encodeQueryReviewQueueRequest(body); + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/moderation/review_queue', undefined, undefined, body); + + decodeQueryReviewQueueResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2GetReviewQueueItem = async (request: { + id: string; + }): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const pathParams = { + id: requestCopy.id, + }; + + const response = await this.sendRequest< + StreamResponse + >('GET', '/api/v2/moderation/review_queue/{id}', pathParams, undefined); + + decodeGetReviewQueueItemResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2SubmitAction = async ( + request: SubmitActionRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + action_type: requestCopy.action_type, + item_id: requestCopy.item_id, + user_id: requestCopy.user_id, + ban: requestCopy.ban, + custom: requestCopy.custom, + delete_message: requestCopy.delete_message, + delete_reaction: requestCopy.delete_reaction, + delete_user: requestCopy.delete_user, + unban: requestCopy.unban, + user: requestCopy.user, + }; + encodeSubmitActionRequest(body); + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/moderation/submit_action', undefined, undefined, body); + + decodeSubmitActionResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2Unban = async ( + request: UnbanRequest & { + target_user_id: string; + channel_cid?: string; + created_by?: string; + }, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const queryParams = { + target_user_id: requestCopy.target_user_id, + channel_cid: requestCopy.channel_cid, + created_by: requestCopy.created_by, + }; + const body = { + unbanned_by_id: requestCopy.unbanned_by_id, + unbanned_by: requestCopy.unbanned_by, + }; + encodeUnbanRequest(body); + + const response = await this.sendRequest>( + 'POST', + '/api/v2/moderation/unban', + undefined, + queryParams, + body, + ); + + decodeUnbanResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2Unmute = async ( + request: UnmuteRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + target_ids: requestCopy.target_ids, + user_id: requestCopy.user_id, + user: requestCopy.user, + }; + encodeUnmuteRequest(body); + + const response = await this.sendRequest>( + 'POST', + '/api/v2/moderation/unmute', + undefined, + undefined, + body, + ); + + decodeUnmuteResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; + + v2QueryUsageStats = async ( + request?: QueryUsageStatsRequest, + ): Promise> => { + const requestCopy = JSON.parse(JSON.stringify(request ?? {})); + + const body = { + limit: requestCopy.limit, + next: requestCopy.next, + prev: requestCopy.prev, + user_id: requestCopy.user_id, + sort: requestCopy.sort, + filter: requestCopy.filter, + user: requestCopy.user, + }; + encodeQueryUsageStatsRequest(body); + + const response = await this.sendRequest< + StreamResponse + >('POST', '/api/v2/moderation/usage_stats', undefined, undefined, body); + + decodeQueryUsageStatsResponse(response.body); + + return { ...response.body, responseHeaders: response.headers }; + }; +}