From 0271beda3b72ad430bb0d9c8ea018fead0b65f7b Mon Sep 17 00:00:00 2001 From: Faiz Shaikh Date: Mon, 23 Mar 2026 17:01:41 +0100 Subject: [PATCH 1/4] test: add retention policy endpoint tests Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/ChatMiscIntegrationTests.cs | 100 ++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/tests/ChatMiscIntegrationTests.cs b/tests/ChatMiscIntegrationTests.cs index 249f744..71f3d4a 100644 --- a/tests/ChatMiscIntegrationTests.cs +++ b/tests/ChatMiscIntegrationTests.cs @@ -823,5 +823,105 @@ public async Task QueryTeamUsageStats() Assert.Ignore("QueryTeamUsageStats not available on this app"); } } + + [Test, Order(20)] + public async Task SetRetentionPolicy() + { + try + { + var resp = await _chatClient.SetRetentionPolicyAsync(new SetRetentionPolicyRequest + { + Policy = "old-messages", + MaxAgeHours = 720 + }); + + Assert.That(resp.Data, Is.Not.Null); + Assert.That(resp.Data!.Duration, Is.Not.Empty); + Assert.That(resp.Data!.Policy, Is.Not.Null); + Assert.That(resp.Data!.Policy.Config, Is.Not.Null); + Assert.That(resp.Data!.Policy.Config.MaxAgeHours, Is.EqualTo(720)); + } + catch (Exception e) when ( + e.Message.Contains("not available") || + e.Message.Contains("not enabled") || + e.Message.Contains("not found") || + e.Message.Contains("Not Found") || + e.Message.Contains("retention") || + e.Message.Contains("feature")) + { + Assert.Ignore("Retention policy feature not available on this app"); + } + } + + [Test, Order(21)] + public async Task GetRetentionPolicy() + { + try + { + var resp = await _chatClient.GetRetentionPolicyAsync(); + + Assert.That(resp.Data, Is.Not.Null); + Assert.That(resp.Data!.Duration, Is.Not.Empty); + Assert.That(resp.Data!.Policies, Is.Not.Null); + } + catch (Exception e) when ( + e.Message.Contains("not available") || + e.Message.Contains("not enabled") || + e.Message.Contains("not found") || + e.Message.Contains("Not Found") || + e.Message.Contains("retention") || + e.Message.Contains("feature")) + { + Assert.Ignore("Retention policy feature not available on this app"); + } + } + + [Test, Order(22)] + public async Task GetRetentionPolicyRuns() + { + try + { + var resp = await _chatClient.GetRetentionPolicyRunsAsync(); + + Assert.That(resp.Data, Is.Not.Null); + Assert.That(resp.Data!.Duration, Is.Not.Empty); + Assert.That(resp.Data!.Runs, Is.Not.Null); + } + catch (Exception e) when ( + e.Message.Contains("not available") || + e.Message.Contains("not enabled") || + e.Message.Contains("not found") || + e.Message.Contains("Not Found") || + e.Message.Contains("retention") || + e.Message.Contains("feature")) + { + Assert.Ignore("Retention policy feature not available on this app"); + } + } + + [Test, Order(23)] + public async Task DeleteRetentionPolicy() + { + try + { + var resp = await _chatClient.DeleteRetentionPolicyAsync(new DeleteRetentionPolicyRequest + { + Policy = "old-messages" + }); + + Assert.That(resp.Data, Is.Not.Null); + Assert.That(resp.Data!.Duration, Is.Not.Empty); + } + catch (Exception e) when ( + e.Message.Contains("not available") || + e.Message.Contains("not enabled") || + e.Message.Contains("not found") || + e.Message.Contains("Not Found") || + e.Message.Contains("retention") || + e.Message.Contains("feature")) + { + Assert.Ignore("Retention policy feature not available on this app"); + } + } } } From 0ef2ae718411b7defc22a028117930e2ac8e3930 Mon Sep 17 00:00:00 2001 From: Faiz Shaikh Date: Mon, 23 Mar 2026 17:23:44 +0100 Subject: [PATCH 2/4] test: remove retention policy creation/update tests Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/ChatMiscIntegrationTests.cs | 36 ++++++------------------------- 1 file changed, 7 insertions(+), 29 deletions(-) diff --git a/tests/ChatMiscIntegrationTests.cs b/tests/ChatMiscIntegrationTests.cs index 71f3d4a..a8661dd 100644 --- a/tests/ChatMiscIntegrationTests.cs +++ b/tests/ChatMiscIntegrationTests.cs @@ -824,35 +824,6 @@ public async Task QueryTeamUsageStats() } } - [Test, Order(20)] - public async Task SetRetentionPolicy() - { - try - { - var resp = await _chatClient.SetRetentionPolicyAsync(new SetRetentionPolicyRequest - { - Policy = "old-messages", - MaxAgeHours = 720 - }); - - Assert.That(resp.Data, Is.Not.Null); - Assert.That(resp.Data!.Duration, Is.Not.Empty); - Assert.That(resp.Data!.Policy, Is.Not.Null); - Assert.That(resp.Data!.Policy.Config, Is.Not.Null); - Assert.That(resp.Data!.Policy.Config.MaxAgeHours, Is.EqualTo(720)); - } - catch (Exception e) when ( - e.Message.Contains("not available") || - e.Message.Contains("not enabled") || - e.Message.Contains("not found") || - e.Message.Contains("Not Found") || - e.Message.Contains("retention") || - e.Message.Contains("feature")) - { - Assert.Ignore("Retention policy feature not available on this app"); - } - } - [Test, Order(21)] public async Task GetRetentionPolicy() { @@ -904,6 +875,13 @@ public async Task DeleteRetentionPolicy() { try { + // Create a policy first so we have something to delete + await _chatClient.SetRetentionPolicyAsync(new SetRetentionPolicyRequest + { + Policy = "old-messages", + MaxAgeHours = 720 + }); + var resp = await _chatClient.DeleteRetentionPolicyAsync(new DeleteRetentionPolicyRequest { Policy = "old-messages" From 80a481ce3a2f09bb6bfc93fe21f97c14c7e6abe0 Mon Sep 17 00:00:00 2001 From: Faiz Shaikh Date: Mon, 23 Mar 2026 17:29:49 +0100 Subject: [PATCH 3/4] test: remove delete retention policy tests Co-Authored-By: Claude Opus 4.6 (1M context) --- tests/ChatMiscIntegrationTests.cs | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/tests/ChatMiscIntegrationTests.cs b/tests/ChatMiscIntegrationTests.cs index a8661dd..5ae79c5 100644 --- a/tests/ChatMiscIntegrationTests.cs +++ b/tests/ChatMiscIntegrationTests.cs @@ -870,36 +870,5 @@ public async Task GetRetentionPolicyRuns() } } - [Test, Order(23)] - public async Task DeleteRetentionPolicy() - { - try - { - // Create a policy first so we have something to delete - await _chatClient.SetRetentionPolicyAsync(new SetRetentionPolicyRequest - { - Policy = "old-messages", - MaxAgeHours = 720 - }); - - var resp = await _chatClient.DeleteRetentionPolicyAsync(new DeleteRetentionPolicyRequest - { - Policy = "old-messages" - }); - - Assert.That(resp.Data, Is.Not.Null); - Assert.That(resp.Data!.Duration, Is.Not.Empty); - } - catch (Exception e) when ( - e.Message.Contains("not available") || - e.Message.Contains("not enabled") || - e.Message.Contains("not found") || - e.Message.Contains("Not Found") || - e.Message.Contains("retention") || - e.Message.Contains("feature")) - { - Assert.Ignore("Retention policy feature not available on this app"); - } - } } } From a7f32c4595335ecaf4ef3f309b1691fd2f24c26e Mon Sep 17 00:00:00 2001 From: Faiz Shaikh Date: Tue, 31 Mar 2026 12:56:06 +0200 Subject: [PATCH 4/4] feat: regenerate from latest OpenAPI spec, keep only retention runs test Regenerated SDK from latest serverside-api.yaml spec. Updated retention policy integration test to only test GetRetentionPolicyRunsAsync endpoint. Co-Authored-By: Claude Opus 4.6 (1M context) --- src/ChatClient.cs | 371 +- src/CommonClient.cs | 270 +- src/Feed.cs | 176 +- src/FeedsV3Client.cs | 136 +- src/ModerationClient.cs | 34 +- src/VideoClient.cs | 326 +- src/Webhook.cs | 2 + src/models.cs | 7672 ++++++++++++++++++++++++++++- tests/ChatMiscIntegrationTests.cs | 28 +- tests/FeedTests.cs | 178 +- tests/WebhookTests.cs | 8 + 11 files changed, 8477 insertions(+), 724 deletions(-) diff --git a/src/ChatClient.cs b/src/ChatClient.cs index fe7e3a7..4d9ae9f 100644 --- a/src/ChatClient.cs +++ b/src/ChatClient.cs @@ -34,7 +34,7 @@ private Dictionary ExtractQueryParams(object request) return queryParams; } - + // Query campaigns with filter query public async Task> QueryCampaignsAsync(QueryCampaignsRequest request, CancellationToken cancellationToken = default) @@ -46,9 +46,9 @@ public async Task> QueryCampaignsAsync(Qu cancellationToken); return result; } - + // Get campaign by ID. - public async Task> GetCampaignAsync(string id, object request = null, + public async Task> GetCampaignAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -63,9 +63,9 @@ public async Task> GetCampaignAsync(string i cancellationToken); return result; } - + // Starts or schedules a campaign - public async Task> StartCampaignAsync(string id, StartCampaignRequest request, + public async Task> StartCampaignAsync(string id,StartCampaignRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -79,9 +79,9 @@ public async Task> StartCampaignAsync(stri cancellationToken); return result; } - + // Stops a campaign - public async Task> StopCampaignAsync(string id, StopCampaignRequest request, + public async Task> StopCampaignAsync(string id,StopCampaignRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -95,7 +95,7 @@ public async Task> StopCampaignAsync(string id, cancellationToken); return result; } - + // Query channels with filter query public async Task> QueryChannelsAsync(QueryChannelsRequest request, CancellationToken cancellationToken = default) @@ -107,9 +107,9 @@ public async Task> QueryChannelsAsync(Quer cancellationToken); return result; } - + // Update channels in batch - + // Sends events: // - channel.frozen // - channel.hidden @@ -129,9 +129,9 @@ public async Task> ChannelBatchUpdate cancellationToken); return result; } - + // Allows to delete several channels at once asynchronously - + // Sends events: // - channel.deleted public async Task> DeleteChannelsAsync(DeleteChannelsRequest request, @@ -144,7 +144,7 @@ public async Task> DeleteChannelsAsync(De cancellationToken); return result; } - + // Mark the status of a channel message delivered. public async Task> MarkDeliveredAsync(MarkDeliveredRequest request, CancellationToken cancellationToken = default) @@ -157,9 +157,9 @@ public async Task> MarkDeliveredAsync(Mark cancellationToken); return result; } - + // Marks channels as read up to the specific message. If no channels is given, mark all channel as read - + // Sends events: // - message.read public async Task> MarkChannelsReadAsync(MarkChannelsReadRequest request, @@ -172,16 +172,16 @@ public async Task> MarkChannelsReadAsync(MarkCh cancellationToken); return result; } - + // This Method creates a channel or returns an existing one with matching attributes - + // Sends events: // - channel.created // - member.added // - member.removed // - member.updated // - user.watching.start - public async Task> GetOrCreateDistinctChannelAsync(string type, ChannelGetOrCreateRequest request, + public async Task> GetOrCreateDistinctChannelAsync(string type,ChannelGetOrCreateRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -195,12 +195,12 @@ public async Task> GetOrCreateDistinctChann cancellationToken); return result; } - + // Deletes channel - + // Sends events: // - channel.deleted - public async Task> DeleteChannelAsync(string type, string id, object request = null, + public async Task> DeleteChannelAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -216,12 +216,12 @@ public async Task> DeleteChannelAsync(stri cancellationToken); return result; } - + // Updates certain fields of the channel - + // Sends events: // - channel.updated - public async Task> UpdateChannelPartialAsync(string type, string id, UpdateChannelPartialRequest request, + public async Task> UpdateChannelPartialAsync(string type, string id,UpdateChannelPartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -236,16 +236,16 @@ public async Task> UpdateChannelPar cancellationToken); return result; } - + // Change channel data - + // Sends events: // - channel.updated // - member.added // - member.removed // - member.updated // - message.new - public async Task> UpdateChannelAsync(string type, string id, UpdateChannelRequest request, + public async Task> UpdateChannelAsync(string type, string id,UpdateChannelRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -260,12 +260,12 @@ public async Task> UpdateChannelAsync(stri cancellationToken); return result; } - + // Deletes a draft - + // Sends events: // - draft.deleted - public async Task> DeleteDraftAsync(string type, string id, object request = null, + public async Task> DeleteDraftAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -281,9 +281,9 @@ public async Task> DeleteDraftAsync(string type, string cancellationToken); return result; } - + // Get a draft - public async Task> GetDraftAsync(string type, string id, object request = null, + public async Task> GetDraftAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -299,9 +299,9 @@ public async Task> GetDraftAsync(string type, s cancellationToken); return result; } - + // Sends event to the channel - public async Task> SendEventAsync(string type, string id, SendEventRequest request, + public async Task> SendEventAsync(string type, string id,SendEventRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -316,9 +316,9 @@ public async Task> SendEventAsync(string type, str cancellationToken); return result; } - + // Deletes previously uploaded file - public async Task> DeleteChannelFileAsync(string type, string id, object request = null, + public async Task> DeleteChannelFileAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -334,9 +334,9 @@ public async Task> DeleteChannelFileAsync(string type, cancellationToken); return result; } - + // Uploads file - public async Task> UploadChannelFileAsync(string type, string id, UploadChannelFileRequest request, + public async Task> UploadChannelFileAsync(string type, string id,UploadChannelFileRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -351,12 +351,12 @@ public async Task> UploadChannelFileAs cancellationToken); return result; } - + // Marks channel as hidden for current user - + // Sends events: // - channel.hidden - public async Task> HideChannelAsync(string type, string id, HideChannelRequest request, + public async Task> HideChannelAsync(string type, string id,HideChannelRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -371,9 +371,9 @@ public async Task> HideChannelAsync(string t cancellationToken); return result; } - + // Deletes previously uploaded image - public async Task> DeleteChannelImageAsync(string type, string id, object request = null, + public async Task> DeleteChannelImageAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -389,9 +389,9 @@ public async Task> DeleteChannelImageAsync(string type, cancellationToken); return result; } - + // Uploads image - public async Task> UploadChannelImageAsync(string type, string id, UploadChannelRequest request, + public async Task> UploadChannelImageAsync(string type, string id,UploadChannelRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -406,9 +406,9 @@ public async Task> UploadChannelImageAsync cancellationToken); return result; } - - - public async Task> UpdateMemberPartialAsync(string type, string id, UpdateMemberPartialRequest request, + + + public async Task> UpdateMemberPartialAsync(string type, string id,UpdateMemberPartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -424,13 +424,13 @@ public async Task> UpdateMemberParti cancellationToken); return result; } - + // Sends new message to the specified channel - + // Sends events: // - message.new // - message.updated - public async Task> SendMessageAsync(string type, string id, SendMessageRequest request, + public async Task> SendMessageAsync(string type, string id,SendMessageRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -445,9 +445,9 @@ public async Task> SendMessageAsync(string t cancellationToken); return result; } - + // Returns list messages found by IDs - public async Task> GetManyMessagesAsync(string type, string id, object request = null, + public async Task> GetManyMessagesAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -463,16 +463,16 @@ public async Task> GetManyMessagesAsync( cancellationToken); return result; } - + // This Method creates a channel or returns an existing one with matching attributes - + // Sends events: // - channel.created // - member.added // - member.removed // - member.updated // - user.watching.start - public async Task> GetOrCreateChannelAsync(string type, string id, ChannelGetOrCreateRequest request, + public async Task> GetOrCreateChannelAsync(string type, string id,ChannelGetOrCreateRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -487,12 +487,12 @@ public async Task> GetOrCreateChannelAsync( cancellationToken); return result; } - + // Marks channel as read up to the specific message - + // Sends events: // - message.read - public async Task> MarkReadAsync(string type, string id, MarkReadRequest request, + public async Task> MarkReadAsync(string type, string id,MarkReadRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -507,12 +507,12 @@ public async Task> MarkReadAsync(string type, s cancellationToken); return result; } - + // Shows previously hidden channel - + // Sends events: // - channel.visible - public async Task> ShowChannelAsync(string type, string id, ShowChannelRequest request, + public async Task> ShowChannelAsync(string type, string id,ShowChannelRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -527,12 +527,12 @@ public async Task> ShowChannelAsync(string t cancellationToken); return result; } - + // Truncates messages from a channel. Can be applied to the entire channel or scoped to specific members. - + // Sends events: // - channel.truncated - public async Task> TruncateChannelAsync(string type, string id, TruncateChannelRequest request, + public async Task> TruncateChannelAsync(string type, string id,TruncateChannelRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -547,9 +547,9 @@ public async Task> TruncateChannelAsync( cancellationToken); return result; } - + // Marks channel as unread from a specific message - public async Task> MarkUnreadAsync(string type, string id, MarkUnreadRequest request, + public async Task> MarkUnreadAsync(string type, string id,MarkUnreadRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -564,7 +564,7 @@ public async Task> MarkUnreadAsync(string type, string cancellationToken); return result; } - + // Lists all available channel types public async Task> ListChannelTypesAsync(object request = null, CancellationToken cancellationToken = default) @@ -576,7 +576,7 @@ public async Task> ListChannelTypesAsyn cancellationToken); return result; } - + // Creates new channel type public async Task> CreateChannelTypeAsync(CreateChannelTypeRequest request, CancellationToken cancellationToken = default) @@ -588,9 +588,9 @@ public async Task> CreateChannelTypeAs cancellationToken); return result; } - + // Deletes channel type - public async Task> DeleteChannelTypeAsync(string name, object request = null, + public async Task> DeleteChannelTypeAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -604,9 +604,9 @@ public async Task> DeleteChannelTypeAsync(string name, cancellationToken); return result; } - + // Gets channel type - public async Task> GetChannelTypeAsync(string name, object request = null, + public async Task> GetChannelTypeAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -620,9 +620,9 @@ public async Task> GetChannelTypeAsync(st cancellationToken); return result; } - + // Updates channel type - public async Task> UpdateChannelTypeAsync(string name, UpdateChannelTypeRequest request, + public async Task> UpdateChannelTypeAsync(string name,UpdateChannelTypeRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -636,7 +636,7 @@ public async Task> UpdateChannelTypeAs cancellationToken); return result; } - + // Returns all custom commands public async Task> ListCommandsAsync(object request = null, CancellationToken cancellationToken = default) @@ -648,7 +648,7 @@ public async Task> ListCommandsAsync(object cancellationToken); return result; } - + // Creates custom chat command public async Task> CreateCommandAsync(CreateCommandRequest request, CancellationToken cancellationToken = default) @@ -660,9 +660,9 @@ public async Task> CreateCommandAsync(Crea cancellationToken); return result; } - + // Deletes custom chat command - public async Task> DeleteCommandAsync(string name, object request = null, + public async Task> DeleteCommandAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -676,9 +676,9 @@ public async Task> DeleteCommandAsync(stri cancellationToken); return result; } - + // Returns custom command by its name - public async Task> GetCommandAsync(string name, object request = null, + public async Task> GetCommandAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -692,9 +692,9 @@ public async Task> GetCommandAsync(string nam cancellationToken); return result; } - + // Updates custom chat command - public async Task> UpdateCommandAsync(string name, UpdateCommandRequest request, + public async Task> UpdateCommandAsync(string name,UpdateCommandRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -708,7 +708,7 @@ public async Task> UpdateCommandAsync(stri cancellationToken); return result; } - + // Queries draft messages for a user public async Task> QueryDraftsAsync(QueryDraftsRequest request, CancellationToken cancellationToken = default) @@ -720,7 +720,7 @@ public async Task> QueryDraftsAsync(QueryDra cancellationToken); return result; } - + // Exports channel data to JSON file public async Task> ExportChannelsAsync(ExportChannelsRequest request, CancellationToken cancellationToken = default) @@ -732,7 +732,7 @@ public async Task> ExportChannelsAsync(Ex cancellationToken); return result; } - + // Find and filter channel members public async Task> QueryMembersAsync(object request = null, CancellationToken cancellationToken = default) @@ -745,7 +745,7 @@ public async Task> QueryMembersAsync(object requ cancellationToken); return result; } - + // Queries history for one message public async Task> QueryMessageHistoryAsync(QueryMessageHistoryRequest request, CancellationToken cancellationToken = default) @@ -757,12 +757,12 @@ public async Task> QueryMessageHisto cancellationToken); return result; } - + // Deletes message - + // Sends events: // - message.deleted - public async Task> DeleteMessageAsync(string id, object request = null, + public async Task> DeleteMessageAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -777,9 +777,9 @@ public async Task> DeleteMessageAsync(stri cancellationToken); return result; } - + // Returns message by ID - public async Task> GetMessageAsync(string id, object request = null, + public async Task> GetMessageAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -794,12 +794,12 @@ public async Task> GetMessageAsync(string id, cancellationToken); return result; } - + // Updates message with new data - + // Sends events: // - message.updated - public async Task> UpdateMessageAsync(string id, UpdateMessageRequest request, + public async Task> UpdateMessageAsync(string id,UpdateMessageRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -813,12 +813,12 @@ public async Task> UpdateMessageAsync(stri cancellationToken); return result; } - + // Updates certain fields of the message - + // Sends events: // - message.updated - public async Task> UpdateMessagePartialAsync(string id, UpdateMessagePartialRequest request, + public async Task> UpdateMessagePartialAsync(string id,UpdateMessagePartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -832,12 +832,12 @@ public async Task> UpdateMessagePar cancellationToken); return result; } - + // Executes message command action with given parameters - + // Sends events: // - message.new - public async Task> RunMessageActionAsync(string id, MessageActionRequest request, + public async Task> RunMessageActionAsync(string id,MessageActionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -851,13 +851,13 @@ public async Task> RunMessageActionAsync(s cancellationToken); return result; } - + // Commits a pending message, which will make it visible in the channel - + // Sends events: // - message.new // - message.updated - public async Task> CommitMessageAsync(string id, CommitMessageRequest request, + public async Task> CommitMessageAsync(string id,CommitMessageRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -871,12 +871,12 @@ public async Task> CommitMessageAsync(stri cancellationToken); return result; } - + // Updates message fields without storing in database, only sends update event - + // Sends events: // - message.updated - public async Task> EphemeralMessageUpdateAsync(string id, UpdateMessagePartialRequest request, + public async Task> EphemeralMessageUpdateAsync(string id,UpdateMessagePartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -890,13 +890,13 @@ public async Task> EphemeralMessage cancellationToken); return result; } - + // Sends reaction to specified message - + // Sends events: // - reaction.new // - reaction.updated - public async Task> SendReactionAsync(string id, SendReactionRequest request, + public async Task> SendReactionAsync(string id,SendReactionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -910,12 +910,12 @@ public async Task> SendReactionAsync(string cancellationToken); return result; } - + // Removes user reaction from the message - + // Sends events: // - reaction.deleted - public async Task> DeleteReactionAsync(string id, string type, object request = null, + public async Task> DeleteReactionAsync(string id, string type,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -931,9 +931,9 @@ public async Task> DeleteReactionAsync(st cancellationToken); return result; } - + // Returns list of reactions of specific message - public async Task> GetReactionsAsync(string id, object request = null, + public async Task> GetReactionsAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -948,9 +948,9 @@ public async Task> GetReactionsAsync(string cancellationToken); return result; } - + // Get reactions on a message - public async Task> QueryReactionsAsync(string id, QueryReactionsRequest request, + public async Task> QueryReactionsAsync(string id,QueryReactionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -964,12 +964,12 @@ public async Task> QueryReactionsAsync(st cancellationToken); return result; } - + // Translates message to a given language using automated translation software - + // Sends events: // - message.updated - public async Task> TranslateMessageAsync(string id, TranslateMessageRequest request, + public async Task> TranslateMessageAsync(string id,TranslateMessageRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -983,12 +983,12 @@ public async Task> TranslateMessageAsync(s cancellationToken); return result; } - + // Undelete a message that was previously soft-deleted - + // Sends events: // - message.undeleted - public async Task> UndeleteMessageAsync(string id, UndeleteMessageRequest request, + public async Task> UndeleteMessageAsync(string id,UndeleteMessageRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1002,9 +1002,9 @@ public async Task> UndeleteMessageAsync( cancellationToken); return result; } - + // Cast a vote on a poll - + // Sends events: // - feeds.poll.vote_casted // - feeds.poll.vote_changed @@ -1012,7 +1012,7 @@ public async Task> UndeleteMessageAsync( // - poll.vote_casted // - poll.vote_changed // - poll.vote_removed - public async Task> CastPollVoteAsync(string messageID, string pollID, CastPollVoteRequest request, + public async Task> CastPollVoteAsync(string messageID, string pollID,CastPollVoteRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1027,13 +1027,13 @@ public async Task> CastPollVoteAsync(string mes cancellationToken); return result; } - + // Delete a vote from a poll - + // Sends events: // - feeds.poll.vote_removed // - poll.vote_removed - public async Task> DeletePollVoteAsync(string messageID, string pollID, string voteID, object request = null, + public async Task> DeletePollVoteAsync(string messageID, string pollID, string voteID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1050,12 +1050,12 @@ public async Task> DeletePollVoteAsync(string m cancellationToken); return result; } - + // Deletes a user's created reminder - + // Sends events: // - reminder.deleted - public async Task> DeleteReminderAsync(string messageID, object request = null, + public async Task> DeleteReminderAsync(string messageID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1070,12 +1070,12 @@ public async Task> DeleteReminderAsync(st cancellationToken); return result; } - + // Updates an existing reminder - + // Sends events: // - reminder.updated - public async Task> UpdateReminderAsync(string messageID, UpdateReminderRequest request, + public async Task> UpdateReminderAsync(string messageID,UpdateReminderRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1089,12 +1089,12 @@ public async Task> UpdateReminderAsync(st cancellationToken); return result; } - + // Creates a new reminder - + // Sends events: // - reminder.created - public async Task> CreateReminderAsync(string messageID, CreateReminderRequest request, + public async Task> CreateReminderAsync(string messageID,CreateReminderRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1108,9 +1108,9 @@ public async Task> CreateReminderAsync(stri cancellationToken); return result; } - + // Returns replies (thread) of the message - public async Task> GetRepliesAsync(string parentID, object request = null, + public async Task> GetRepliesAsync(string parentID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1125,7 +1125,7 @@ public async Task> GetRepliesAsync(string par cancellationToken); return result; } - + // Find and filter message flags public async Task> QueryMessageFlagsAsync(object request = null, CancellationToken cancellationToken = default) @@ -1138,9 +1138,9 @@ public async Task> QueryMessageFlagsAs cancellationToken); return result; } - + // Mutes channel for user - + // Sends events: // - channel.muted public async Task> MuteChannelAsync(MuteChannelRequest request, @@ -1153,9 +1153,9 @@ public async Task> MuteChannelAsync(MuteChan cancellationToken); return result; } - + // Unmutes channel for user - + // Sends events: // - channel.unmuted public async Task> UnmuteChannelAsync(UnmuteChannelRequest request, @@ -1168,7 +1168,7 @@ public async Task> UnmuteChannelAsync(UnmuteChann cancellationToken); return result; } - + // Find and filter channel scoped or global user bans public async Task> QueryBannedUsersAsync(object request = null, CancellationToken cancellationToken = default) @@ -1181,7 +1181,7 @@ public async Task> QueryBannedUsersAsyn cancellationToken); return result; } - + // Find and filter future channel bans created by the authenticated user public async Task> QueryFutureChannelBansAsync(object request = null, CancellationToken cancellationToken = default) @@ -1194,7 +1194,7 @@ public async Task> QueryFutureCha cancellationToken); return result; } - + // Queries reminders public async Task> QueryRemindersAsync(QueryRemindersRequest request, CancellationToken cancellationToken = default) @@ -1206,7 +1206,7 @@ public async Task> QueryRemindersAsync(Qu cancellationToken); return result; } - + // Returns all retention policies configured for the app. Server-side only. public async Task> GetRetentionPolicyAsync(object request = null, CancellationToken cancellationToken = default) @@ -1218,7 +1218,7 @@ public async Task> GetRetentionPolicy cancellationToken); return result; } - + // Creates or updates a retention policy for the app. Server-side only. public async Task> SetRetentionPolicyAsync(SetRetentionPolicyRequest request, CancellationToken cancellationToken = default) @@ -1230,7 +1230,7 @@ public async Task> SetRetentionPolicy cancellationToken); return result; } - + // Removes a retention policy for the app. Server-side only. public async Task> DeleteRetentionPolicyAsync(DeleteRetentionPolicyRequest request, CancellationToken cancellationToken = default) @@ -1242,20 +1242,19 @@ public async Task> DeleteRetention cancellationToken); return result; } - - // Returns paginated retention cleanup run history for the app. Server-side only. - public async Task> GetRetentionPolicyRunsAsync(object request = null, + + // Returns filtered and sorted retention cleanup run history for the app. Supports filter_conditions on 'policy' (possible values: 'old-messages', 'inactive-channels') and 'date' fields. Server-side only. + public async Task> GetRetentionPolicyRunsAsync(GetRetentionPolicyRunsRequest request, CancellationToken cancellationToken = default) { - var queryParams = ExtractQueryParams(request); - var result = await _client.MakeRequestAsync( - "GET", - "/api/v2/chat/retention_policy/runs", queryParams, null, null, + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/chat/retention_policy/runs", null, request, null, cancellationToken); return result; } - + // Search messages across channels public async Task> SearchAsync(object request = null, CancellationToken cancellationToken = default) @@ -1268,7 +1267,7 @@ public async Task> SearchAsync(object request = n cancellationToken); return result; } - + // Query segments public async Task> QuerySegmentsAsync(QuerySegmentsRequest request, CancellationToken cancellationToken = default) @@ -1280,9 +1279,9 @@ public async Task> QuerySegmentsAsync(Quer cancellationToken); return result; } - + // Delete a segment - public async Task> DeleteSegmentAsync(string id, object request = null, + public async Task> DeleteSegmentAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1296,9 +1295,9 @@ public async Task> DeleteSegmentAsync(string id, object cancellationToken); return result; } - + // Get segment - public async Task> GetSegmentAsync(string id, object request = null, + public async Task> GetSegmentAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1312,9 +1311,9 @@ public async Task> GetSegmentAsync(string id, cancellationToken); return result; } - + // Delete targets from a segment - public async Task> DeleteSegmentTargetsAsync(string id, DeleteSegmentTargetsRequest request, + public async Task> DeleteSegmentTargetsAsync(string id,DeleteSegmentTargetsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1328,9 +1327,9 @@ public async Task> DeleteSegmentTargetsAsync(string id, cancellationToken); return result; } - + // Check whether a target exists in a segment. Returns 200 if the target exists, 404 otherwise - public async Task> SegmentTargetExistsAsync(string id, string targetID, object request = null, + public async Task> SegmentTargetExistsAsync(string id, string targetID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1345,9 +1344,9 @@ public async Task> SegmentTargetExistsAsync(string id, cancellationToken); return result; } - + // Query segment targets - public async Task> QuerySegmentTargetsAsync(string id, QuerySegmentTargetsRequest request, + public async Task> QuerySegmentTargetsAsync(string id,QuerySegmentTargetsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1361,15 +1360,15 @@ public async Task> QuerySegmentTarge cancellationToken); return result; } - + // Retrieve team-level usage statistics from the warehouse database. // Returns all 16 metrics grouped by team with cursor-based pagination. - + // **Date Range Options (mutually exclusive):** // - Use 'month' parameter (YYYY-MM format) for monthly aggregated values // - Use 'start_date'/'end_date' parameters (YYYY-MM-DD format) for daily breakdown // - If neither provided, defaults to current month (monthly mode) - + // This endpoint is server-side only. public async Task> QueryTeamUsageStatsAsync(QueryTeamUsageStatsRequest request, CancellationToken cancellationToken = default) @@ -1381,7 +1380,7 @@ public async Task> QueryTeamUsageSta cancellationToken); return result; } - + // Returns the list of threads for specific user public async Task> QueryThreadsAsync(QueryThreadsRequest request, CancellationToken cancellationToken = default) @@ -1393,9 +1392,9 @@ public async Task> QueryThreadsAsync(QueryT cancellationToken); return result; } - + // Return a specific thread - public async Task> GetThreadAsync(string messageID, object request = null, + public async Task> GetThreadAsync(string messageID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1410,12 +1409,12 @@ public async Task> GetThreadAsync(string messa cancellationToken); return result; } - + // Updates certain fields of the thread - + // Sends events: // - thread.updated - public async Task> UpdateThreadPartialAsync(string messageID, UpdateThreadPartialRequest request, + public async Task> UpdateThreadPartialAsync(string messageID,UpdateThreadPartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1429,7 +1428,7 @@ public async Task> UpdateThreadParti cancellationToken); return result; } - + // Fetch unread counts for a single user public async Task> UnreadCountsAsync(object request = null, CancellationToken cancellationToken = default) @@ -1442,7 +1441,7 @@ public async Task> UnreadCountsAsync cancellationToken); return result; } - + // Fetch unread counts in batch for multiple users in one call public async Task> UnreadCountsBatchAsync(UnreadCountsBatchRequest request, CancellationToken cancellationToken = default) @@ -1454,12 +1453,12 @@ public async Task> UnreadCountsBatchAs cancellationToken); return result; } - + // Sends a custom event to a user - + // Sends events: // - * - public async Task> SendUserCustomEventAsync(string userID, SendUserCustomEventRequest request, + public async Task> SendUserCustomEventAsync(string userID,SendUserCustomEventRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1473,5 +1472,5 @@ public async Task> SendUserCustomEventAsync(string user cancellationToken); return result; } - } -} + } + } diff --git a/src/CommonClient.cs b/src/CommonClient.cs index 06a38f7..09730a6 100644 --- a/src/CommonClient.cs +++ b/src/CommonClient.cs @@ -36,10 +36,10 @@ private Dictionary ExtractQueryParams(object request) { if (request == null) return new Dictionary(); - + var queryParams = new Dictionary(); var properties = request.GetType().GetProperties(); - + foreach (var prop in properties) { var value = prop.GetValue(request); @@ -48,7 +48,7 @@ private Dictionary ExtractQueryParams(object request) queryParams[prop.Name.ToLower()] = value.ToString(); } } - + return queryParams; } public async Task> GetAppAsync(object request = null, @@ -59,7 +59,7 @@ public async Task> GetAppAsync(object req "GET", "/api/v2/app", null, null, null, cancellationToken); - + return result; } public async Task> UpdateAppAsync(UpdateAppRequest request, @@ -70,7 +70,7 @@ public async Task> UpdateAppAsync(UpdateAppRequest requ "PATCH", "/api/v2/app", null, request, null, cancellationToken); - + return result; } public async Task> ListBlockListsAsync(object request = null, @@ -82,7 +82,7 @@ public async Task> ListBlockListsAsync(obj "GET", "/api/v2/blocklists", queryParams, null, null, cancellationToken); - + return result; } public async Task> CreateBlockListAsync(CreateBlockListRequest request, @@ -93,10 +93,10 @@ public async Task> CreateBlockListAsync( "POST", "/api/v2/blocklists", null, request, null, cancellationToken); - + return result; } - public async Task> DeleteBlockListAsync(string name, object request = null, + public async Task> DeleteBlockListAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -109,10 +109,10 @@ public async Task> DeleteBlockListAsync(string name, ob "DELETE", "/api/v2/blocklists/{name}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> GetBlockListAsync(string name, object request = null, + public async Task> GetBlockListAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -125,10 +125,10 @@ public async Task> GetBlockListAsync(string "GET", "/api/v2/blocklists/{name}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> UpdateBlockListAsync(string name, UpdateBlockListRequest request, + public async Task> UpdateBlockListAsync(string name,UpdateBlockListRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -140,7 +140,7 @@ public async Task> UpdateBlockListAsync( "PUT", "/api/v2/blocklists/{name}", null, request, pathParams, cancellationToken); - + return result; } public async Task> CheckPushAsync(CheckPushRequest request, @@ -151,7 +151,7 @@ public async Task> CheckPushAsync(CheckPushReq "POST", "/api/v2/check_push", null, request, null, cancellationToken); - + return result; } public async Task> CheckSNSAsync(CheckSNSRequest request, @@ -162,7 +162,7 @@ public async Task> CheckSNSAsync(CheckSNSReques "POST", "/api/v2/check_sns", null, request, null, cancellationToken); - + return result; } public async Task> CheckSQSAsync(CheckSQSRequest request, @@ -173,7 +173,7 @@ public async Task> CheckSQSAsync(CheckSQSReques "POST", "/api/v2/check_sqs", null, request, null, cancellationToken); - + return result; } public async Task> DeleteDeviceAsync(object request = null, @@ -185,7 +185,7 @@ public async Task> DeleteDeviceAsync(object request = n "DELETE", "/api/v2/devices", queryParams, null, null, cancellationToken); - + return result; } public async Task> ListDevicesAsync(object request = null, @@ -197,7 +197,7 @@ public async Task> ListDevicesAsync(object r "GET", "/api/v2/devices", queryParams, null, null, cancellationToken); - + return result; } public async Task> CreateDeviceAsync(CreateDeviceRequest request, @@ -208,7 +208,7 @@ public async Task> CreateDeviceAsync(CreateDeviceReques "POST", "/api/v2/devices", null, request, null, cancellationToken); - + return result; } public async Task> ExportUsersAsync(ExportUsersRequest request, @@ -219,7 +219,7 @@ public async Task> ExportUsersAsync(ExportUs "POST", "/api/v2/export/users", null, request, null, cancellationToken); - + return result; } public async Task> ListExternalStorageAsync(object request = null, @@ -230,7 +230,7 @@ public async Task> ListExternalStora "GET", "/api/v2/external_storage", null, null, null, cancellationToken); - + return result; } public async Task> CreateExternalStorageAsync(CreateExternalStorageRequest request, @@ -241,10 +241,10 @@ public async Task> CreateExternalS "POST", "/api/v2/external_storage", null, request, null, cancellationToken); - + return result; } - public async Task> DeleteExternalStorageAsync(string name, object request = null, + public async Task> DeleteExternalStorageAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -256,10 +256,10 @@ public async Task> DeleteExternalS "DELETE", "/api/v2/external_storage/{name}", null, null, pathParams, cancellationToken); - + return result; } - public async Task> UpdateExternalStorageAsync(string name, UpdateExternalStorageRequest request, + public async Task> UpdateExternalStorageAsync(string name,UpdateExternalStorageRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -271,10 +271,10 @@ public async Task> UpdateExternalS "PUT", "/api/v2/external_storage/{name}", null, request, pathParams, cancellationToken); - + return result; } - public async Task> CheckExternalStorageAsync(string name, object request = null, + public async Task> CheckExternalStorageAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -286,7 +286,7 @@ public async Task> CheckExternalSto "GET", "/api/v2/external_storage/{name}/check", null, null, pathParams, cancellationToken); - + return result; } public async Task> CreateGuestAsync(CreateGuestRequest request, @@ -297,7 +297,7 @@ public async Task> CreateGuestAsync(CreateGu "POST", "/api/v2/guest", null, request, null, cancellationToken); - + return result; } public async Task> CreateImportURLAsync(CreateImportURLRequest request, @@ -308,7 +308,7 @@ public async Task> CreateImportURLAsync( "POST", "/api/v2/import_urls", null, request, null, cancellationToken); - + return result; } public async Task> ListImportsAsync(object request = null, @@ -319,7 +319,7 @@ public async Task> ListImportsAsync(object r "GET", "/api/v2/imports", null, null, null, cancellationToken); - + return result; } public async Task> CreateImportAsync(CreateImportRequest request, @@ -330,7 +330,7 @@ public async Task> CreateImportAsync(Create "POST", "/api/v2/imports", null, request, null, cancellationToken); - + return result; } public async Task> ListImportV2TasksAsync(object request = null, @@ -342,7 +342,7 @@ public async Task> ListImportV2TasksAs "GET", "/api/v2/imports/v2", queryParams, null, null, cancellationToken); - + return result; } public async Task> CreateImportV2TaskAsync(CreateImportV2TaskRequest request, @@ -353,10 +353,54 @@ public async Task> CreateImportV2Task "POST", "/api/v2/imports/v2", null, request, null, cancellationToken); + + return result; + } + public async Task> DeleteImporterExternalStorageAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "DELETE", + "/api/v2/imports/v2/external-storage", null, null, null, + cancellationToken); + + return result; + } + public async Task> GetImporterExternalStorageAsync(object request = null, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "GET", + "/api/v2/imports/v2/external-storage", null, null, null, + cancellationToken); + + return result; + } + public async Task> UpsertImporterExternalStorageAsync(UpsertExternalStorageRequest request, + CancellationToken cancellationToken = default) + { + + var result = await MakeRequestAsync( + "PUT", + "/api/v2/imports/v2/external-storage", null, request, null, + cancellationToken); + + return result; + } + public async Task> ValidateImporterExternalStorageAsync(object request = null, + CancellationToken cancellationToken = default) + { + var result = await MakeRequestAsync( + "POST", + "/api/v2/imports/v2/external-storage/validate", null, null, null, + cancellationToken); + return result; } - public async Task> DeleteImportV2TaskAsync(string id, object request = null, + public async Task> DeleteImportV2TaskAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -368,10 +412,10 @@ public async Task> DeleteImportV2Task "DELETE", "/api/v2/imports/v2/{id}", null, null, pathParams, cancellationToken); - + return result; } - public async Task> GetImportV2TaskAsync(string id, object request = null, + public async Task> GetImportV2TaskAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -383,10 +427,10 @@ public async Task> GetImportV2TaskAsync( "GET", "/api/v2/imports/v2/{id}", null, null, pathParams, cancellationToken); - + return result; } - public async Task> GetImportAsync(string id, object request = null, + public async Task> GetImportAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -398,7 +442,7 @@ public async Task> GetImportAsync(string id, o "GET", "/api/v2/imports/{id}", null, null, pathParams, cancellationToken); - + return result; } public async Task> GetOGAsync(object request = null, @@ -410,7 +454,7 @@ public async Task> GetOGAsync(object request = nul "GET", "/api/v2/og", queryParams, null, null, cancellationToken); - + return result; } public async Task> ListPermissionsAsync(object request = null, @@ -421,10 +465,10 @@ public async Task> ListPermissionsAsync( "GET", "/api/v2/permissions", null, null, null, cancellationToken); - + return result; } - public async Task> GetPermissionAsync(string id, object request = null, + public async Task> GetPermissionAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -436,7 +480,7 @@ public async Task> GetPermissionAsyn "GET", "/api/v2/permissions/{id}", null, null, pathParams, cancellationToken); - + return result; } public async Task> CreatePollAsync(CreatePollRequest request, @@ -447,7 +491,7 @@ public async Task> CreatePollAsync(CreatePollReques "POST", "/api/v2/polls", null, request, null, cancellationToken); - + return result; } public async Task> UpdatePollAsync(UpdatePollRequest request, @@ -458,7 +502,7 @@ public async Task> UpdatePollAsync(UpdatePollReques "PUT", "/api/v2/polls", null, request, null, cancellationToken); - + return result; } public async Task> QueryPollsAsync(QueryPollsRequest request, @@ -470,10 +514,10 @@ public async Task> QueryPollsAsync(QueryPolls "POST", "/api/v2/polls/query", queryParams, request, null, cancellationToken); - + return result; } - public async Task> DeletePollAsync(string pollID, object request = null, + public async Task> DeletePollAsync(string pollID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -486,10 +530,10 @@ public async Task> DeletePollAsync(string pollID, objec "DELETE", "/api/v2/polls/{poll_id}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> GetPollAsync(string pollID, object request = null, + public async Task> GetPollAsync(string pollID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -502,10 +546,10 @@ public async Task> GetPollAsync(string pollID, obje "GET", "/api/v2/polls/{poll_id}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> UpdatePollPartialAsync(string pollID, UpdatePollPartialRequest request, + public async Task> UpdatePollPartialAsync(string pollID,UpdatePollPartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -517,10 +561,10 @@ public async Task> UpdatePollPartialAsync(string po "PATCH", "/api/v2/polls/{poll_id}", null, request, pathParams, cancellationToken); - + return result; } - public async Task> CreatePollOptionAsync(string pollID, CreatePollOptionRequest request, + public async Task> CreatePollOptionAsync(string pollID,CreatePollOptionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -532,10 +576,10 @@ public async Task> CreatePollOptionAsync(stri "POST", "/api/v2/polls/{poll_id}/options", null, request, pathParams, cancellationToken); - + return result; } - public async Task> UpdatePollOptionAsync(string pollID, UpdatePollOptionRequest request, + public async Task> UpdatePollOptionAsync(string pollID,UpdatePollOptionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -547,10 +591,10 @@ public async Task> UpdatePollOptionAsync(stri "PUT", "/api/v2/polls/{poll_id}/options", null, request, pathParams, cancellationToken); - + return result; } - public async Task> DeletePollOptionAsync(string pollID, string optionID, object request = null, + public async Task> DeletePollOptionAsync(string pollID, string optionID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -564,10 +608,10 @@ public async Task> DeletePollOptionAsync(string pollID, "DELETE", "/api/v2/polls/{poll_id}/options/{option_id}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> GetPollOptionAsync(string pollID, string optionID, object request = null, + public async Task> GetPollOptionAsync(string pollID, string optionID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -581,10 +625,10 @@ public async Task> GetPollOptionAsync(string "GET", "/api/v2/polls/{poll_id}/options/{option_id}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> QueryPollVotesAsync(string pollID, QueryPollVotesRequest request, + public async Task> QueryPollVotesAsync(string pollID,QueryPollVotesRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -597,7 +641,7 @@ public async Task> QueryPollVotesAsync(string "POST", "/api/v2/polls/{poll_id}/votes", queryParams, request, pathParams, cancellationToken); - + return result; } public async Task> UpdatePushNotificationPreferencesAsync(UpsertPushPreferencesRequest request, @@ -608,7 +652,7 @@ public async Task> UpdatePushNotif "POST", "/api/v2/push_preferences", null, request, null, cancellationToken); - + return result; } public async Task> ListPushProvidersAsync(object request = null, @@ -619,7 +663,7 @@ public async Task> ListPushProvidersAs "GET", "/api/v2/push_providers", null, null, null, cancellationToken); - + return result; } public async Task> UpsertPushProviderAsync(UpsertPushProviderRequest request, @@ -630,10 +674,10 @@ public async Task> UpsertPushProvider "POST", "/api/v2/push_providers", null, request, null, cancellationToken); - + return result; } - public async Task> DeletePushProviderAsync(string type, string name, object request = null, + public async Task> DeletePushProviderAsync(string type, string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -646,7 +690,7 @@ public async Task> DeletePushProviderAsync(string type, "DELETE", "/api/v2/push_providers/{type}/{name}", null, null, pathParams, cancellationToken); - + return result; } public async Task> GetPushTemplatesAsync(object request = null, @@ -658,7 +702,7 @@ public async Task> GetPushTemplatesAsyn "GET", "/api/v2/push_templates", queryParams, null, null, cancellationToken); - + return result; } public async Task> UpsertPushTemplateAsync(UpsertPushTemplateRequest request, @@ -669,7 +713,7 @@ public async Task> UpsertPushTemplate "POST", "/api/v2/push_templates", null, request, null, cancellationToken); - + return result; } public async Task> GetRateLimitsAsync(object request = null, @@ -681,7 +725,7 @@ public async Task> GetRateLimitsAsync(obje "GET", "/api/v2/rate_limits", queryParams, null, null, cancellationToken); - + return result; } public async Task> ListRolesAsync(object request = null, @@ -692,7 +736,7 @@ public async Task> ListRolesAsync(object reque "GET", "/api/v2/roles", null, null, null, cancellationToken); - + return result; } public async Task> CreateRoleAsync(CreateRoleRequest request, @@ -703,10 +747,10 @@ public async Task> CreateRoleAsync(CreateRole "POST", "/api/v2/roles", null, request, null, cancellationToken); - + return result; } - public async Task> DeleteRoleAsync(string name, object request = null, + public async Task> DeleteRoleAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -718,10 +762,10 @@ public async Task> DeleteRoleAsync(string name, object "DELETE", "/api/v2/roles/{name}", null, null, pathParams, cancellationToken); - + return result; } - public async Task> GetTaskAsync(string id, object request = null, + public async Task> GetTaskAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -733,7 +777,7 @@ public async Task> GetTaskAsync(string id, objec "GET", "/api/v2/tasks/{id}", null, null, pathParams, cancellationToken); - + return result; } public async Task> DeleteFileAsync(object request = null, @@ -745,7 +789,7 @@ public async Task> DeleteFileAsync(object request = nul "DELETE", "/api/v2/uploads/file", queryParams, null, null, cancellationToken); - + return result; } public async Task> FileUploadAsync(FileUploadRequest request, @@ -756,7 +800,7 @@ public async Task> FileUploadAsync(FileUpload "POST", "/api/v2/uploads/file", null, request, null, cancellationToken); - + return result; } public async Task> DeleteImageAsync(object request = null, @@ -768,7 +812,7 @@ public async Task> DeleteImageAsync(object request = nu "DELETE", "/api/v2/uploads/image", queryParams, null, null, cancellationToken); - + return result; } public async Task> ImageUploadAsync(ImageUploadRequest request, @@ -779,7 +823,7 @@ public async Task> ImageUploadAsync(ImageUpl "POST", "/api/v2/uploads/image", null, request, null, cancellationToken); - + return result; } public async Task> ListUserGroupsAsync(object request = null, @@ -791,7 +835,7 @@ public async Task> ListUserGroupsAsync(ob "GET", "/api/v2/usergroups", queryParams, null, null, cancellationToken); - + return result; } public async Task> CreateUserGroupAsync(CreateUserGroupRequest request, @@ -802,7 +846,7 @@ public async Task> CreateUserGroupAsync( "POST", "/api/v2/usergroups", null, request, null, cancellationToken); - + return result; } public async Task> SearchUserGroupsAsync(object request = null, @@ -814,10 +858,10 @@ public async Task> SearchUserGroupsAsyn "GET", "/api/v2/usergroups/search", queryParams, null, null, cancellationToken); - + return result; } - public async Task> DeleteUserGroupAsync(string id, object request = null, + public async Task> DeleteUserGroupAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -830,10 +874,10 @@ public async Task> DeleteUserGroupAsync(string id, obje "DELETE", "/api/v2/usergroups/{id}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> GetUserGroupAsync(string id, object request = null, + public async Task> GetUserGroupAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -846,10 +890,10 @@ public async Task> GetUserGroupAsync(string "GET", "/api/v2/usergroups/{id}", queryParams, null, pathParams, cancellationToken); - + return result; } - public async Task> UpdateUserGroupAsync(string id, UpdateUserGroupRequest request, + public async Task> UpdateUserGroupAsync(string id,UpdateUserGroupRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -861,10 +905,10 @@ public async Task> UpdateUserGroupAsync( "PUT", "/api/v2/usergroups/{id}", null, request, pathParams, cancellationToken); - + return result; } - public async Task> AddUserGroupMembersAsync(string id, AddUserGroupMembersRequest request, + public async Task> AddUserGroupMembersAsync(string id,AddUserGroupMembersRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -876,10 +920,10 @@ public async Task> AddUserGroupMembe "POST", "/api/v2/usergroups/{id}/members", null, request, pathParams, cancellationToken); - + return result; } - public async Task> RemoveUserGroupMembersAsync(string id, RemoveUserGroupMembersRequest request, + public async Task> RemoveUserGroupMembersAsync(string id,RemoveUserGroupMembersRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -891,7 +935,7 @@ public async Task> RemoveUserGrou "POST", "/api/v2/usergroups/{id}/members/delete", null, request, pathParams, cancellationToken); - + return result; } public async Task> QueryUsersAsync(object request = null, @@ -903,7 +947,7 @@ public async Task> QueryUsersAsync(object req "GET", "/api/v2/users", queryParams, null, null, cancellationToken); - + return result; } public async Task> UpdateUsersPartialAsync(UpdateUsersPartialRequest request, @@ -914,7 +958,7 @@ public async Task> UpdateUsersPartialAsync(U "PATCH", "/api/v2/users", null, request, null, cancellationToken); - + return result; } public async Task> UpdateUsersAsync(UpdateUsersRequest request, @@ -925,7 +969,7 @@ public async Task> UpdateUsersAsync(UpdateUs "POST", "/api/v2/users", null, request, null, cancellationToken); - + return result; } public async Task> GetBlockedUsersAsync(object request = null, @@ -937,7 +981,7 @@ public async Task> GetBlockedUsersAsync( "GET", "/api/v2/users/block", queryParams, null, null, cancellationToken); - + return result; } public async Task> BlockUsersAsync(BlockUsersRequest request, @@ -948,7 +992,7 @@ public async Task> BlockUsersAsync(BlockUsers "POST", "/api/v2/users/block", null, request, null, cancellationToken); - + return result; } public async Task> DeactivateUsersAsync(DeactivateUsersRequest request, @@ -959,7 +1003,7 @@ public async Task> DeactivateUsersAsync( "POST", "/api/v2/users/deactivate", null, request, null, cancellationToken); - + return result; } public async Task> DeleteUsersAsync(DeleteUsersRequest request, @@ -970,7 +1014,7 @@ public async Task> DeleteUsersAsync(DeleteUs "POST", "/api/v2/users/delete", null, request, null, cancellationToken); - + return result; } public async Task> GetUserLiveLocationsAsync(object request = null, @@ -982,7 +1026,7 @@ public async Task> GetUserLiveLocationsA "GET", "/api/v2/users/live_locations", queryParams, null, null, cancellationToken); - + return result; } public async Task> UpdateLiveLocationAsync(UpdateLiveLocationRequest request, @@ -994,7 +1038,7 @@ public async Task> UpdateLiveLocationAsyn "PUT", "/api/v2/users/live_locations", queryParams, request, null, cancellationToken); - + return result; } public async Task> ReactivateUsersAsync(ReactivateUsersRequest request, @@ -1005,7 +1049,7 @@ public async Task> ReactivateUsersAsync( "POST", "/api/v2/users/reactivate", null, request, null, cancellationToken); - + return result; } public async Task> RestoreUsersAsync(RestoreUsersRequest request, @@ -1016,7 +1060,7 @@ public async Task> RestoreUsersAsync(RestoreUsersReques "POST", "/api/v2/users/restore", null, request, null, cancellationToken); - + return result; } public async Task> UnblockUsersAsync(UnblockUsersRequest request, @@ -1027,10 +1071,10 @@ public async Task> UnblockUsersAsync(Unbloc "POST", "/api/v2/users/unblock", null, request, null, cancellationToken); - + return result; } - public async Task> DeactivateUserAsync(string userID, DeactivateUserRequest request, + public async Task> DeactivateUserAsync(string userID,DeactivateUserRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1042,10 +1086,10 @@ public async Task> DeactivateUserAsync(st "POST", "/api/v2/users/{user_id}/deactivate", null, request, pathParams, cancellationToken); - + return result; } - public async Task> ExportUserAsync(string userID, object request = null, + public async Task> ExportUserAsync(string userID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1057,10 +1101,10 @@ public async Task> ExportUserAsync(string use "GET", "/api/v2/users/{user_id}/export", null, null, pathParams, cancellationToken); - + return result; } - public async Task> ReactivateUserAsync(string userID, ReactivateUserRequest request, + public async Task> ReactivateUserAsync(string userID,ReactivateUserRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1072,9 +1116,9 @@ public async Task> ReactivateUserAsync(st "POST", "/api/v2/users/{user_id}/reactivate", null, request, pathParams, cancellationToken); - + return result; } - } -} + } + } diff --git a/src/Feed.cs b/src/Feed.cs index 2f48146..b27a43d 100644 --- a/src/Feed.cs +++ b/src/Feed.cs @@ -10,103 +10,103 @@ public class Feed(FeedsV3Client client, string feedGroup, string feedId) private readonly string _feedGroup = feedGroup ?? throw new ArgumentNullException(nameof(feedGroup)); private readonly string _feedId = feedId ?? throw new ArgumentNullException(nameof(feedId)); - // Delete a single feed by its ID - public async Task> DeleteFeedAsync( - object request = null, - CancellationToken cancellationToken = default) - { - return await _client.DeleteFeedAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Delete a single feed by its ID +public async Task> DeleteFeedAsync( + object request = null, + CancellationToken cancellationToken = default) +{ + return await _client.DeleteFeedAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Create a single feed for a given feed group - public async Task> GetOrCreateFeedAsync( - GetOrCreateFeedRequest request, - CancellationToken cancellationToken = default) - { - return await _client.GetOrCreateFeedAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Create a single feed for a given feed group +public async Task> GetOrCreateFeedAsync( + GetOrCreateFeedRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.GetOrCreateFeedAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Update an existing feed - public async Task> UpdateFeedAsync( - UpdateFeedRequest request, - CancellationToken cancellationToken = default) - { - return await _client.UpdateFeedAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Update an existing feed +public async Task> UpdateFeedAsync( + UpdateFeedRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.UpdateFeedAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Mark activities as read/seen/watched. Can mark by timestamp (seen), activity IDs (read), or all as read. - public async Task> MarkActivityAsync( - MarkActivityRequest request, - CancellationToken cancellationToken = default) - { - return await _client.MarkActivityAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Mark activities as read/seen/watched. Can mark by timestamp (seen), activity IDs (read), or all as read. +public async Task> MarkActivityAsync( + MarkActivityRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.MarkActivityAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Unpin an activity from a feed. This removes the pin, so the activity will no longer be displayed at the top of the feed. - public async Task> UnpinActivityAsync(string activityID, - object request = null, - CancellationToken cancellationToken = default) - { - return await _client.UnpinActivityAsync(_feedGroup, _feedId, - activityID, request, cancellationToken); - } +// Unpin an activity from a feed. This removes the pin, so the activity will no longer be displayed at the top of the feed. +public async Task> UnpinActivityAsync(string activityID, + object request = null, + CancellationToken cancellationToken = default) +{ + return await _client.UnpinActivityAsync(_feedGroup, _feedId, + activityID,request, cancellationToken); +} - // Pin an activity to a feed. Pinned activities are typically displayed at the top of a feed. - public async Task> PinActivityAsync(string activityID, - PinActivityRequest request, - CancellationToken cancellationToken = default) - { - return await _client.PinActivityAsync(_feedGroup, _feedId, - activityID, request, cancellationToken); - } +// Pin an activity to a feed. Pinned activities are typically displayed at the top of a feed. +public async Task> PinActivityAsync(string activityID, + PinActivityRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.PinActivityAsync(_feedGroup, _feedId, + activityID,request, cancellationToken); +} - // Add, remove, or set members for a feed - public async Task> UpdateFeedMembersAsync( - UpdateFeedMembersRequest request, - CancellationToken cancellationToken = default) - { - return await _client.UpdateFeedMembersAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Add, remove, or set members for a feed +public async Task> UpdateFeedMembersAsync( + UpdateFeedMembersRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.UpdateFeedMembersAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Accepts a pending feed member request - public async Task> AcceptFeedMemberInviteAsync( - AcceptFeedMemberInviteRequest request, - CancellationToken cancellationToken = default) - { - return await _client.AcceptFeedMemberInviteAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Accepts a pending feed member request +public async Task> AcceptFeedMemberInviteAsync( + AcceptFeedMemberInviteRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.AcceptFeedMemberInviteAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Query feed members based on filters with pagination and sorting options - public async Task> QueryFeedMembersAsync( - QueryFeedMembersRequest request, - CancellationToken cancellationToken = default) - { - return await _client.QueryFeedMembersAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Query feed members based on filters with pagination and sorting options +public async Task> QueryFeedMembersAsync( + QueryFeedMembersRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.QueryFeedMembersAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Rejects a pending feed member request - public async Task> RejectFeedMemberInviteAsync( - RejectFeedMemberInviteRequest request, - CancellationToken cancellationToken = default) - { - return await _client.RejectFeedMemberInviteAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Rejects a pending feed member request +public async Task> RejectFeedMemberInviteAsync( + RejectFeedMemberInviteRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.RejectFeedMemberInviteAsync(_feedGroup, _feedId, + request, cancellationToken); +} - // Query pinned activities for a feed with filter query - public async Task> QueryPinnedActivitiesAsync( - QueryPinnedActivitiesRequest request, - CancellationToken cancellationToken = default) - { - return await _client.QueryPinnedActivitiesAsync(_feedGroup, _feedId, - request, cancellationToken); - } +// Query pinned activities for a feed with filter query +public async Task> QueryPinnedActivitiesAsync( + QueryPinnedActivitiesRequest request, + CancellationToken cancellationToken = default) +{ + return await _client.QueryPinnedActivitiesAsync(_feedGroup, _feedId, + request, cancellationToken); +} } } \ No newline at end of file diff --git a/src/FeedsV3Client.cs b/src/FeedsV3Client.cs index 467bd4a..aa7d5ef 100644 --- a/src/FeedsV3Client.cs +++ b/src/FeedsV3Client.cs @@ -112,7 +112,7 @@ public async Task> QueryActivitiesAsync( return result; } - public async Task> DeleteBookmarkAsync(string activityID, object request = null, + public async Task> DeleteBookmarkAsync(string activityID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -128,7 +128,7 @@ public async Task> DeleteBookmarkAsync(st return result; } - public async Task> UpdateBookmarkAsync(string activityID, UpdateBookmarkRequest request, + public async Task> UpdateBookmarkAsync(string activityID,UpdateBookmarkRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -143,7 +143,7 @@ public async Task> UpdateBookmarkAsync(st return result; } - public async Task> AddBookmarkAsync(string activityID, AddBookmarkRequest request, + public async Task> AddBookmarkAsync(string activityID,AddBookmarkRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -158,7 +158,7 @@ public async Task> AddBookmarkAsync(string a return result; } - public async Task> ActivityFeedbackAsync(string activityID, ActivityFeedbackRequest request, + public async Task> ActivityFeedbackAsync(string activityID,ActivityFeedbackRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -173,7 +173,7 @@ public async Task> ActivityFeedbackAsyn return result; } - public async Task> CastPollVoteAsync(string activityID, string pollID, CastPollVoteRequest request, + public async Task> CastPollVoteAsync(string activityID, string pollID,CastPollVoteRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -189,7 +189,7 @@ public async Task> CastPollVoteAsync(string act return result; } - public async Task> DeletePollVoteAsync(string activityID, string pollID, string voteID, object request = null, + public async Task> DeletePollVoteAsync(string activityID, string pollID, string voteID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -207,7 +207,7 @@ public async Task> DeletePollVoteAsync(string a return result; } - public async Task> AddActivityReactionAsync(string activityID, AddReactionRequest request, + public async Task> AddActivityReactionAsync(string activityID,AddReactionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -222,7 +222,7 @@ public async Task> AddActivityReactionAsync( return result; } - public async Task> QueryActivityReactionsAsync(string activityID, QueryActivityReactionsRequest request, + public async Task> QueryActivityReactionsAsync(string activityID,QueryActivityReactionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -237,7 +237,7 @@ public async Task> QueryActivityR return result; } - public async Task> DeleteActivityReactionAsync(string activityID, string type, object request = null, + public async Task> DeleteActivityReactionAsync(string activityID, string type,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -254,7 +254,7 @@ public async Task> DeleteActivity return result; } - public async Task> DeleteActivityAsync(string id, object request = null, + public async Task> DeleteActivityAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -270,7 +270,7 @@ public async Task> DeleteActivityAsync(st return result; } - public async Task> GetActivityAsync(string id, object request = null, + public async Task> GetActivityAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -285,7 +285,7 @@ public async Task> GetActivityAsync(string i return result; } - public async Task> UpdateActivityPartialAsync(string id, UpdateActivityPartialRequest request, + public async Task> UpdateActivityPartialAsync(string id,UpdateActivityPartialRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -300,7 +300,7 @@ public async Task> UpdateActivityP return result; } - public async Task> UpdateActivityAsync(string id, UpdateActivityRequest request, + public async Task> UpdateActivityAsync(string id,UpdateActivityRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -315,7 +315,7 @@ public async Task> UpdateActivityAsync(st return result; } - public async Task> RestoreActivityAsync(string id, RestoreActivityRequest request, + public async Task> RestoreActivityAsync(string id,RestoreActivityRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -342,7 +342,7 @@ public async Task> QueryBookmarkFol return result; } - public async Task> DeleteBookmarkFolderAsync(string folderID, object request = null, + public async Task> DeleteBookmarkFolderAsync(string folderID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -357,7 +357,7 @@ public async Task> DeleteBookmarkFo return result; } - public async Task> UpdateBookmarkFolderAsync(string folderID, UpdateBookmarkFolderRequest request, + public async Task> UpdateBookmarkFolderAsync(string folderID,UpdateBookmarkFolderRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -496,7 +496,7 @@ public async Task> QueryCommentsAsync(Quer return result; } - public async Task> DeleteCommentAsync(string id, object request = null, + public async Task> DeleteCommentAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -512,7 +512,7 @@ public async Task> DeleteCommentAsync(stri return result; } - public async Task> GetCommentAsync(string id, object request = null, + public async Task> GetCommentAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -527,7 +527,7 @@ public async Task> GetCommentAsync(string id, return result; } - public async Task> UpdateCommentAsync(string id, UpdateCommentRequest request, + public async Task> UpdateCommentAsync(string id,UpdateCommentRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -542,7 +542,22 @@ public async Task> UpdateCommentAsync(stri return result; } - public async Task> AddCommentReactionAsync(string id, AddCommentReactionRequest request, + public async Task> UpdateCommentPartialAsync(string id,UpdateCommentPartialRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = id, + }; + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/comments/{id}/partial", null, request, pathParams, + cancellationToken); + + return result; + } + public async Task> AddCommentReactionAsync(string id,AddCommentReactionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -557,7 +572,7 @@ public async Task> AddCommentReaction return result; } - public async Task> QueryCommentReactionsAsync(string id, QueryCommentReactionsRequest request, + public async Task> QueryCommentReactionsAsync(string id,QueryCommentReactionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -572,7 +587,7 @@ public async Task> QueryCommentRea return result; } - public async Task> DeleteCommentReactionAsync(string id, string type, object request = null, + public async Task> DeleteCommentReactionAsync(string id, string type,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -589,7 +604,7 @@ public async Task> DeleteCommentRe return result; } - public async Task> GetCommentRepliesAsync(string id, object request = null, + public async Task> GetCommentRepliesAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -605,6 +620,21 @@ public async Task> GetCommentRepliesAs return result; } + public async Task> RestoreCommentAsync(string id,RestoreCommentRequest request, + CancellationToken cancellationToken = default) + { + var pathParams = new Dictionary + { + ["id"] = id, + }; + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/feeds/comments/{id}/restore", null, request, pathParams, + cancellationToken); + + return result; + } public async Task> ListFeedGroupsAsync(object request = null, CancellationToken cancellationToken = default) { @@ -628,7 +658,7 @@ public async Task> CreateFeedGroupAsync( return result; } - public async Task> DeleteFeedAsync(string feedGroupID, string feedID, object request = null, + public async Task> DeleteFeedAsync(string feedGroupID, string feedID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -645,7 +675,7 @@ public async Task> DeleteFeedAsync(string fee return result; } - public async Task> GetOrCreateFeedAsync(string feedGroupID, string feedID, GetOrCreateFeedRequest request, + public async Task> GetOrCreateFeedAsync(string feedGroupID, string feedID,GetOrCreateFeedRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -661,7 +691,7 @@ public async Task> GetOrCreateFeedAsync( return result; } - public async Task> UpdateFeedAsync(string feedGroupID, string feedID, UpdateFeedRequest request, + public async Task> UpdateFeedAsync(string feedGroupID, string feedID,UpdateFeedRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -677,7 +707,7 @@ public async Task> UpdateFeedAsync(string fee return result; } - public async Task> MarkActivityAsync(string feedGroupID, string feedID, MarkActivityRequest request, + public async Task> MarkActivityAsync(string feedGroupID, string feedID,MarkActivityRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -693,7 +723,7 @@ public async Task> MarkActivityAsync(string feedGroupID return result; } - public async Task> UnpinActivityAsync(string feedGroupID, string feedID, string activityID, object request = null, + public async Task> UnpinActivityAsync(string feedGroupID, string feedID, string activityID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -711,7 +741,7 @@ public async Task> UnpinActivityAsync(stri return result; } - public async Task> PinActivityAsync(string feedGroupID, string feedID, string activityID, PinActivityRequest request, + public async Task> PinActivityAsync(string feedGroupID, string feedID, string activityID,PinActivityRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -728,7 +758,7 @@ public async Task> PinActivityAsync(string f return result; } - public async Task> UpdateFeedMembersAsync(string feedGroupID, string feedID, UpdateFeedMembersRequest request, + public async Task> UpdateFeedMembersAsync(string feedGroupID, string feedID,UpdateFeedMembersRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -744,7 +774,7 @@ public async Task> UpdateFeedMembersAs return result; } - public async Task> AcceptFeedMemberInviteAsync(string feedID, string feedGroupID, AcceptFeedMemberInviteRequest request, + public async Task> AcceptFeedMemberInviteAsync(string feedID, string feedGroupID,AcceptFeedMemberInviteRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -760,7 +790,7 @@ public async Task> AcceptFeedMemb return result; } - public async Task> QueryFeedMembersAsync(string feedGroupID, string feedID, QueryFeedMembersRequest request, + public async Task> QueryFeedMembersAsync(string feedGroupID, string feedID,QueryFeedMembersRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -776,7 +806,7 @@ public async Task> QueryFeedMembersAsyn return result; } - public async Task> RejectFeedMemberInviteAsync(string feedGroupID, string feedID, RejectFeedMemberInviteRequest request, + public async Task> RejectFeedMemberInviteAsync(string feedGroupID, string feedID,RejectFeedMemberInviteRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -792,7 +822,7 @@ public async Task> RejectFeedMemb return result; } - public async Task> QueryPinnedActivitiesAsync(string feedGroupID, string feedID, QueryPinnedActivitiesRequest request, + public async Task> QueryPinnedActivitiesAsync(string feedGroupID, string feedID,QueryPinnedActivitiesRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -808,7 +838,7 @@ public async Task> QueryPinnedActi return result; } - public async Task> GetFollowSuggestionsAsync(string feedGroupID, object request = null, + public async Task> GetFollowSuggestionsAsync(string feedGroupID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -824,7 +854,7 @@ public async Task> GetFollowSuggest return result; } - public async Task> RestoreFeedGroupAsync(string feedGroupID, object request = null, + public async Task> RestoreFeedGroupAsync(string feedGroupID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -839,7 +869,7 @@ public async Task> RestoreFeedGroupAsyn return result; } - public async Task> DeleteFeedGroupAsync(string id, object request = null, + public async Task> DeleteFeedGroupAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -855,7 +885,7 @@ public async Task> DeleteFeedGroupAsync( return result; } - public async Task> GetFeedGroupAsync(string id, object request = null, + public async Task> GetFeedGroupAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -871,7 +901,7 @@ public async Task> GetFeedGroupAsync(string return result; } - public async Task> GetOrCreateFeedGroupAsync(string id, GetOrCreateFeedGroupRequest request, + public async Task> GetOrCreateFeedGroupAsync(string id,GetOrCreateFeedGroupRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -886,7 +916,7 @@ public async Task> GetOrCreateFeedG return result; } - public async Task> UpdateFeedGroupAsync(string id, UpdateFeedGroupRequest request, + public async Task> UpdateFeedGroupAsync(string id,UpdateFeedGroupRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -923,7 +953,7 @@ public async Task> CreateFeedViewAsync(Cr return result; } - public async Task> DeleteFeedViewAsync(string id, object request = null, + public async Task> DeleteFeedViewAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -938,7 +968,7 @@ public async Task> DeleteFeedViewAsync(st return result; } - public async Task> GetFeedViewAsync(string id, object request = null, + public async Task> GetFeedViewAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -953,7 +983,7 @@ public async Task> GetFeedViewAsync(string i return result; } - public async Task> GetOrCreateFeedViewAsync(string id, GetOrCreateFeedViewRequest request, + public async Task> GetOrCreateFeedViewAsync(string id,GetOrCreateFeedViewRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -968,7 +998,7 @@ public async Task> GetOrCreateFeedVi return result; } - public async Task> UpdateFeedViewAsync(string id, UpdateFeedViewRequest request, + public async Task> UpdateFeedViewAsync(string id,UpdateFeedViewRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -994,7 +1024,7 @@ public async Task> ListFeedVisibili return result; } - public async Task> GetFeedVisibilityAsync(string name, object request = null, + public async Task> GetFeedVisibilityAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1009,7 +1039,7 @@ public async Task> GetFeedVisibilityAs return result; } - public async Task> UpdateFeedVisibilityAsync(string name, UpdateFeedVisibilityRequest request, + public async Task> UpdateFeedVisibilityAsync(string name,UpdateFeedVisibilityRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1157,7 +1187,7 @@ public async Task> RejectFollowAsync(Reject return result; } - public async Task> UnfollowAsync(string source, string target, object request = null, + public async Task> UnfollowAsync(string source, string target,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1196,7 +1226,7 @@ public async Task> QueryMembership return result; } - public async Task> DeleteMembershipLevelAsync(string id, object request = null, + public async Task> DeleteMembershipLevelAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1211,7 +1241,7 @@ public async Task> DeleteMembershipLevelAsync(string id return result; } - public async Task> UpdateMembershipLevelAsync(string id, UpdateMembershipLevelRequest request, + public async Task> UpdateMembershipLevelAsync(string id,UpdateMembershipLevelRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1259,7 +1289,7 @@ public async Task> GetOrCreateUnfollowsAsy return result; } - public async Task> DeleteFeedUserDataAsync(string userID, DeleteFeedUserDataRequest request, + public async Task> DeleteFeedUserDataAsync(string userID,DeleteFeedUserDataRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1274,7 +1304,7 @@ public async Task> DeleteFeedUserData return result; } - public async Task> ExportFeedUserDataAsync(string userID, object request = null, + public async Task> ExportFeedUserDataAsync(string userID,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1289,5 +1319,5 @@ public async Task> ExportFeedUserData return result; } - } -} \ No newline at end of file + } + } \ No newline at end of file diff --git a/src/ModerationClient.cs b/src/ModerationClient.cs index 8026202..c459fb8 100644 --- a/src/ModerationClient.cs +++ b/src/ModerationClient.cs @@ -42,6 +42,17 @@ private Dictionary ExtractQueryParams(object request) return queryParams; } + public async Task> InsertActionLogAsync(InsertActionLogRequest request, + CancellationToken cancellationToken = default) + { + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/moderation/action_logs", null, request, null, + cancellationToken); + + return result; + } public async Task> AppealAsync(AppealRequest request, CancellationToken cancellationToken = default) { @@ -53,7 +64,7 @@ public async Task> AppealAsync(AppealRequest requ return result; } - public async Task> GetAppealAsync(string id, object request = null, + public async Task> GetAppealAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -134,7 +145,7 @@ public async Task> UpsertConfigAsync(Upsert return result; } - public async Task> DeleteConfigAsync(string key, object request = null, + public async Task> DeleteConfigAsync(string key,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -150,7 +161,7 @@ public async Task> DeleteConfigAs return result; } - public async Task> GetConfigAsync(string key, object request = null, + public async Task> GetConfigAsync(string key,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -232,6 +243,17 @@ public async Task> FlagAsync(FlagRequest request, return result; } + public async Task> GetFlagCountAsync(GetFlagCountRequest request, + CancellationToken cancellationToken = default) + { + + var result = await _client.MakeRequestAsync( + "POST", + "/api/v2/moderation/flag_count", null, request, null, + cancellationToken); + + return result; + } public async Task> QueryModerationFlagsAsync(QueryModerationFlagsRequest request, CancellationToken cancellationToken = default) { @@ -320,7 +342,7 @@ public async Task> QueryReviewQueueAsyn return result; } - public async Task> GetReviewQueueItemAsync(string id, object request = null, + public async Task> GetReviewQueueItemAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -369,5 +391,5 @@ public async Task> UnmuteAsync(UnmuteRequest requ return result; } - } -} \ No newline at end of file + } + } \ No newline at end of file diff --git a/src/VideoClient.cs b/src/VideoClient.cs index a6aaf16..03280ca 100644 --- a/src/VideoClient.cs +++ b/src/VideoClient.cs @@ -34,7 +34,7 @@ private Dictionary ExtractQueryParams(object request) return queryParams; } - + // Get the current status of all active calls including metrics and summary information public async Task> GetActiveCallsStatusAsync(object request = null, CancellationToken cancellationToken = default) @@ -46,8 +46,8 @@ public async Task> GetActiveCallsSt cancellationToken); return result; } - - + + public async Task> QueryUserFeedbackAsync(QueryUserFeedbackRequest request, CancellationToken cancellationToken = default) { @@ -59,7 +59,7 @@ public async Task> QueryUserFeedbackAs cancellationToken); return result; } - + // Query call members with filter query public async Task> QueryCallMembersAsync(QueryCallMembersRequest request, CancellationToken cancellationToken = default) @@ -71,8 +71,8 @@ public async Task> QueryCallMembersAsyn cancellationToken); return result; } - - + + public async Task> QueryCallStatsAsync(QueryCallStatsRequest request, CancellationToken cancellationToken = default) { @@ -83,9 +83,9 @@ public async Task> QueryCallStatsAsync(Qu cancellationToken); return result; } - - - public async Task> GetCallAsync(string type, string id, object request = null, + + + public async Task> GetCallAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -101,12 +101,12 @@ public async Task> GetCallAsync(string type, str cancellationToken); return result; } - - - + + + // Sends events: // - call.updated - public async Task> UpdateCallAsync(string type, string id, UpdateCallRequest request, + public async Task> UpdateCallAsync(string type, string id,UpdateCallRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -121,14 +121,14 @@ public async Task> UpdateCallAsync(string typ cancellationToken); return result; } - + // Gets or creates a new call - + // Sends events: // - call.created // - call.notification // - call.ring - public async Task> GetOrCreateCallAsync(string type, string id, GetOrCreateCallRequest request, + public async Task> GetOrCreateCallAsync(string type, string id,GetOrCreateCallRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -143,12 +143,12 @@ public async Task> GetOrCreateCallAsync( cancellationToken); return result; } - + // Block a user, preventing them from joining the call until they are unblocked. - + // Sends events: // - call.blocked_user - public async Task> BlockUserAsync(string type, string id, BlockUserRequest request, + public async Task> BlockUserAsync(string type, string id,BlockUserRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -163,12 +163,12 @@ public async Task> BlockUserAsync(string type, cancellationToken); return result; } - + // Sends a closed caption event to the call - + // Sends events: // - call.closed_caption - public async Task> SendClosedCaptionAsync(string type, string id, SendClosedCaptionRequest request, + public async Task> SendClosedCaptionAsync(string type, string id,SendClosedCaptionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -183,12 +183,12 @@ public async Task> SendClosedCaptionAs cancellationToken); return result; } - - - + + + // Sends events: // - call.deleted - public async Task> DeleteCallAsync(string type, string id, DeleteCallRequest request, + public async Task> DeleteCallAsync(string type, string id,DeleteCallRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -203,12 +203,12 @@ public async Task> DeleteCallAsync(string typ cancellationToken); return result; } - + // Sends custom event to the call - + // Sends events: // - custom - public async Task> SendCallEventAsync(string type, string id, SendCallEventRequest request, + public async Task> SendCallEventAsync(string type, string id,SendCallEventRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -223,12 +223,12 @@ public async Task> SendCallEventAsync(stri cancellationToken); return result; } - - - + + + // Sends events: // - call.user_feedback_submitted - public async Task> CollectUserFeedbackAsync(string type, string id, CollectUserFeedbackRequest request, + public async Task> CollectUserFeedbackAsync(string type, string id,CollectUserFeedbackRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -243,12 +243,12 @@ public async Task> CollectUserFeedba cancellationToken); return result; } - - - + + + // Sends events: // - call.live_started - public async Task> GoLiveAsync(string type, string id, GoLiveRequest request, + public async Task> GoLiveAsync(string type, string id,GoLiveRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -263,13 +263,13 @@ public async Task> GoLiveAsync(string type, strin cancellationToken); return result; } - + // Kicks a user from the call. Optionally block the user from rejoining by setting block=true. - + // Sends events: // - call.blocked_user // - call.kicked_user - public async Task> KickUserAsync(string type, string id, KickUserRequest request, + public async Task> KickUserAsync(string type, string id,KickUserRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -284,12 +284,12 @@ public async Task> KickUserAsync(string type, s cancellationToken); return result; } - - - + + + // Sends events: // - call.ended - public async Task> EndCallAsync(string type, string id, object request = null, + public async Task> EndCallAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -304,14 +304,14 @@ public async Task> EndCallAsync(string type, str cancellationToken); return result; } - - - + + + // Sends events: // - call.member_added // - call.member_removed // - call.member_updated - public async Task> UpdateCallMembersAsync(string type, string id, UpdateCallMembersRequest request, + public async Task> UpdateCallMembersAsync(string type, string id,UpdateCallMembersRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -326,9 +326,9 @@ public async Task> UpdateCallMembersAs cancellationToken); return result; } - + // Mutes users in a call - public async Task> MuteUsersAsync(string type, string id, MuteUsersRequest request, + public async Task> MuteUsersAsync(string type, string id,MuteUsersRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -343,9 +343,9 @@ public async Task> MuteUsersAsync(string type, cancellationToken); return result; } - + // Returns a list of participants connected to the call - public async Task> QueryCallParticipantsAsync(string id, string type, QueryCallParticipantsRequest request, + public async Task> QueryCallParticipantsAsync(string id, string type,QueryCallParticipantsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -361,9 +361,9 @@ public async Task> QueryCallPartic cancellationToken); return result; } - + // Pins a track for all users in the call. - public async Task> VideoPinAsync(string type, string id, PinRequest request, + public async Task> VideoPinAsync(string type, string id,PinRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -378,9 +378,9 @@ public async Task> VideoPinAsync(string type, string cancellationToken); return result; } - + // Lists recordings - public async Task> ListRecordingsAsync(string type, string id, object request = null, + public async Task> ListRecordingsAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -395,12 +395,12 @@ public async Task> ListRecordingsAsync(st cancellationToken); return result; } - + // Starts recording - + // Sends events: // - call.recording_started - public async Task> StartRecordingAsync(string type, string id, string recordingType, StartRecordingRequest request, + public async Task> StartRecordingAsync(string type, string id, string recordingType,StartRecordingRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -416,12 +416,12 @@ public async Task> StartRecordingAsync(st cancellationToken); return result; } - + // Stops recording - + // Sends events: // - call.recording_stopped - public async Task> StopRecordingAsync(string type, string id, string recordingType, StopRecordingRequest request, + public async Task> StopRecordingAsync(string type, string id, string recordingType,StopRecordingRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -437,9 +437,9 @@ public async Task> StopRecordingAsync(stri cancellationToken); return result; } - - - public async Task> GetCallReportAsync(string type, string id, object request = null, + + + public async Task> GetCallReportAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -455,12 +455,12 @@ public async Task> GetCallReportAsync(stri cancellationToken); return result; } - + // Sends a ring notification to the provided users who are not already in the call. All users should be members of the call - + // Sends events: // - call.ring - public async Task> RingCallAsync(string type, string id, RingCallRequest request, + public async Task> RingCallAsync(string type, string id,RingCallRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -475,9 +475,9 @@ public async Task> RingCallAsync(string type, s cancellationToken); return result; } - + // Starts RTMP broadcasts for the provided RTMP destinations - public async Task> StartRTMPBroadcastsAsync(string type, string id, StartRTMPBroadcastsRequest request, + public async Task> StartRTMPBroadcastsAsync(string type, string id,StartRTMPBroadcastsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -492,9 +492,9 @@ public async Task> StartRTMPBroadcas cancellationToken); return result; } - + // Stop all RTMP broadcasts for the provided call - public async Task> StopAllRTMPBroadcastsAsync(string type, string id, object request = null, + public async Task> StopAllRTMPBroadcastsAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -509,9 +509,9 @@ public async Task> StopAllRTMPBroa cancellationToken); return result; } - + // Stop RTMP broadcasts for the provided RTMP destinations - public async Task> StopRTMPBroadcastAsync(string type, string id, string name, StopRTMPBroadcastsRequest request, + public async Task> StopRTMPBroadcastAsync(string type, string id, string name,StopRTMPBroadcastsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -527,9 +527,9 @@ public async Task> StopRTMPBroadcastA cancellationToken); return result; } - - - public async Task> GetCallParticipantSessionMetricsAsync(string type, string id, string session, string user, string userSession, object request = null, + + + public async Task> GetCallParticipantSessionMetricsAsync(string type, string id, string session, string user, string userSession,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -548,9 +548,9 @@ public async Task> GetC cancellationToken); return result; } - - - public async Task> QueryCallParticipantSessionsAsync(string type, string id, string session, object request = null, + + + public async Task> QueryCallParticipantSessionsAsync(string type, string id, string session,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -567,9 +567,9 @@ public async Task> QueryCal cancellationToken); return result; } - + // Starts HLS broadcasting - public async Task> StartHLSBroadcastingAsync(string type, string id, object request = null, + public async Task> StartHLSBroadcastingAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -584,9 +584,9 @@ public async Task> StartHLSBroadcas cancellationToken); return result; } - + // Starts closed captions - public async Task> StartClosedCaptionsAsync(string type, string id, StartClosedCaptionsRequest request, + public async Task> StartClosedCaptionsAsync(string type, string id,StartClosedCaptionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -601,12 +601,12 @@ public async Task> StartClosedCaptio cancellationToken); return result; } - + // Starts frame by frame recording - + // Sends events: // - call.frame_recording_started - public async Task> StartFrameRecordingAsync(string type, string id, StartFrameRecordingRequest request, + public async Task> StartFrameRecordingAsync(string type, string id,StartFrameRecordingRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -621,9 +621,9 @@ public async Task> StartFrameRecordi cancellationToken); return result; } - + // Starts transcription - public async Task> StartTranscriptionAsync(string type, string id, StartTranscriptionRequest request, + public async Task> StartTranscriptionAsync(string type, string id,StartTranscriptionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -638,9 +638,9 @@ public async Task> StartTranscription cancellationToken); return result; } - + // Stops HLS broadcasting - public async Task> StopHLSBroadcastingAsync(string type, string id, object request = null, + public async Task> StopHLSBroadcastingAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -655,12 +655,12 @@ public async Task> StopHLSBroadcasti cancellationToken); return result; } - + // Stops closed captions - + // Sends events: // - call.transcription_stopped - public async Task> StopClosedCaptionsAsync(string type, string id, StopClosedCaptionsRequest request, + public async Task> StopClosedCaptionsAsync(string type, string id,StopClosedCaptionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -675,12 +675,12 @@ public async Task> StopClosedCaptions cancellationToken); return result; } - + // Stops frame recording - + // Sends events: // - call.frame_recording_stopped - public async Task> StopFrameRecordingAsync(string type, string id, object request = null, + public async Task> StopFrameRecordingAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -695,12 +695,12 @@ public async Task> StopFrameRecording cancellationToken); return result; } - - - + + + // Sends events: // - call.updated - public async Task> StopLiveAsync(string type, string id, StopLiveRequest request, + public async Task> StopLiveAsync(string type, string id,StopLiveRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -715,12 +715,12 @@ public async Task> StopLiveAsync(string type, s cancellationToken); return result; } - + // Stops transcription - + // Sends events: // - call.transcription_stopped - public async Task> StopTranscriptionAsync(string type, string id, StopTranscriptionRequest request, + public async Task> StopTranscriptionAsync(string type, string id,StopTranscriptionRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -735,9 +735,9 @@ public async Task> StopTranscriptionAs cancellationToken); return result; } - + // Lists transcriptions - public async Task> ListTranscriptionsAsync(string type, string id, object request = null, + public async Task> ListTranscriptionsAsync(string type, string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -752,12 +752,12 @@ public async Task> ListTranscriptions cancellationToken); return result; } - + // Removes the block for a user on a call. The user will be able to join the call again. - + // Sends events: // - call.unblocked_user - public async Task> UnblockUserAsync(string type, string id, UnblockUserRequest request, + public async Task> UnblockUserAsync(string type, string id,UnblockUserRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -772,9 +772,9 @@ public async Task> UnblockUserAsync(string t cancellationToken); return result; } - + // Unpins a track for all users in the call. - public async Task> VideoUnpinAsync(string type, string id, UnpinRequest request, + public async Task> VideoUnpinAsync(string type, string id,UnpinRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -789,12 +789,12 @@ public async Task> VideoUnpinAsync(string type, st cancellationToken); return result; } - + // Updates user permissions - + // Sends events: // - call.permissions_updated - public async Task> UpdateUserPermissionsAsync(string type, string id, UpdateUserPermissionsRequest request, + public async Task> UpdateUserPermissionsAsync(string type, string id,UpdateUserPermissionsRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -809,9 +809,9 @@ public async Task> UpdateUserPermi cancellationToken); return result; } - + // Deletes recording - public async Task> DeleteRecordingAsync(string type, string id, string session, string filename, object request = null, + public async Task> DeleteRecordingAsync(string type, string id, string session, string filename,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -828,9 +828,9 @@ public async Task> DeleteRecordingAsync( cancellationToken); return result; } - + // Deletes transcription - public async Task> DeleteTranscriptionAsync(string type, string id, string session, string filename, object request = null, + public async Task> DeleteTranscriptionAsync(string type, string id, string session, string filename,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -847,9 +847,9 @@ public async Task> DeleteTranscripti cancellationToken); return result; } - - - public async Task> GetCallStatsMapAsync(string callType, string callID, string session, object request = null, + + + public async Task> GetCallStatsMapAsync(string callType, string callID, string session,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -866,9 +866,9 @@ public async Task> GetCallStatsMapAsyn cancellationToken); return result; } - - - public async Task> GetCallSessionParticipantStatsDetailsAsync(string callType, string callID, string session, string user, string userSession, object request = null, + + + public async Task> GetCallSessionParticipantStatsDetailsAsync(string callType, string callID, string session, string user, string userSession,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -887,9 +887,9 @@ public async Task> cancellationToken); return result; } - - - public async Task> QueryCallSessionParticipantStatsAsync(string callType, string callID, string session, object request = null, + + + public async Task> QueryCallSessionParticipantStatsAsync(string callType, string callID, string session,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -906,9 +906,9 @@ public async Task> Quer cancellationToken); return result; } - - - public async Task> GetCallSessionParticipantStatsTimelineAsync(string callType, string callID, string session, string user, string userSession, object request = null, + + + public async Task> GetCallSessionParticipantStatsTimelineAsync(string callType, string callID, string session, string user, string userSession,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -927,7 +927,7 @@ public async Task> QueryCallsAsync(QueryCallsRequest request, CancellationToken cancellationToken = default) @@ -939,8 +939,8 @@ public async Task> QueryCallsAsync(QueryCalls cancellationToken); return result; } - - + + public async Task> ListCallTypesAsync(object request = null, CancellationToken cancellationToken = default) { @@ -951,8 +951,8 @@ public async Task> ListCallTypesAsync(objec cancellationToken); return result; } - - + + public async Task> CreateCallTypeAsync(CreateCallTypeRequest request, CancellationToken cancellationToken = default) { @@ -963,9 +963,9 @@ public async Task> CreateCallTypeAsync(Cr cancellationToken); return result; } - - - public async Task> DeleteCallTypeAsync(string name, object request = null, + + + public async Task> DeleteCallTypeAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -979,9 +979,9 @@ public async Task> DeleteCallTypeAsync(string name, obj cancellationToken); return result; } - - - public async Task> GetCallTypeAsync(string name, object request = null, + + + public async Task> GetCallTypeAsync(string name,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -995,9 +995,9 @@ public async Task> GetCallTypeAsync(string n cancellationToken); return result; } - - - public async Task> UpdateCallTypeAsync(string name, UpdateCallTypeRequest request, + + + public async Task> UpdateCallTypeAsync(string name,UpdateCallTypeRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1011,7 +1011,7 @@ public async Task> UpdateCallTypeAsync(st cancellationToken); return result; } - + // Returns the list of all edges available for video calls. public async Task> GetEdgesAsync(object request = null, CancellationToken cancellationToken = default) @@ -1023,7 +1023,7 @@ public async Task> GetEdgesAsync(object request cancellationToken); return result; } - + // Determine authentication requirements for an inbound SIP call before sending a digest challenge public async Task> ResolveSipAuthAsync(ResolveSipAuthRequest request, CancellationToken cancellationToken = default) @@ -1035,7 +1035,7 @@ public async Task> ResolveSipAuthAsync(Re cancellationToken); return result; } - + // List all SIP Inbound Routing Rules for the application public async Task> ListSIPInboundRoutingRuleAsync(object request = null, CancellationToken cancellationToken = default) @@ -1047,7 +1047,7 @@ public async Task> ListSIPInbo cancellationToken); return result; } - + // Create a new SIP Inbound Routing Rule with either direct routing or PIN routing configuration public async Task> CreateSIPInboundRoutingRuleAsync(SIPInboundRoutingRuleRequest request, CancellationToken cancellationToken = default) @@ -1059,9 +1059,9 @@ public async Task> CreateSIPInboun cancellationToken); return result; } - + // Delete a SIP Inbound Routing Rule for the application - public async Task> DeleteSIPInboundRoutingRuleAsync(string id, object request = null, + public async Task> DeleteSIPInboundRoutingRuleAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1075,9 +1075,9 @@ public async Task> DeleteSIP cancellationToken); return result; } - + // Update an existing SIP Inbound Routing Rule with new configuration - public async Task> UpdateSIPInboundRoutingRuleAsync(string id, UpdateSIPInboundRoutingRuleRequest request, + public async Task> UpdateSIPInboundRoutingRuleAsync(string id,UpdateSIPInboundRoutingRuleRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1091,7 +1091,7 @@ public async Task> UpdateSIP cancellationToken); return result; } - + // List all SIP trunks for the application public async Task> ListSIPTrunksAsync(object request = null, CancellationToken cancellationToken = default) @@ -1103,7 +1103,7 @@ public async Task> ListSIPTrunksAsync(obje cancellationToken); return result; } - + // Create a new SIP trunk for the application public async Task> CreateSIPTrunkAsync(CreateSIPTrunkRequest request, CancellationToken cancellationToken = default) @@ -1115,9 +1115,9 @@ public async Task> CreateSIPTrunkAsync(Cr cancellationToken); return result; } - + // Delete a SIP trunk for the application - public async Task> DeleteSIPTrunkAsync(string id, object request = null, + public async Task> DeleteSIPTrunkAsync(string id,object request = null, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1131,9 +1131,9 @@ public async Task> DeleteSIPTrunkAsync(st cancellationToken); return result; } - + // Update a SIP trunk for the application - public async Task> UpdateSIPTrunkAsync(string id, UpdateSIPTrunkRequest request, + public async Task> UpdateSIPTrunkAsync(string id,UpdateSIPTrunkRequest request, CancellationToken cancellationToken = default) { var pathParams = new Dictionary @@ -1147,7 +1147,7 @@ public async Task> UpdateSIPTrunkAsync(st cancellationToken); return result; } - + // Resolve SIP inbound routing based on trunk number, caller number, and challenge authentication public async Task> ResolveSipInboundAsync(ResolveSipInboundRequest request, CancellationToken cancellationToken = default) @@ -1159,8 +1159,8 @@ public async Task> ResolveSipInboundAs cancellationToken); return result; } - - + + public async Task> QueryAggregateCallStatsAsync(QueryAggregateCallStatsRequest request, CancellationToken cancellationToken = default) { @@ -1171,5 +1171,5 @@ public async Task> QueryAggregat cancellationToken); return result; } - } -} + } + } diff --git a/src/Webhook.cs b/src/Webhook.cs index 3a0c942..a428157 100644 --- a/src/Webhook.cs +++ b/src/Webhook.cs @@ -116,6 +116,7 @@ public static class WebhookEventType public const string FeedsCommentReactionAdded = "feeds.comment.reaction.added"; public const string FeedsCommentReactionDeleted = "feeds.comment.reaction.deleted"; public const string FeedsCommentReactionUpdated = "feeds.comment.reaction.updated"; + public const string FeedsCommentRestored = "feeds.comment.restored"; public const string FeedsCommentUpdated = "feeds.comment.updated"; public const string FeedsFeedCreated = "feeds.feed.created"; public const string FeedsFeedDeleted = "feeds.feed.deleted"; @@ -366,6 +367,7 @@ private static Type GetEventTypeClass(string eventType) "feeds.comment.reaction.added" => typeof(CommentReactionAddedEvent), "feeds.comment.reaction.deleted" => typeof(CommentReactionDeletedEvent), "feeds.comment.reaction.updated" => typeof(CommentReactionUpdatedEvent), + "feeds.comment.restored" => typeof(CommentRestoredEvent), "feeds.comment.updated" => typeof(CommentUpdatedEvent), "feeds.feed.created" => typeof(FeedCreatedEvent), "feeds.feed.deleted" => typeof(FeedDeletedEvent), diff --git a/src/models.cs b/src/models.cs index 815d482..b9cff65 100644 --- a/src/models.cs +++ b/src/models.cs @@ -55,20 +55,44 @@ public class AIVideoConfig public class APIError { + /// + /// API error code + /// [JsonPropertyName("code")] public int Code { get; set; } + /// + /// Request duration + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Message describing an error + /// [JsonPropertyName("message")] public string Message { get; set; } + /// + /// URL with additional information + /// [JsonPropertyName("more_info")] public string MoreInfo { get; set; } + /// + /// Response HTTP status code + /// [JsonPropertyName("StatusCode")] public int StatusCode { get; set; } + /// + /// Additional error-specific information + /// [JsonPropertyName("details")] public List Details { get; set; } + /// + /// Flag that indicates if the error is unrecoverable, requests that return unrecoverable errors should not be retried, this error only applies to the request that caused it + /// [JsonPropertyName("unrecoverable")] public bool? Unrecoverable { get; set; } + /// + /// Additional error info + /// [JsonPropertyName("exception_fields")] public Dictionary ExceptionFields { get; set; } } @@ -183,10 +207,19 @@ public class AcceptFeedMemberInviteResponse public class AcceptFollowRequest { + /// + /// Fully qualified ID of the source feed + /// [JsonPropertyName("source")] public string Source { get; set; } + /// + /// Fully qualified ID of the target feed + /// [JsonPropertyName("target")] public string Target { get; set; } + /// + /// Optional role for the follower in the follow relationship + /// [JsonPropertyName("follower_role")] public string? FollowerRole { get; set; } } @@ -215,20 +248,41 @@ public class Action public class ActionLogResponse { + /// + /// Timestamp when the action was taken + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique identifier of the action log + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Reason for the moderation action + /// [JsonPropertyName("reason")] public string Reason { get; set; } + /// + /// ID of the user who was the target of the action + /// [JsonPropertyName("target_user_id")] public string TargetUserID { get; set; } + /// + /// Type of moderation action + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// ID of the user who performed the action + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("ai_providers")] public List AiProviders { get; set; } + /// + /// Additional metadata about the action + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("review_queue_item")] @@ -317,6 +371,9 @@ public class ActiveCallsSummary public class ActivityAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -325,6 +382,9 @@ public class ActivityAddedEvent public ActivityResponse Activity { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.activity.added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -337,6 +397,9 @@ public class ActivityAddedEvent public class ActivityDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -345,6 +408,9 @@ public class ActivityDeletedEvent public ActivityResponse Activity { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.activity.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -357,12 +423,18 @@ public class ActivityDeletedEvent public class ActivityFeedbackEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("activity_feedback")] public ActivityFeedbackEventPayload ActivityFeedback { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.activity.feedback" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -373,14 +445,29 @@ public class ActivityFeedbackEvent public class ActivityFeedbackEventPayload { + /// + /// The type of feedback action. One of: hide, show_more, show_less + /// [JsonPropertyName("action")] public string Action { get; set; } + /// + /// The activity that received feedback + /// [JsonPropertyName("activity_id")] public string ActivityID { get; set; } + /// + /// When the feedback was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// When the feedback was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// The feedback value (true/false) + /// [JsonPropertyName("value")] public string Value { get; set; } [JsonPropertyName("user")] @@ -389,10 +476,19 @@ public class ActivityFeedbackEventPayload public class ActivityFeedbackRequest { + /// + /// Whether to hide this activity + /// [JsonPropertyName("hide")] public bool? Hide { get; set; } + /// + /// Whether to show less content like this + /// [JsonPropertyName("show_less")] public bool? ShowLess { get; set; } + /// + /// Whether to show more content like this + /// [JsonPropertyName("show_more")] public bool? ShowMore { get; set; } [JsonPropertyName("user_id")] @@ -403,6 +499,9 @@ public class ActivityFeedbackRequest public class ActivityFeedbackResponse { + /// + /// The ID of the activity that received feedback + /// [JsonPropertyName("activity_id")] public string ActivityID { get; set; } [JsonPropertyName("duration")] @@ -411,34 +510,61 @@ public class ActivityFeedbackResponse public class ActivityLocation { + /// + /// Latitude coordinate + /// [JsonPropertyName("lat")] public double Lat { get; set; } + /// + /// Longitude coordinate + /// [JsonPropertyName("lng")] public double Lng { get; set; } } public class ActivityMarkEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] public string Fid { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.activity.marked" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] public string? FeedVisibility { get; set; } + /// + /// Whether all activities were marked as read + /// [JsonPropertyName("mark_all_read")] public bool? MarkAllRead { get; set; } + /// + /// Whether all activities were marked as seen + /// [JsonPropertyName("mark_all_seen")] public bool? MarkAllSeen { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The IDs of activities marked as read + /// [JsonPropertyName("mark_read")] public List MarkRead { get; set; } + /// + /// The IDs of activities marked as seen + /// [JsonPropertyName("mark_seen")] public List MarkSeen { get; set; } + /// + /// The IDs of activities marked as watched + /// [JsonPropertyName("mark_watched")] public List MarkWatched { get; set; } [JsonPropertyName("user")] @@ -447,10 +573,19 @@ public class ActivityMarkEvent public class ActivityPinResponse { + /// + /// When the pin was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// ID of the feed where activity is pinned + /// [JsonPropertyName("feed")] public string Feed { get; set; } + /// + /// When the pin was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("activity")] @@ -461,14 +596,23 @@ public class ActivityPinResponse public class ActivityPinnedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the feed + /// [JsonPropertyName("fid")] public string Fid { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("pinned_activity")] public PinActivityResponse PinnedActivity { get; set; } + /// + /// The type of event: "feeds.activity.pinned" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -481,12 +625,18 @@ public class ActivityPinnedEvent public class ActivityProcessorConfig { + /// + /// Type of activity processor (required) + /// [JsonPropertyName("type")] public string Type { get; set; } } public class ActivityReactionAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -497,6 +647,9 @@ public class ActivityReactionAddedEvent public object Custom { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// The type of event: "feeds.activity.reaction.added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -509,6 +662,9 @@ public class ActivityReactionAddedEvent public class ActivityReactionDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -519,6 +675,9 @@ public class ActivityReactionDeletedEvent public object Custom { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// The type of the reaction that was removed + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -531,6 +690,9 @@ public class ActivityReactionDeletedEvent public class ActivityReactionUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -541,6 +703,9 @@ public class ActivityReactionUpdatedEvent public object Custom { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// The type of event: "feeds.activity.reaction.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -553,6 +718,9 @@ public class ActivityReactionUpdatedEvent public class ActivityRemovedFromFeedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -561,6 +729,9 @@ public class ActivityRemovedFromFeedEvent public ActivityResponse Activity { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.activity.removed_from_feed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -573,134 +744,313 @@ public class ActivityRemovedFromFeedEvent public class ActivityRequest { + /// + /// Type of activity + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// List of feeds to add the activity to with a default max limit of 25 feeds + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to create notification activities for mentioned users + /// [JsonPropertyName("create_notification_activity")] public bool? CreateNotificationActivity { get; set; } + /// + /// Expiration time for the activity + /// [JsonPropertyName("expires_at")] public string? ExpiresAt { get; set; } + /// + /// Optional ID for the activity + /// [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// ID of parent activity for replies/comments + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// ID of a poll to attach to activity + /// [JsonPropertyName("poll_id")] public string? PollID { get; set; } + /// + /// Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody + /// [JsonPropertyName("restrict_replies")] public string? RestrictReplies { get; set; } + /// + /// Whether to skip URL enrichment for the activity + /// [JsonPropertyName("skip_enrich_url")] public bool? SkipEnrichUrl { get; set; } + /// + /// Whether to skip push notifications + /// [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } + /// + /// Text content of the activity + /// [JsonPropertyName("text")] public string? Text { get; set; } + /// + /// ID of the user creating the activity + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Visibility setting for the activity. One of: public, private, tag + /// [JsonPropertyName("visibility")] public string? Visibility { get; set; } + /// + /// If visibility is 'tag', this is the tag name and is required + /// [JsonPropertyName("visibility_tag")] public string? VisibilityTag { get; set; } + /// + /// List of attachments for the activity + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// Collections that this activity references + /// [JsonPropertyName("collection_refs")] public List CollectionRefs { get; set; } + /// + /// Tags for filtering activities + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Tags for indicating user interests + /// [JsonPropertyName("interest_tags")] public List InterestTags { get; set; } + /// + /// List of users mentioned in the activity + /// [JsonPropertyName("mentioned_user_ids")] public List MentionedUserIds { get; set; } + /// + /// Custom data for the activity + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("location")] public ActivityLocation? Location { get; set; } + /// + /// Additional data for search indexing + /// [JsonPropertyName("search_data")] public object SearchData { get; set; } } public class ActivityResponse { + /// + /// Number of bookmarks on the activity + /// [JsonPropertyName("bookmark_count")] public int BookmarkCount { get; set; } + /// + /// Number of comments on the activity + /// [JsonPropertyName("comment_count")] public int CommentCount { get; set; } + /// + /// When the activity was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// If this activity is hidden by this user (using activity feedback) + /// [JsonPropertyName("hidden")] public bool Hidden { get; set; } + /// + /// Unique identifier for the activity + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Popularity score of the activity + /// [JsonPropertyName("popularity")] public int Popularity { get; set; } + /// + /// If this activity is obfuscated for this user. For premium content where you want to show a preview + /// [JsonPropertyName("preview")] public bool Preview { get; set; } + /// + /// Number of reactions to the activity + /// [JsonPropertyName("reaction_count")] public int ReactionCount { get; set; } + /// + /// Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody + /// [JsonPropertyName("restrict_replies")] public string RestrictReplies { get; set; } + /// + /// Ranking score for this activity + /// [JsonPropertyName("score")] public double Score { get; set; } + /// + /// Number of times the activity was shared + /// [JsonPropertyName("share_count")] public int ShareCount { get; set; } + /// + /// Type of activity + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// When the activity was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Visibility setting for the activity. One of: public, private, tag + /// [JsonPropertyName("visibility")] public string Visibility { get; set; } + /// + /// Media attachments for the activity + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// Latest 5 comments of this activity (comment replies excluded) + /// [JsonPropertyName("comments")] public List Comments { get; set; } + /// + /// List of feed IDs containing this activity + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } + /// + /// Tags for filtering + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Tags for user interests + /// [JsonPropertyName("interest_tags")] public List InterestTags { get; set; } + /// + /// Recent reactions to the activity + /// [JsonPropertyName("latest_reactions")] public List LatestReactions { get; set; } + /// + /// Users mentioned in the activity + /// [JsonPropertyName("mentioned_users")] public List MentionedUsers { get; set; } + /// + /// Current user's bookmarks for this activity + /// [JsonPropertyName("own_bookmarks")] public List OwnBookmarks { get; set; } + /// + /// Current user's reactions to this activity + /// [JsonPropertyName("own_reactions")] public List OwnReactions { get; set; } + /// + /// Enriched collection data referenced by this activity + /// [JsonPropertyName("collections")] public Dictionary Collections { get; set; } + /// + /// Custom data for the activity + /// [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// Grouped reactions by type + /// [JsonPropertyName("reaction_groups")] public Dictionary ReactionGroups { get; set; } + /// + /// Data for search indexing + /// [JsonPropertyName("search_data")] public object SearchData { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// When the activity was deleted + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// When the activity was last edited + /// [JsonPropertyName("edited_at")] public DateTime? EditedAt { get; set; } + /// + /// When the activity will expire + /// [JsonPropertyName("expires_at")] public DateTime? ExpiresAt { get; set; } + /// + /// Total count of reactions from friends on this activity + /// [JsonPropertyName("friend_reaction_count")] public int? FriendReactionCount { get; set; } + /// + /// Whether this activity has been read. Only set for feed groups with notification config (track_seen/track_read enabled). + /// [JsonPropertyName("is_read")] public bool? IsRead { get; set; } + /// + /// Whether this activity has been seen. Only set for feed groups with notification config (track_seen/track_read enabled). + /// [JsonPropertyName("is_seen")] public bool? IsSeen { get; set; } [JsonPropertyName("is_watched")] public bool? IsWatched { get; set; } [JsonPropertyName("moderation_action")] public string? ModerationAction { get; set; } + /// + /// Which activity selector provided this activity (e.g., 'following', 'popular', 'interest'). Only set when using multiple activity selectors with ranking. + /// [JsonPropertyName("selector_source")] public string? SelectorSource { get; set; } + /// + /// Text content of the activity + /// [JsonPropertyName("text")] public string? Text { get; set; } + /// + /// If visibility is 'tag', this is the tag name + /// [JsonPropertyName("visibility_tag")] public string? VisibilityTag { get; set; } + /// + /// Reactions from users the current user follows or has mutual follows with + /// [JsonPropertyName("friend_reactions")] public List FriendReactions { get; set; } [JsonPropertyName("current_feed")] @@ -717,10 +1067,18 @@ public class ActivityResponse public ActivityResponse? Parent { get; set; } [JsonPropertyName("poll")] public PollResponseData? Poll { get; set; } + /// + /// Variable values used at ranking time. Only included when include_score_vars is enabled in enrichment options. + /// + [JsonPropertyName("score_vars")] + public object ScoreVars { get; set; } } public class ActivityRestoredEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -729,6 +1087,9 @@ public class ActivityRestoredEvent public ActivityResponse Activity { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of the event + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -741,50 +1102,98 @@ public class ActivityRestoredEvent public class ActivitySelectorConfig { + /// + /// Type of selector. One of: popular, proximity, following, current_feed, query, interest, follow_suggestion + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Time threshold for activity selection (string). Expected RFC3339 format (e.g., 2006-01-02T15:04:05Z07:00). Cannot be used together with cutoff_window + /// [JsonPropertyName("cutoff_time")] public string? CutoffTime { get; set; } + /// + /// Flexible relative time window for activity selection (e.g., '1h', '3d', '1y'). Activities older than this duration will be filtered out. Cannot be used together with cutoff_time + /// [JsonPropertyName("cutoff_window")] public string? CutoffWindow { get; set; } + /// + /// Minimum popularity threshold + /// [JsonPropertyName("min_popularity")] public int? MinPopularity { get; set; } + /// + /// Sort parameters for activity selection + /// [JsonPropertyName("sort")] public List Sort { get; set; } [JsonPropertyName("params")] public object @Params { get; set; } + /// + /// Filter for activity selection + /// [JsonPropertyName("filter")] public object Filter { get; set; } } public class ActivitySelectorConfigResponse { + /// + /// Type of selector + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Time threshold for activity selection (timestamp) + /// [JsonPropertyName("cutoff_time")] public DateTime? CutoffTime { get; set; } + /// + /// Flexible relative time window for activity selection (e.g., '1h', '3d', '1y') + /// [JsonPropertyName("cutoff_window")] public string? CutoffWindow { get; set; } + /// + /// Minimum popularity threshold + /// [JsonPropertyName("min_popularity")] public int? MinPopularity { get; set; } + /// + /// Sort parameters for activity selection + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Generic params for selector-specific configuration + /// [JsonPropertyName("params")] public object @Params { get; set; } + /// + /// Filter for activity selection + /// [JsonPropertyName("filter")] public object Filter { get; set; } } public class ActivityUnpinnedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the feed + /// [JsonPropertyName("fid")] public string Fid { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("pinned_activity")] public PinActivityResponse PinnedActivity { get; set; } + /// + /// The type of event: "feeds.activity.unpinned" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -797,6 +1206,9 @@ public class ActivityUnpinnedEvent public class ActivityUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -805,6 +1217,9 @@ public class ActivityUpdatedEvent public ActivityResponse Activity { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of the event + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -817,52 +1232,120 @@ public class ActivityUpdatedEvent public class AddActivityRequest { + /// + /// Type of activity + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// List of feeds to add the activity to with a default max limit of 25 feeds + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to create notification activities for mentioned users + /// [JsonPropertyName("create_notification_activity")] public bool? CreateNotificationActivity { get; set; } [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } + /// + /// Expiration time for the activity + /// [JsonPropertyName("expires_at")] public string? ExpiresAt { get; set; } + /// + /// Optional ID for the activity + /// [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// ID of parent activity for replies/comments + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// ID of a poll to attach to activity + /// [JsonPropertyName("poll_id")] public string? PollID { get; set; } + /// + /// Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody + /// [JsonPropertyName("restrict_replies")] public string? RestrictReplies { get; set; } + /// + /// Whether to skip URL enrichment for the activity + /// [JsonPropertyName("skip_enrich_url")] public bool? SkipEnrichUrl { get; set; } + /// + /// Whether to skip push notifications + /// [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } + /// + /// Text content of the activity + /// [JsonPropertyName("text")] public string? Text { get; set; } + /// + /// ID of the user creating the activity + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Visibility setting for the activity. One of: public, private, tag + /// [JsonPropertyName("visibility")] public string? Visibility { get; set; } + /// + /// If visibility is 'tag', this is the tag name and is required + /// [JsonPropertyName("visibility_tag")] public string? VisibilityTag { get; set; } + /// + /// List of attachments for the activity + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// Collections that this activity references + /// [JsonPropertyName("collection_refs")] public List CollectionRefs { get; set; } + /// + /// Tags for filtering activities + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Tags for indicating user interests + /// [JsonPropertyName("interest_tags")] public List InterestTags { get; set; } + /// + /// List of users mentioned in the activity + /// [JsonPropertyName("mentioned_user_ids")] public List MentionedUserIds { get; set; } + /// + /// Custom data for the activity + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("location")] public ActivityLocation? Location { get; set; } + /// + /// Additional data for search indexing + /// [JsonPropertyName("search_data")] public object SearchData { get; set; } } @@ -873,16 +1356,25 @@ public class AddActivityResponse public string Duration { get; set; } [JsonPropertyName("activity")] public ActivityResponse Activity { get; set; } + /// + /// Number of mention notification activities created for mentioned users + /// [JsonPropertyName("mention_notifications_created")] public int? MentionNotificationsCreated { get; set; } } public class AddBookmarkRequest { + /// + /// ID of the folder to add the bookmark to + /// [JsonPropertyName("folder_id")] public string? FolderID { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Custom data for the bookmark + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("new_folder")] @@ -901,18 +1393,35 @@ public class AddBookmarkResponse public class AddCommentReactionRequest { + /// + /// The type of reaction, eg upvote, like, ... + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to create a notification activity for this reaction + /// [JsonPropertyName("create_notification_activity")] public bool? CreateNotificationActivity { get; set; } + /// + /// Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one) + /// [JsonPropertyName("enforce_unique")] public bool? EnforceUnique { get; set; } [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Optional custom data to add to the reaction + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] @@ -921,42 +1430,83 @@ public class AddCommentReactionRequest public class AddCommentReactionResponse { + /// + /// Duration of the request + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("comment")] public CommentResponse Comment { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// Whether a notification activity was successfully created + /// [JsonPropertyName("notification_created")] public bool? NotificationCreated { get; set; } } public class AddCommentRequest { + /// + /// Text content of the comment + /// [JsonPropertyName("comment")] public string? Comment { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to create a notification activity for this comment + /// [JsonPropertyName("create_notification_activity")] public bool? CreateNotificationActivity { get; set; } + /// + /// Optional custom ID for the comment (max 255 characters). If not provided, a UUID will be generated. + /// [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// ID of the object to comment on. Required for root comments + /// [JsonPropertyName("object_id")] public string? ObjectID { get; set; } + /// + /// Type of the object to comment on. Required for root comments + /// [JsonPropertyName("object_type")] public string? ObjectType { get; set; } + /// + /// ID of parent comment for replies. When provided, object_id and object_type are automatically inherited from the parent comment. + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// Whether to skip URL enrichment for this comment + /// [JsonPropertyName("skip_enrich_url")] public bool? SkipEnrichUrl { get; set; } [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Media attachments for the reply + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// List of users mentioned in the reply + /// [JsonPropertyName("mentioned_user_ids")] public List MentionedUserIds { get; set; } + /// + /// Custom data for the comment + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] @@ -969,14 +1519,23 @@ public class AddCommentResponse public string Duration { get; set; } [JsonPropertyName("comment")] public CommentResponse Comment { get; set; } + /// + /// Number of mention notification activities created for mentioned users + /// [JsonPropertyName("mention_notifications_created")] public int? MentionNotificationsCreated { get; set; } + /// + /// Whether a notification activity was successfully created + /// [JsonPropertyName("notification_created")] public bool? NotificationCreated { get; set; } } public class AddCommentsBatchRequest { + /// + /// List of comments to add + /// [JsonPropertyName("comments")] public List Comments { get; set; } } @@ -985,32 +1544,58 @@ public class AddCommentsBatchResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of comments added + /// [JsonPropertyName("comments")] public List Comments { get; set; } } public class AddFolderRequest { + /// + /// Name of the folder + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Custom data for the folder + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class AddReactionRequest { + /// + /// Type of reaction + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to create a notification activity for this reaction + /// [JsonPropertyName("create_notification_activity")] public bool? CreateNotificationActivity { get; set; } + /// + /// Whether to enforce unique reactions per user (remove other reaction types from the user when adding this one) + /// [JsonPropertyName("enforce_unique")] public bool? EnforceUnique { get; set; } [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Custom data for the reaction + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] @@ -1025,14 +1610,25 @@ public class AddReactionResponse public ActivityResponse Activity { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// Whether a notification activity was successfully created + /// [JsonPropertyName("notification_created")] public bool? NotificationCreated { get; set; } } public class AddUserGroupMembersRequest { + /// + /// List of user IDs to add as members + /// [JsonPropertyName("member_ids")] public List MemberIds { get; set; } + /// + /// Whether to add the members as group admins. Defaults to false + /// + [JsonPropertyName("as_admin")] + public bool? AsAdmin { get; set; } [JsonPropertyName("team_id")] public string? TeamID { get; set; } } @@ -1047,24 +1643,54 @@ public class AddUserGroupMembersResponse public class AggregatedActivityResponse { + /// + /// Number of activities in this aggregation + /// [JsonPropertyName("activity_count")] public int ActivityCount { get; set; } + /// + /// When the aggregation was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Grouping identifier + /// [JsonPropertyName("group")] public string Group { get; set; } + /// + /// Ranking score for this aggregation + /// [JsonPropertyName("score")] public double Score { get; set; } + /// + /// When the aggregation was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Number of unique users in this aggregation + /// [JsonPropertyName("user_count")] public int UserCount { get; set; } + /// + /// Whether this activity group has been truncated due to exceeding the group size limit + /// [JsonPropertyName("user_count_truncated")] public bool UserCountTruncated { get; set; } + /// + /// List of activities in this aggregation + /// [JsonPropertyName("activities")] public List Activities { get; set; } + /// + /// Whether this aggregated group has been read. Only set for feed groups with notification config (track_seen/track_read enabled). + /// [JsonPropertyName("is_read")] public bool? IsRead { get; set; } + /// + /// Whether this aggregated group has been seen. Only set for feed groups with notification config (track_seen/track_read enabled). + /// [JsonPropertyName("is_seen")] public bool? IsSeen { get; set; } [JsonPropertyName("is_watched")] @@ -1073,8 +1699,16 @@ public class AggregatedActivityResponse public class AggregationConfig { + /// + /// Format for activity aggregation + /// [JsonPropertyName("format")] public string? Format { get; set; } + /// + /// Strategy for computing aggregated group scores from member activity scores when ranking is enabled. Valid values: sum, max, avg + /// + [JsonPropertyName("score_strategy")] + public string? ScoreStrategy { get; set; } } public class AppResponseFields @@ -1221,22 +1855,46 @@ public class AppealCreatedEvent public class AppealItemResponse { + /// + /// Reason Text of the Appeal Item + /// [JsonPropertyName("appeal_reason")] public string AppealReason { get; set; } + /// + /// When the flag was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// ID of the entity + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// Type of entity + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Status of the Appeal Item + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// When the flag was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Decision Reason of the Appeal Item + /// [JsonPropertyName("decision_reason")] public string? DecisionReason { get; set; } + /// + /// Attachments(e.g. Images) of the Appeal Item + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } [JsonPropertyName("entity_content")] @@ -1261,14 +1919,26 @@ public class AppealRejectedEvent public class AppealRequest { + /// + /// Explanation for why the content is being appealed + /// [JsonPropertyName("appeal_reason")] public string AppealReason { get; set; } + /// + /// Unique identifier of the entity being appealed + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// Type of entity being appealed (e.g., message, user) + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of Attachment URLs(e.g., images) + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } [JsonPropertyName("user")] @@ -1277,6 +1947,9 @@ public class AppealRequest public class AppealResponse { + /// + /// Unique identifier of the created Appeal item + /// [JsonPropertyName("appeal_id")] public string AppealID { get; set; } [JsonPropertyName("duration")] @@ -1437,6 +2110,9 @@ public class Attachment public string? Title { get; set; } [JsonPropertyName("title_link")] public string? TitleLink { get; set; } + /// + /// Attachment type (e.g. image, video, url) + /// [JsonPropertyName("type")] public string? Type { get; set; } [JsonPropertyName("actions")] @@ -1573,12 +2249,24 @@ public class AutomodToxicityConfig public class AzureRequest { + /// + /// The account name + /// [JsonPropertyName("abs_account_name")] public string AbsAccountName { get; set; } + /// + /// The client id + /// [JsonPropertyName("abs_client_id")] public string AbsClientID { get; set; } + /// + /// The client secret + /// [JsonPropertyName("abs_client_secret")] public string AbsClientSecret { get; set; } + /// + /// The tenant id + /// [JsonPropertyName("abs_tenant_id")] public string AbsTenantID { get; set; } } @@ -1609,32 +2297,65 @@ public class BackstageSettingsResponse public class BanActionRequestPayload { + /// + /// Ban only from specific channel + /// [JsonPropertyName("channel_ban_only")] public bool? ChannelBanOnly { get; set; } [JsonPropertyName("channel_cid")] public string? ChannelCid { get; set; } + /// + /// Message deletion mode: soft, pruning, or hard + /// [JsonPropertyName("delete_messages")] public string? DeleteMessages { get; set; } + /// + /// Whether to ban by IP address + /// [JsonPropertyName("ip_ban")] public bool? IpBan { get; set; } + /// + /// Reason for the ban + /// [JsonPropertyName("reason")] public string? Reason { get; set; } + /// + /// Whether this is a shadow ban + /// [JsonPropertyName("shadow")] public bool? Shadow { get; set; } + /// + /// Optional: ban user directly without review item + /// [JsonPropertyName("target_user_id")] public string? TargetUserID { get; set; } + /// + /// Duration of ban in minutes + /// [JsonPropertyName("timeout")] public int? Timeout { get; set; } } public class BanInfoResponse { + /// + /// When the ban was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// When the ban expires + /// [JsonPropertyName("expires")] public DateTime? Expires { get; set; } + /// + /// Reason for the ban + /// [JsonPropertyName("reason")] public string? Reason { get; set; } + /// + /// Whether this is a shadow ban + /// [JsonPropertyName("shadow")] public bool? Shadow { get; set; } [JsonPropertyName("created_by")] @@ -1659,20 +2380,41 @@ public class BanOptions public class BanRequest { + /// + /// ID of the user to ban + /// [JsonPropertyName("target_user_id")] public string TargetUserID { get; set; } + /// + /// ID of the user performing the ban + /// [JsonPropertyName("banned_by_id")] public string? BannedByID { get; set; } + /// + /// Channel where the ban applies + /// [JsonPropertyName("channel_cid")] public string? ChannelCid { get; set; } [JsonPropertyName("delete_messages")] public string? DeleteMessages { get; set; } + /// + /// Whether to ban the user's IP address + /// [JsonPropertyName("ip_ban")] public bool? IpBan { get; set; } + /// + /// Optional explanation for the ban + /// [JsonPropertyName("reason")] public string? Reason { get; set; } + /// + /// Whether this is a shadow ban + /// [JsonPropertyName("shadow")] public bool? Shadow { get; set; } + /// + /// Duration of the ban in minutes + /// [JsonPropertyName("timeout")] public int? Timeout { get; set; } [JsonPropertyName("banned_by")] @@ -1699,6 +2441,9 @@ public class BanResponse public class BlockActionRequestPayload { + /// + /// Reason for blocking + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } @@ -1717,8 +2462,14 @@ public class BlockListConfig public class BlockListOptions { + /// + /// Blocklist behavior. One of: flag, block, shadow_block + /// [JsonPropertyName("behavior")] public string Behavior { get; set; } + /// + /// Blocklist name + /// [JsonPropertyName("blocklist")] public string Blocklist { get; set; } } @@ -1729,18 +2480,33 @@ public class BlockListResponse public bool IsLeetCheckEnabled { get; set; } [JsonPropertyName("is_plural_check_enabled")] public bool IsPluralCheckEnabled { get; set; } + /// + /// Block list name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// List of words to block + /// [JsonPropertyName("words")] public List Words { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime? CreatedAt { get; set; } [JsonPropertyName("id")] public string? ID { get; set; } [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime? UpdatedAt { get; set; } } @@ -1757,18 +2523,27 @@ public class BlockListRule public class BlockUserRequest { + /// + /// the user to block + /// [JsonPropertyName("user_id")] public string UserID { get; set; } } public class BlockUserResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class BlockUsersRequest { + /// + /// User id to block + /// [JsonPropertyName("blocked_user_id")] public string BlockedUserID { get; set; } [JsonPropertyName("user_id")] @@ -1779,12 +2554,24 @@ public class BlockUsersRequest public class BlockUsersResponse { + /// + /// User id who blocked another user + /// [JsonPropertyName("blocked_by_user_id")] public string BlockedByUserID { get; set; } + /// + /// User id who got blocked + /// [JsonPropertyName("blocked_user_id")] public string BlockedUserID { get; set; } + /// + /// Timestamp when the user was blocked + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -1797,6 +2584,9 @@ public class BlockedUserEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.blocked_user" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("blocked_by_user")] @@ -1805,10 +2595,16 @@ public class BlockedUserEvent public class BlockedUserResponse { + /// + /// ID of the user who got blocked + /// [JsonPropertyName("blocked_user_id")] public string BlockedUserID { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// ID of the user who blocked another user + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("blocked_user")] @@ -1843,12 +2639,18 @@ public class BodyguardSeverityRule public class BookmarkAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("bookmark")] public BookmarkResponse Bookmark { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.bookmark.added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -1859,12 +2661,18 @@ public class BookmarkAddedEvent public class BookmarkDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("bookmark")] public BookmarkResponse Bookmark { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.bookmark.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -1875,12 +2683,18 @@ public class BookmarkDeletedEvent public class BookmarkFolderDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("bookmark_folder")] public BookmarkFolderResponse BookmarkFolder { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.bookmark_folder.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -1891,28 +2705,49 @@ public class BookmarkFolderDeletedEvent public class BookmarkFolderResponse { + /// + /// When the folder was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique identifier for the folder + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Name of the folder + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// When the folder was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// Custom data for the folder + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class BookmarkFolderUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("bookmark_folder")] public BookmarkFolderResponse BookmarkFolder { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.bookmark_folder.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -1923,14 +2758,23 @@ public class BookmarkFolderUpdatedEvent public class BookmarkResponse { + /// + /// When the bookmark was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// When the bookmark was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("activity")] public ActivityResponse Activity { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// Custom data for the bookmark + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("folder")] @@ -1939,12 +2783,18 @@ public class BookmarkResponse public class BookmarkUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("bookmark")] public BookmarkResponse Bookmark { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.bookmark.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -2001,6 +2851,9 @@ public class BrowserDataResponse public class BulkImageModerationRequest { + /// + /// URL to CSV file containing image URLs to moderate + /// [JsonPropertyName("csv_file")] public string CsvFile { get; set; } } @@ -2009,6 +2862,9 @@ public class BulkImageModerationResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// ID of the task for processing the bulk image moderation + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } } @@ -2023,6 +2879,9 @@ public class CallAcceptedEvent public CallResponse Call { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.accepted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2073,6 +2932,9 @@ public class CallClosedCaptionsFailedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The type of event: "call.closed_captions_failed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2083,6 +2945,9 @@ public class CallClosedCaptionsStartedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The type of event: "call.closed_captions_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2093,6 +2958,9 @@ public class CallClosedCaptionsStoppedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The type of event: "call.transcription_stopped" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2103,10 +2971,16 @@ public class CallCreatedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// the members added to this call + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.created" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2125,16 +2999,31 @@ public class CallDTMFEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The DTMF digit (0-9, *, #, A-D) + /// [JsonPropertyName("digit")] public string Digit { get; set; } + /// + /// Duration of the digit press in milliseconds + /// [JsonPropertyName("duration_ms")] public int DurationMs { get; set; } + /// + /// Monotonically increasing sequence number for ordering DTMF events within a session + /// [JsonPropertyName("seq_number")] public int SeqNumber { get; set; } + /// + /// When the digit press ended and was detected + /// [JsonPropertyName("timestamp")] public DateTime Timestamp { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.dtmf" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2147,6 +3036,9 @@ public class CallDeletedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2171,10 +3063,19 @@ public class CallEndedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.ended" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The reason why the call ended, if available + /// [JsonPropertyName("reason")] public string? Reason { get; set; } + /// + /// The list of members in the call + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("user")] @@ -2191,6 +3092,9 @@ public class CallFrameRecordingFailedEvent public string EgressID { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.frame_recording_failed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2199,20 +3103,38 @@ public class CallFrameRecordingFrameReadyEvent { [JsonPropertyName("call_cid")] public string CallCid { get; set; } + /// + /// The time the frame was captured + /// [JsonPropertyName("captured_at")] public DateTime CapturedAt { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } + /// + /// The type of the track frame was captured from (TRACK_TYPE_VIDEO|TRACK_TYPE_SCREEN_SHARE) + /// [JsonPropertyName("track_type")] public string TrackType { get; set; } + /// + /// The URL of the frame + /// [JsonPropertyName("url")] public string Url { get; set; } + /// + /// The users in the frame + /// [JsonPropertyName("users")] public Dictionary Users { get; set; } + /// + /// The type of event: "call.frame_recording_ready" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2227,6 +3149,9 @@ public class CallFrameRecordingStartedEvent public string EgressID { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.frame_recording_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2241,6 +3166,9 @@ public class CallFrameRecordingStoppedEvent public string EgressID { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.frame_recording_stopped" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2251,6 +3179,9 @@ public class CallHLSBroadcastingFailedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The type of event: "call.hls_broadcasting_failed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2265,6 +3196,9 @@ public class CallHLSBroadcastingStartedEvent public string HLSPlaylistUrl { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.hls_broadcasting_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2275,6 +3209,9 @@ public class CallHLSBroadcastingStoppedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The type of event: "call.hls_broadcasting_stopped" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2289,6 +3226,18 @@ public class CallIngressResponse public WHIPIngress Whip { get; set; } } + public class CallLevelEventPayload + { + [JsonPropertyName("event_type")] + public string EventType { get; set; } + [JsonPropertyName("timestamp")] + public int Timestamp { get; set; } + [JsonPropertyName("user_id")] + public string UserID { get; set; } + [JsonPropertyName("payload")] + public object Payload { get; set; } + } + public class CallLiveStartedEvent { [JsonPropertyName("call_cid")] @@ -2297,6 +3246,9 @@ public class CallLiveStartedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.live_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2307,10 +3259,16 @@ public class CallMemberAddedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// the members added to this call + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.member_added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2321,10 +3279,16 @@ public class CallMemberRemovedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// the list of member IDs removed from the call + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.member_removed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2335,10 +3299,16 @@ public class CallMemberUpdatedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The list of members that were updated + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.member_updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2349,12 +3319,21 @@ public class CallMemberUpdatedPermissionEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The list of members that were updated + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The capabilities by role for this call + /// [JsonPropertyName("capabilities_by_role")] public Dictionary> CapabilitiesByRole { get; set; } + /// + /// The type of event: "call.member_added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2367,14 +3346,23 @@ public class CallMissedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("notify_user")] public bool NotifyUser { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } + /// + /// List of members who missed the call + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.notification" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2385,10 +3373,19 @@ public class CallModerationBlurEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The user ID whose video stream is being blurred + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Custom data associated with the moderation action + /// [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "call.moderation_blur" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2399,12 +3396,24 @@ public class CallModerationWarningEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The warning message + /// [JsonPropertyName("message")] public string Message { get; set; } + /// + /// The user ID who is receiving the warning + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Custom data associated with the moderation action + /// [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "call.moderation_warning" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2415,14 +3424,23 @@ public class CallNotificationEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } + /// + /// Call members + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.notification" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2471,6 +3489,9 @@ public class CallReactionEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("reaction")] public VideoReactionResponse Reaction { get; set; } + /// + /// The type of event: "call.reaction_new" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2499,8 +3520,14 @@ public class CallRecordingFailedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// The type of recording + /// [JsonPropertyName("recording_type")] public string RecordingType { get; set; } + /// + /// The type of event: "call.recording_failed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2513,10 +3540,16 @@ public class CallRecordingReadyEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// The type of recording + /// [JsonPropertyName("recording_type")] public string RecordingType { get; set; } [JsonPropertyName("call_recording")] public CallRecording CallRecording { get; set; } + /// + /// The type of event: "call.recording_ready" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2529,8 +3562,14 @@ public class CallRecordingStartedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// The type of recording + /// [JsonPropertyName("recording_type")] public string RecordingType { get; set; } + /// + /// The type of event: "call.recording_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2543,8 +3582,14 @@ public class CallRecordingStoppedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// The type of recording + /// [JsonPropertyName("recording_type")] public string RecordingType { get; set; } + /// + /// The type of event: "call.recording_stopped" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2559,8 +3604,14 @@ public class CallRejectedEvent public CallResponse Call { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.rejected" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Provides information about why the call was rejected. You can provide any value, but the Stream API and SDKs use these default values: rejected, cancel, timeout and busy + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } @@ -2603,12 +3654,21 @@ public class CallResponse public bool Backstage { get; set; } [JsonPropertyName("captioning")] public bool Captioning { get; set; } + /// + /// The unique identifier for a call (:) + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("current_session_id")] public string CurrentSessionID { get; set; } + /// + /// Call ID + /// [JsonPropertyName("id")] public string ID { get; set; } [JsonPropertyName("recording")] @@ -2617,14 +3677,23 @@ public class CallResponse public bool Transcribing { get; set; } [JsonPropertyName("translating")] public bool Translating { get; set; } + /// + /// The type of call + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("blocked_user_ids")] public List BlockedUserIds { get; set; } [JsonPropertyName("created_by")] public UserResponse CreatedBy { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("egress")] @@ -2635,12 +3704,21 @@ public class CallResponse public CallSettingsResponse Settings { get; set; } [JsonPropertyName("channel_cid")] public string? ChannelCid { get; set; } + /// + /// Date/time when the call ended + /// [JsonPropertyName("ended_at")] public DateTime? EndedAt { get; set; } [JsonPropertyName("join_ahead_time_seconds")] public int? JoinAheadTimeSeconds { get; set; } + /// + /// 10-digit routing number for SIP routing + /// [JsonPropertyName("routing_number")] public string? RoutingNumber { get; set; } + /// + /// Date/time when the call will start + /// [JsonPropertyName("starts_at")] public DateTime? StartsAt { get; set; } [JsonPropertyName("team")] @@ -2657,52 +3735,97 @@ public class CallRingEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } [JsonPropertyName("video")] public bool Video { get; set; } + /// + /// Call members + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.notification" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } public class CallRtmpBroadcastFailedEvent { + /// + /// The unique identifier for a call (:) + /// [JsonPropertyName("call_cid")] public string CallCid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Name of the given RTMP broadcast + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// The type of event: "call.rtmp_broadcast_failed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } public class CallRtmpBroadcastStartedEvent { + /// + /// The unique identifier for a call (:) + /// [JsonPropertyName("call_cid")] public string CallCid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Name of the given RTMP broadcast + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// The type of event: "call.rtmp_broadcast_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } public class CallRtmpBroadcastStoppedEvent { + /// + /// The unique identifier for a call (:) + /// [JsonPropertyName("call_cid")] public string CallCid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Name of the given RTMP broadcast + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// The type of event: "call.rtmp_broadcast_stopped" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2723,10 +3846,16 @@ public class CallSessionEndedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.session_ended" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2739,10 +3868,16 @@ public class CallSessionParticipantCountsUpdatedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } [JsonPropertyName("participants_count_by_role")] public Dictionary ParticipantsCountByRole { get; set; } + /// + /// The type of event: "call.session_participant_count_updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2753,10 +3888,16 @@ public class CallSessionParticipantJoinedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } [JsonPropertyName("participant")] public CallParticipantResponse Participant { get; set; } + /// + /// The type of event: "call.session_participant_joined" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2767,14 +3908,26 @@ public class CallSessionParticipantLeftEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The duration participant was in the session in seconds + /// [JsonPropertyName("duration_seconds")] public int DurationSeconds { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } [JsonPropertyName("participant")] public CallParticipantResponse Participant { get; set; } + /// + /// The type of event: "call.session_participant_left" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The reason why the participant left the session + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } @@ -2813,10 +3966,16 @@ public class CallSessionStartedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The type of event: "call.session_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -2931,6 +4090,9 @@ public class CallSettingsResponse public class CallStateResponseFields { + /// + /// List of call members + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("own_capabilities")] @@ -3049,6 +4211,10 @@ public class CallStatsParticipantCounts public int Publishers { get; set; } [JsonPropertyName("sessions")] public int Sessions { get; set; } + [JsonPropertyName("call_event_count")] + public int? CallEventCount { get; set; } + [JsonPropertyName("cq_score")] + public int? CqScore { get; set; } [JsonPropertyName("total_participant_duration")] public int? TotalParticipantDuration { get; set; } } @@ -3099,12 +4265,24 @@ public class CallStatsReportReadyEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } + /// + /// The type of event, "call.report_ready" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Whether participants_overview is truncated by the server-side limit + /// [JsonPropertyName("is_trimmed")] public bool? IsTrimmed { get; set; } + /// + /// Top participant sessions overview + /// [JsonPropertyName("participants_overview")] public List ParticipantsOverview { get; set; } } @@ -3151,8 +4329,14 @@ public class CallTranscriptionFailedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// The type of event: "call.transcription_failed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The error message detailing why transcription failed. + /// [JsonPropertyName("error")] public string? Error { get; set; } } @@ -3167,6 +4351,9 @@ public class CallTranscriptionReadyEvent public string EgressID { get; set; } [JsonPropertyName("call_transcription")] public CallTranscription CallTranscription { get; set; } + /// + /// The type of event: "call.transcription_ready" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -3179,6 +4366,9 @@ public class CallTranscriptionStartedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// The type of event: "call.transcription_started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -3191,6 +4381,9 @@ public class CallTranscriptionStoppedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("egress_id")] public string EgressID { get; set; } + /// + /// The type of event: "call.transcription_stopped" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -3217,18 +4410,33 @@ public class CallType public class CallTypeResponse { + /// + /// the time the call type was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// the name of the call type + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// the time the call type was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// the permissions granted to each role + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } [JsonPropertyName("notification_settings")] public NotificationSettingsResponse NotificationSettings { get; set; } [JsonPropertyName("settings")] public CallSettingsResponse Settings { get; set; } + /// + /// the external storage for the call type + /// [JsonPropertyName("external_storage")] public string? ExternalStorage { get; set; } } @@ -3247,8 +4455,14 @@ public class CallUpdatedEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("call")] public CallResponse Call { get; set; } + /// + /// The capabilities by role for this call + /// [JsonPropertyName("capabilities_by_role")] public Dictionary> CapabilitiesByRole { get; set; } + /// + /// The type of event: "call.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -3259,20 +4473,35 @@ public class CallUserFeedbackSubmittedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The rating given by the user (1-5) + /// [JsonPropertyName("rating")] public int Rating { get; set; } + /// + /// Call session ID + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event, "call.user_feedback" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The reason provided by the user for the rating + /// [JsonPropertyName("reason")] public string? Reason { get; set; } [JsonPropertyName("sdk")] public string? Sdk { get; set; } [JsonPropertyName("sdk_version")] public string? SdkVersion { get; set; } + /// + /// Custom data provided by the user + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -3289,6 +4518,9 @@ public class CallUserMutedEvent public string Reason { get; set; } [JsonPropertyName("muted_user_ids")] public List MutedUserIds { get; set; } + /// + /// The type of event: "call.user_muted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -3533,6 +4765,9 @@ public class ChannelBatchUpdateRequest public class ChannelBatchUpdateResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("task_id")] @@ -3593,6 +4828,9 @@ public class ChannelConfig public bool UrlEnrichment { get; set; } [JsonPropertyName("user_message_reminders")] public bool UserMessageReminders { get; set; } + /// + /// List of commands that channel supports + /// [JsonPropertyName("commands")] public List Commands { get; set; } [JsonPropertyName("blocklist")] @@ -3695,26 +4933,47 @@ public class ChannelConfigWithInfo public class ChannelCreatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.created" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was created + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel which was created + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was created + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -3743,26 +5002,47 @@ public class ChannelDataUpdate public class ChannelDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was deleted + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel which was deleted + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was deleted + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -3775,28 +5055,55 @@ public class ChannelExport { [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// Channel ID + /// [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// Date to export messages since + /// [JsonPropertyName("messages_since")] public DateTime? MessagesSince { get; set; } + /// + /// Date to export messages until + /// [JsonPropertyName("messages_until")] public DateTime? MessagesUntil { get; set; } + /// + /// Channel type + /// [JsonPropertyName("type")] public string? Type { get; set; } } public class ChannelFrozenEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.frozen" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was frozen + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The type of the channel which was frozen + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was frozen + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] @@ -3805,8 +5112,14 @@ public class ChannelFrozenEvent public class ChannelGetOrCreateRequest { + /// + /// Whether this channel will be hidden for the user who created the channel or not + /// [JsonPropertyName("hide_for_creator")] public bool? HideForCreator { get; set; } + /// + /// Refresh channel state + /// [JsonPropertyName("state")] public bool? State { get; set; } [JsonPropertyName("thread_unread_counts")] @@ -3823,28 +5136,52 @@ public class ChannelGetOrCreateRequest public class ChannelHiddenEvent { + /// + /// Whether the history was cleared + /// [JsonPropertyName("clear_history")] public bool ClearHistory { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.hidden" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was hidden + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel which was hidden + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was hidden + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -3855,16 +5192,28 @@ public class ChannelHiddenEvent public class ChannelInput { + /// + /// Enable or disable auto translation + /// [JsonPropertyName("auto_translation_enabled")] public bool? AutoTranslationEnabled { get; set; } + /// + /// Switch auto translation language + /// [JsonPropertyName("auto_translation_language")] public string? AutoTranslationLanguage { get; set; } [JsonPropertyName("created_by_id")] public string? CreatedByID { get; set; } [JsonPropertyName("disabled")] public bool? Disabled { get; set; } + /// + /// Freeze or unfreeze the channel + /// [JsonPropertyName("frozen")] public bool? Frozen { get; set; } + /// + /// Team the channel belongs to (if multi-tenant mode is enabled) + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("truncated_by_id")] @@ -3911,6 +5260,9 @@ public class ChannelMemberRequest { [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Role of the member in the channel + /// [JsonPropertyName("channel_role")] public string? ChannelRole { get; set; } [JsonPropertyName("custom")] @@ -3921,36 +5273,69 @@ public class ChannelMemberRequest public class ChannelMemberResponse { + /// + /// Whether member is banned this channel or not + /// [JsonPropertyName("banned")] public bool Banned { get; set; } + /// + /// Role of the member in the channel + /// [JsonPropertyName("channel_role")] public string ChannelRole { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("notifications_muted")] public bool NotificationsMuted { get; set; } + /// + /// Whether member is shadow banned in this channel or not + /// [JsonPropertyName("shadow_banned")] public bool ShadowBanned { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("archived_at")] public DateTime? ArchivedAt { get; set; } + /// + /// Expiration date of the ban + /// [JsonPropertyName("ban_expires")] public DateTime? BanExpires { get; set; } [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// Date when invite was accepted + /// [JsonPropertyName("invite_accepted_at")] public DateTime? InviteAcceptedAt { get; set; } + /// + /// Date when invite was rejected + /// [JsonPropertyName("invite_rejected_at")] public DateTime? InviteRejectedAt { get; set; } + /// + /// Whether member was invited or not + /// [JsonPropertyName("invited")] public bool? Invited { get; set; } + /// + /// Whether member is channel moderator or not + /// [JsonPropertyName("is_moderator")] public bool? IsModerator { get; set; } [JsonPropertyName("pinned_at")] public DateTime? PinnedAt { get; set; } + /// + /// Permission level of the member in the channel (DEPRECATED: use channel_role instead). One of: member, moderator, admin, owner + /// [JsonPropertyName("role")] public string? Role { get; set; } [JsonPropertyName("status")] @@ -3965,6 +5350,9 @@ public class ChannelMemberResponse public class ChannelMessagesResponse { + /// + /// List of messages + /// [JsonPropertyName("messages")] public List Messages { get; set; } [JsonPropertyName("channel")] @@ -3973,10 +5361,19 @@ public class ChannelMessagesResponse public class ChannelMute { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Date/time of mute expiration + /// [JsonPropertyName("expires")] public DateTime? Expires { get; set; } [JsonPropertyName("channel")] @@ -3987,14 +5384,23 @@ public class ChannelMute public class ChannelMutedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.muted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The mute objects + /// [JsonPropertyName("mutes")] public List Mutes { get; set; } [JsonPropertyName("mute")] @@ -4019,54 +5425,126 @@ public class ChannelPushPreferencesResponse public class ChannelResponse { + /// + /// Channel CID (:) + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("disabled")] public bool Disabled { get; set; } + /// + /// Whether channel is frozen or not + /// [JsonPropertyName("frozen")] public bool Frozen { get; set; } + /// + /// Channel unique ID + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Type of the channel + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// Whether auto translation is enabled or not + /// [JsonPropertyName("auto_translation_enabled")] public bool? AutoTranslationEnabled { get; set; } + /// + /// Language to translate to when auto translation is active + /// [JsonPropertyName("auto_translation_language")] public string? AutoTranslationLanguage { get; set; } + /// + /// Whether this channel is blocked by current user or not + /// [JsonPropertyName("blocked")] public bool? Blocked { get; set; } + /// + /// Cooldown period after sending each message + /// [JsonPropertyName("cooldown")] public int? Cooldown { get; set; } + /// + /// Date/time of deletion + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// Whether this channel is hidden by current user or not + /// [JsonPropertyName("hidden")] public bool? Hidden { get; set; } + /// + /// Date since when the message history is accessible + /// [JsonPropertyName("hide_messages_before")] public DateTime? HideMessagesBefore { get; set; } + /// + /// Date of the last message sent + /// [JsonPropertyName("last_message_at")] public DateTime? LastMessageAt { get; set; } + /// + /// Number of members in the channel + /// [JsonPropertyName("member_count")] public int? MemberCount { get; set; } + /// + /// Number of messages in the channel + /// [JsonPropertyName("message_count")] public int? MessageCount { get; set; } + /// + /// Date of mute expiration + /// [JsonPropertyName("mute_expires_at")] public DateTime? MuteExpiresAt { get; set; } + /// + /// Whether this channel is muted or not + /// [JsonPropertyName("muted")] public bool? Muted { get; set; } + /// + /// Team the channel belongs to (multi-tenant only) + /// [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// Date of the latest truncation of the channel + /// [JsonPropertyName("truncated_at")] public DateTime? TruncatedAt { get; set; } + /// + /// List of filter tags associated with the channel + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// List of channel members (max 100) + /// [JsonPropertyName("members")] public List Members { get; set; } + /// + /// List of channel capabilities of authenticated user + /// [JsonPropertyName("own_capabilities")] public List OwnCapabilities { get; set; } [JsonPropertyName("config")] @@ -4115,26 +5593,56 @@ public class ChannelStateResponse public class ChannelStateResponseFields { + /// + /// List of channel members + /// [JsonPropertyName("members")] public List Members { get; set; } + /// + /// List of channel messages + /// [JsonPropertyName("messages")] public List Messages { get; set; } + /// + /// List of pinned messages in the channel + /// [JsonPropertyName("pinned_messages")] public List PinnedMessages { get; set; } [JsonPropertyName("threads")] public List Threads { get; set; } + /// + /// Whether this channel is hidden or not + /// [JsonPropertyName("hidden")] public bool? Hidden { get; set; } + /// + /// Messages before this date are hidden from the user + /// [JsonPropertyName("hide_messages_before")] public DateTime? HideMessagesBefore { get; set; } + /// + /// Number of channel watchers + /// [JsonPropertyName("watcher_count")] public int? WatcherCount { get; set; } + /// + /// Active live locations in the channel + /// [JsonPropertyName("active_live_locations")] public List ActiveLiveLocations { get; set; } + /// + /// Pending messages that this user has sent + /// [JsonPropertyName("pending_messages")] public List PendingMessages { get; set; } + /// + /// List of read states + /// [JsonPropertyName("read")] public List Read { get; set; } + /// + /// List of user who is watching the channel + /// [JsonPropertyName("watchers")] public List Watchers { get; set; } [JsonPropertyName("channel")] @@ -4149,28 +5657,49 @@ public class ChannelStateResponseFields public class ChannelTruncatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.truncated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was truncated + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel which was truncated + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was truncated + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("message_id")] public string? MessageID { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -4263,16 +5792,31 @@ public class ChannelTypeConfig public class ChannelUnFrozenEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.unfrozen" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was unfrozen + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The type of the channel which was unfrozen + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was unfrozen + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] @@ -4281,14 +5825,23 @@ public class ChannelUnFrozenEvent public class ChannelUnmutedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.unmuted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The mute objects + /// [JsonPropertyName("mutes")] public List Mutes { get; set; } [JsonPropertyName("mute")] @@ -4299,28 +5852,49 @@ public class ChannelUnmutedEvent public class ChannelUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was updated + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel which was updated + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was updated + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("message_id")] public string? MessageID { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -4333,26 +5907,47 @@ public class ChannelUpdatedEvent public class ChannelVisibleEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "channel.visible" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was shown + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel which was shown + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was shown + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -4425,6 +6020,9 @@ public class ChatPreferencesResponse public class CheckExternalStorageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("file_url")] @@ -4433,20 +6031,44 @@ public class CheckExternalStorageResponse public class CheckPushRequest { + /// + /// Push message template for APN + /// [JsonPropertyName("apn_template")] public string? ApnTemplate { get; set; } + /// + /// Type of event for push templates (default: message.new). One of: message.new, message.updated, reaction.new, reaction.updated, notification.reminder_due + /// [JsonPropertyName("event_type")] public string? EventType { get; set; } + /// + /// Push message data template for Firebase + /// [JsonPropertyName("firebase_data_template")] public string? FirebaseDataTemplate { get; set; } + /// + /// Push message template for Firebase + /// [JsonPropertyName("firebase_template")] public string? FirebaseTemplate { get; set; } + /// + /// Message ID to send push notification for + /// [JsonPropertyName("message_id")] public string? MessageID { get; set; } + /// + /// Name of push provider + /// [JsonPropertyName("push_provider_name")] public string? PushProviderName { get; set; } + /// + /// Push provider type. One of: firebase, apn, huawei, xiaomi + /// [JsonPropertyName("push_provider_type")] public string? PushProviderType { get; set; } + /// + /// Don't require existing devices to render templates + /// [JsonPropertyName("skip_devices")] public bool? SkipDevices { get; set; } [JsonPropertyName("user_id")] @@ -4459,16 +6081,28 @@ public class CheckPushResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// The event type that was tested + /// [JsonPropertyName("event_type")] public string? EventType { get; set; } [JsonPropertyName("rendered_apn_template")] public string? RenderedApnTemplate { get; set; } [JsonPropertyName("rendered_firebase_template")] public string? RenderedFirebaseTemplate { get; set; } + /// + /// Don't require existing devices to render templates + /// [JsonPropertyName("skip_devices")] public bool? SkipDevices { get; set; } + /// + /// List of general errors + /// [JsonPropertyName("general_errors")] public List GeneralErrors { get; set; } + /// + /// Object with device errors + /// [JsonPropertyName("device_errors")] public Dictionary DeviceErrors { get; set; } [JsonPropertyName("rendered_message")] @@ -4477,16 +6111,39 @@ public class CheckPushResponse public class CheckRequest { + /// + /// ID of the user who created the entity + /// [JsonPropertyName("entity_creator_id")] public string EntityCreatorID { get; set; } + /// + /// Unique identifier of the entity to moderate + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// Type of entity to moderate + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } + /// + /// Key of the moderation configuration to use + /// [JsonPropertyName("config_key")] public string? ConfigKey { get; set; } + /// + /// Team associated with the configuration + /// [JsonPropertyName("config_team")] public string? ConfigTeam { get; set; } + /// + /// Original timestamp when the content was produced (for correlating flagged content with source video timeline) + /// + [JsonPropertyName("content_published_at")] + public DateTime? ContentPublishedAt { get; set; } + /// + /// Whether to run moderation in test mode + /// [JsonPropertyName("test_mode")] public bool? TestMode { get; set; } [JsonPropertyName("user_id")] @@ -4495,6 +6152,9 @@ public class CheckRequest public ModerationConfig? Config { get; set; } [JsonPropertyName("moderation_payload")] public ModerationPayload? ModerationPayload { get; set; } + /// + /// Additional moderation configuration options + /// [JsonPropertyName("options")] public object Options { get; set; } [JsonPropertyName("user")] @@ -4505,10 +6165,19 @@ public class CheckResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Suggested action based on moderation results + /// [JsonPropertyName("recommended_action")] public string RecommendedAction { get; set; } + /// + /// Status of the moderation check (completed or pending) + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// ID of the running moderation task + /// [JsonPropertyName("task_id")] public string? TaskID { get; set; } [JsonPropertyName("item")] @@ -4519,6 +6188,9 @@ public class CheckResponse public class CheckS3AccessRequest { + /// + /// Optional stream+s3:// reference to test access against + /// [JsonPropertyName("s3_url")] public string? S3Url { get; set; } } @@ -4527,18 +6199,33 @@ public class CheckS3AccessResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Whether the S3 access check succeeded + /// [JsonPropertyName("success")] public bool Success { get; set; } + /// + /// Descriptive message about the check result + /// [JsonPropertyName("message")] public string? Message { get; set; } } public class CheckSNSRequest { + /// + /// AWS SNS access key + /// [JsonPropertyName("sns_key")] public string? SnsKey { get; set; } + /// + /// AWS SNS key secret + /// [JsonPropertyName("sns_secret")] public string? SnsSecret { get; set; } + /// + /// AWS SNS topic ARN + /// [JsonPropertyName("sns_topic_arn")] public string? SnsTopicArn { get; set; } } @@ -4547,20 +6234,38 @@ public class CheckSNSResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Validation result. One of: ok, error + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// Error text + /// [JsonPropertyName("error")] public string? Error { get; set; } + /// + /// Error data + /// [JsonPropertyName("data")] public object Data { get; set; } } public class CheckSQSRequest { + /// + /// AWS SQS access key + /// [JsonPropertyName("sqs_key")] public string? SqsKey { get; set; } + /// + /// AWS SQS key secret + /// [JsonPropertyName("sqs_secret")] public string? SqsSecret { get; set; } + /// + /// AWS SQS endpoint URL + /// [JsonPropertyName("sqs_url")] public string? SqsUrl { get; set; } } @@ -4569,10 +6274,19 @@ public class CheckSQSResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Validation result. One of: ok, error + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// Error text + /// [JsonPropertyName("error")] public string? Error { get; set; } + /// + /// Error data + /// [JsonPropertyName("data")] public object Data { get; set; } } @@ -4595,6 +6309,9 @@ public class ClosedCaptionEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("closed_caption")] public CallClosedCaption ClosedCaption { get; set; } + /// + /// The type of event: "call.closed_caption" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -4627,56 +6344,110 @@ public class CollectUserFeedbackRequest public class CollectUserFeedbackResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class CollectionRequest { + /// + /// Name/type of the collection + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Custom data for the collection (required, must contain at least one key) + /// [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// Unique identifier for the collection within its name (optional, will be auto-generated if not provided) + /// [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// ID of the user who owns this collection + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } } public class CollectionResponse { + /// + /// Unique identifier for the collection within its name + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Name/type of the collection + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// When the collection was created + /// [JsonPropertyName("created_at")] public DateTime? CreatedAt { get; set; } + /// + /// When the collection was last updated + /// [JsonPropertyName("updated_at")] public DateTime? UpdatedAt { get; set; } + /// + /// ID of the user who owns this collection + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Custom data for the collection + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class Command { + /// + /// Arguments help text, shown in commands auto-completion + /// [JsonPropertyName("args")] public string Args { get; set; } + /// + /// Description, shown in commands auto-completion + /// [JsonPropertyName("description")] public string Description { get; set; } + /// + /// Unique command name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Set name used for grouping commands + /// [JsonPropertyName("set")] public string Set { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime? CreatedAt { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime? UpdatedAt { get; set; } } public class CommentAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -4687,6 +6458,9 @@ public class CommentAddedEvent public CommentResponse Comment { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.comment.added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -4699,6 +6473,9 @@ public class CommentAddedEvent public class CommentDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -4707,6 +6484,9 @@ public class CommentDeletedEvent public CommentResponse Comment { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.comment.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -4719,6 +6499,9 @@ public class CommentDeletedEvent public class CommentReactionAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -4731,6 +6514,9 @@ public class CommentReactionAddedEvent public object Custom { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// The type of event: "feeds.comment.reaction.added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -4743,6 +6529,9 @@ public class CommentReactionAddedEvent public class CommentReactionDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -4753,6 +6542,9 @@ public class CommentReactionDeletedEvent public object Custom { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// The type of reaction that was removed + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -4763,6 +6555,9 @@ public class CommentReactionDeletedEvent public class CommentReactionUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -4775,6 +6570,9 @@ public class CommentReactionUpdatedEvent public object Custom { get; set; } [JsonPropertyName("reaction")] public FeedsReactionResponse Reaction { get; set; } + /// + /// The type of event: "feeds.comment.reaction.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -4787,60 +6585,158 @@ public class CommentReactionUpdatedEvent public class CommentResponse { + /// + /// Confidence score of the comment + /// [JsonPropertyName("confidence_score")] public double ConfidenceScore { get; set; } + /// + /// When the comment was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Number of downvotes for this comment + /// [JsonPropertyName("downvote_count")] public int DownvoteCount { get; set; } + /// + /// Unique identifier for the comment + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// ID of the object this comment is associated with + /// [JsonPropertyName("object_id")] public string ObjectID { get; set; } + /// + /// Type of the object this comment is associated with + /// [JsonPropertyName("object_type")] public string ObjectType { get; set; } + /// + /// Number of reactions to this comment + /// [JsonPropertyName("reaction_count")] public int ReactionCount { get; set; } + /// + /// Number of replies to this comment + /// [JsonPropertyName("reply_count")] public int ReplyCount { get; set; } + /// + /// Score of the comment based on reactions + /// [JsonPropertyName("score")] public int Score { get; set; } + /// + /// Status of the comment. One of: active, deleted, removed, hidden + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// When the comment was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Number of upvotes for this comment + /// [JsonPropertyName("upvote_count")] public int UpvoteCount { get; set; } + /// + /// Users mentioned in the comment + /// [JsonPropertyName("mentioned_users")] public List MentionedUsers { get; set; } + /// + /// Current user's reactions to this activity + /// [JsonPropertyName("own_reactions")] public List OwnReactions { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// Controversy score of the comment + /// [JsonPropertyName("controversy_score")] public double? ControversyScore { get; set; } + /// + /// When the comment was deleted + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// When the comment was last edited + /// [JsonPropertyName("edited_at")] public DateTime? EditedAt { get; set; } + /// + /// ID of parent comment for nested replies + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// Text content of the comment + /// [JsonPropertyName("text")] public string? Text { get; set; } + /// + /// Attachments associated with the comment + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// Recent reactions to the comment + /// [JsonPropertyName("latest_reactions")] public List LatestReactions { get; set; } + /// + /// Custom data for the comment + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("moderation")] public ModerationV2Response? Moderation { get; set; } + /// + /// Grouped reactions by type + /// [JsonPropertyName("reaction_groups")] public Dictionary ReactionGroups { get; set; } } + public class CommentRestoredEvent + { + /// + /// Date/time of creation + /// + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + [JsonPropertyName("fid")] + public string Fid { get; set; } + [JsonPropertyName("comment")] + public CommentResponse Comment { get; set; } + [JsonPropertyName("custom")] + public object Custom { get; set; } + /// + /// The type of event: "feeds.comment.restored" in this case + /// + [JsonPropertyName("type")] + public string Type { get; set; } + [JsonPropertyName("feed_visibility")] + public string? FeedVisibility { get; set; } + [JsonPropertyName("received_at")] + public DateTime? ReceivedAt { get; set; } + [JsonPropertyName("user")] + public UserResponseCommonFields? User { get; set; } + } + public class CommentUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -4849,6 +6745,9 @@ public class CommentUpdatedEvent public CommentResponse Comment { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.comment.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -4871,58 +6770,121 @@ public class CompositeRecordingResponse public class ConfigOverridesRequest { + /// + /// Blocklist name + /// [JsonPropertyName("blocklist")] public string? Blocklist { get; set; } + /// + /// Blocklist behavior. One of: flag, block + /// [JsonPropertyName("blocklist_behavior")] public string? BlocklistBehavior { get; set; } + /// + /// Enable/disable message counting + /// [JsonPropertyName("count_messages")] public bool? CountMessages { get; set; } + /// + /// Maximum message length + /// [JsonPropertyName("max_message_length")] public int? MaxMessageLength { get; set; } [JsonPropertyName("push_level")] public string? PushLevel { get; set; } + /// + /// Enable/disable quotes + /// [JsonPropertyName("quotes")] public bool? Quotes { get; set; } + /// + /// Enable/disable reactions + /// [JsonPropertyName("reactions")] public bool? Reactions { get; set; } + /// + /// Enable/disable replies + /// [JsonPropertyName("replies")] public bool? Replies { get; set; } + /// + /// Enable/disable shared locations + /// [JsonPropertyName("shared_locations")] public bool? SharedLocations { get; set; } + /// + /// Enable/disable typing events + /// [JsonPropertyName("typing_events")] public bool? TypingEvents { get; set; } + /// + /// Enable/disable uploads + /// [JsonPropertyName("uploads")] public bool? Uploads { get; set; } + /// + /// Enable/disable URL enrichment + /// [JsonPropertyName("url_enrichment")] public bool? UrlEnrichment { get; set; } + /// + /// Enable/disable user message reminders + /// [JsonPropertyName("user_message_reminders")] public bool? UserMessageReminders { get; set; } + /// + /// List of available commands + /// [JsonPropertyName("commands")] public List Commands { get; set; } [JsonPropertyName("chat_preferences")] public ChatPreferences? ChatPreferences { get; set; } + /// + /// Permission grants modifiers + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } } public class ConfigResponse { + /// + /// Whether moderation should be performed asynchronously + /// [JsonPropertyName("async")] public bool Async { get; set; } + /// + /// When the configuration was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique identifier for the moderation configuration + /// [JsonPropertyName("key")] public string Key { get; set; } + /// + /// Team associated with the configuration + /// [JsonPropertyName("team")] public string Team { get; set; } + /// + /// When the configuration was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("supported_video_call_harm_types")] public List SupportedVideoCallHarmTypes { get; set; } + /// + /// Configurable image moderation label definitions for dashboard rendering + /// [JsonPropertyName("ai_image_label_definitions")] public List AiImageLabelDefinitions { get; set; } [JsonPropertyName("ai_image_config")] public AIImageConfig? AiImageConfig { get; set; } + /// + /// Available L2 subclassifications per L1 image moderation label, based on the active provider + /// [JsonPropertyName("ai_image_subclassifications")] public Dictionary> AiImageSubclassifications { get; set; } [JsonPropertyName("ai_text_config")] @@ -4955,8 +6917,14 @@ public class ContentCountRuleParameters public class CoordinatesResponse { + /// + /// Latitude coordinate + /// [JsonPropertyName("latitude")] public double Latitude { get; set; } + /// + /// Longitude coordinate + /// [JsonPropertyName("longitude")] public double Longitude { get; set; } } @@ -4971,8 +6939,14 @@ public class CountByMinuteResponse public class CreateBlockListRequest { + /// + /// Block list name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// List of words to block + /// [JsonPropertyName("words")] public List Words { get; set; } [JsonPropertyName("is_leet_check_enabled")] @@ -4981,12 +6955,18 @@ public class CreateBlockListRequest public bool? IsPluralCheckEnabled { get; set; } [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// Block list type. One of: regex, domain, domain_allowlist, email, email_allowlist, word + /// [JsonPropertyName("type")] public string? Type { get; set; } } public class CreateBlockListResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("blocklist")] @@ -4997,8 +6977,14 @@ public class CreateCallTypeRequest { [JsonPropertyName("name")] public string Name { get; set; } + /// + /// the external storage for the call type + /// [JsonPropertyName("external_storage")] public string? ExternalStorage { get; set; } + /// + /// the permissions granted to each role + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } [JsonPropertyName("notification_settings")] @@ -5009,90 +6995,192 @@ public class CreateCallTypeRequest public class CreateCallTypeResponse { + /// + /// the time the call type was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// the name of the call type + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// the time the call type was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// the permissions granted to each role + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } [JsonPropertyName("notification_settings")] public NotificationSettingsResponse NotificationSettings { get; set; } [JsonPropertyName("settings")] public CallSettingsResponse Settings { get; set; } + /// + /// the external storage for the call type + /// [JsonPropertyName("external_storage")] public string? ExternalStorage { get; set; } } public class CreateChannelTypeRequest { + /// + /// Automod. One of: disabled, simple, AI + /// [JsonPropertyName("automod")] public string Automod { get; set; } + /// + /// Automod behavior. One of: flag, block + /// [JsonPropertyName("automod_behavior")] public string AutomodBehavior { get; set; } + /// + /// Max message length + /// [JsonPropertyName("max_message_length")] public int MaxMessageLength { get; set; } + /// + /// Channel type name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Blocklist + /// [JsonPropertyName("blocklist")] public string? Blocklist { get; set; } + /// + /// Blocklist behavior. One of: flag, block, shadow_block + /// [JsonPropertyName("blocklist_behavior")] public string? BlocklistBehavior { get; set; } + /// + /// Connect events + /// [JsonPropertyName("connect_events")] public bool? ConnectEvents { get; set; } + /// + /// Count messages in channel. + /// [JsonPropertyName("count_messages")] public bool? CountMessages { get; set; } + /// + /// Custom events + /// [JsonPropertyName("custom_events")] public bool? CustomEvents { get; set; } [JsonPropertyName("delivery_events")] public bool? DeliveryEvents { get; set; } + /// + /// Mark messages pending + /// [JsonPropertyName("mark_messages_pending")] public bool? MarkMessagesPending { get; set; } + /// + /// Message retention. One of: infinite, numeric + /// [JsonPropertyName("message_retention")] public string? MessageRetention { get; set; } + /// + /// Mutes + /// [JsonPropertyName("mutes")] public bool? Mutes { get; set; } + /// + /// Partition size + /// [JsonPropertyName("partition_size")] public int? PartitionSize { get; set; } + /// + /// Partition TTL + /// [JsonPropertyName("partition_ttl")] public string? PartitionTtl { get; set; } + /// + /// Polls + /// [JsonPropertyName("polls")] public bool? Polls { get; set; } + /// + /// Default push notification level for the channel type. One of: all, all_mentions, mentions, direct_mentions, none + /// [JsonPropertyName("push_level")] public string? PushLevel { get; set; } + /// + /// Push notifications + /// [JsonPropertyName("push_notifications")] public bool? PushNotifications { get; set; } + /// + /// Reactions + /// [JsonPropertyName("reactions")] public bool? Reactions { get; set; } + /// + /// Read events + /// [JsonPropertyName("read_events")] public bool? ReadEvents { get; set; } + /// + /// Replies + /// [JsonPropertyName("replies")] public bool? Replies { get; set; } + /// + /// Search + /// [JsonPropertyName("search")] public bool? Search { get; set; } + /// + /// Enables shared location messages + /// [JsonPropertyName("shared_locations")] public bool? SharedLocations { get; set; } [JsonPropertyName("skip_last_msg_update_for_system_msgs")] public bool? SkipLastMsgUpdateForSystemMsgs { get; set; } + /// + /// Typing events + /// [JsonPropertyName("typing_events")] public bool? TypingEvents { get; set; } + /// + /// Uploads + /// [JsonPropertyName("uploads")] public bool? Uploads { get; set; } + /// + /// URL enrichment + /// [JsonPropertyName("url_enrichment")] public bool? UrlEnrichment { get; set; } [JsonPropertyName("user_message_reminders")] public bool? UserMessageReminders { get; set; } + /// + /// Blocklists + /// [JsonPropertyName("blocklists")] public List Blocklists { get; set; } + /// + /// List of commands that channel supports + /// [JsonPropertyName("commands")] public List Commands { get; set; } + /// + /// List of permissions for the channel type + /// [JsonPropertyName("permissions")] public List Permissions { get; set; } [JsonPropertyName("chat_preferences")] public ChatPreferences? ChatPreferences { get; set; } + /// + /// List of grants for the channel type + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } } @@ -5181,6 +7269,9 @@ public class CreateChannelTypeResponse public class CreateCollectionsRequest { + /// + /// List of collections to create + /// [JsonPropertyName("collections")] public List Collections { get; set; } [JsonPropertyName("user_id")] @@ -5193,18 +7284,33 @@ public class CreateCollectionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of created collections + /// [JsonPropertyName("collections")] public List Collections { get; set; } } public class CreateCommandRequest { + /// + /// Description, shown in commands auto-completion + /// [JsonPropertyName("description")] public string Description { get; set; } + /// + /// Unique command name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Arguments help text, shown in commands auto-completion + /// [JsonPropertyName("args")] public string? Args { get; set; } + /// + /// Set name used for grouping commands + /// [JsonPropertyName("set")] public string? Set { get; set; } } @@ -5219,14 +7325,29 @@ public class CreateCommandResponse public class CreateDeviceRequest { + /// + /// Device ID + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Push provider + /// [JsonPropertyName("push_provider")] public string PushProvider { get; set; } + /// + /// Push provider name + /// [JsonPropertyName("push_provider_name")] public string? PushProviderName { get; set; } + /// + /// **Server-side only**. User ID which server acts upon + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// When true the token is for Apple VoIP push notifications + /// [JsonPropertyName("voip_token")] public bool? VoipToken { get; set; } [JsonPropertyName("user")] @@ -5235,14 +7356,26 @@ public class CreateDeviceRequest public class CreateExternalStorageRequest { + /// + /// The name of the bucket on the service provider + /// [JsonPropertyName("bucket")] public string Bucket { get; set; } + /// + /// The name of the provider, this must be unique + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// The type of storage to use + /// [JsonPropertyName("storage_type")] public string StorageType { get; set; } [JsonPropertyName("gcs_credentials")] public string? GcsCredentials { get; set; } + /// + /// The path prefix to use for storing files + /// [JsonPropertyName("path")] public string? Path { get; set; } [JsonPropertyName("aws_s3")] @@ -5253,22 +7386,40 @@ public class CreateExternalStorageRequest public class CreateExternalStorageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class CreateFeedGroupRequest { + /// + /// Unique identifier for the feed group + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. + /// [JsonPropertyName("default_visibility")] public string? DefaultVisibility { get; set; } + /// + /// Configuration for activity processors + /// [JsonPropertyName("activity_processors")] public List ActivityProcessors { get; set; } + /// + /// Configuration for activity selectors + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] public AggregationConfig? Aggregation { get; set; } + /// + /// Custom data for the feed group + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("notification")] @@ -5291,8 +7442,14 @@ public class CreateFeedGroupResponse public class CreateFeedViewRequest { + /// + /// Unique identifier for the feed view + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Configuration for selecting activities + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] @@ -5311,8 +7468,14 @@ public class CreateFeedViewResponse public class CreateFeedsBatchRequest { + /// + /// List of feeds to create + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } + /// + /// If true, enriches the created feeds with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } } @@ -5321,6 +7484,9 @@ public class CreateFeedsBatchResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of created feeds + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } } @@ -5333,8 +7499,14 @@ public class CreateGuestRequest public class CreateGuestResponse { + /// + /// the access token to authenticate the user + /// [JsonPropertyName("access_token")] public string AccessToken { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("user")] @@ -5353,6 +7525,9 @@ public class CreateImportRequest public class CreateImportResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("import_task")] @@ -5367,6 +7542,9 @@ public class CreateImportURLRequest public class CreateImportURLResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("path")] @@ -5393,6 +7571,9 @@ public class CreateImportV2TaskResponse public int AppPk { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("id")] @@ -5409,16 +7590,34 @@ public class CreateImportV2TaskResponse public class CreateMembershipLevelRequest { + /// + /// Unique identifier for the membership level + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Display name for the membership level + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Optional description of the membership level + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// Priority level (higher numbers = higher priority) + /// [JsonPropertyName("priority")] public int? Priority { get; set; } + /// + /// Activity tags this membership level gives access to + /// [JsonPropertyName("tags")] public List Tags { get; set; } + /// + /// Custom data for the membership level + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -5433,6 +7632,9 @@ public class CreateMembershipLevelResponse public class CreatePollOptionRequest { + /// + /// Option text + /// [JsonPropertyName("text")] public string Text { get; set; } [JsonPropertyName("user_id")] @@ -5445,20 +7647,38 @@ public class CreatePollOptionRequest public class CreatePollRequest { + /// + /// The name of the poll + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Indicates whether users can suggest user defined answers + /// [JsonPropertyName("allow_answers")] public bool? AllowAnswers { get; set; } [JsonPropertyName("allow_user_suggested_options")] public bool? AllowUserSuggestedOptions { get; set; } + /// + /// A description of the poll + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// Indicates whether users can cast multiple votes + /// [JsonPropertyName("enforce_unique_vote")] public bool? EnforceUniqueVote { get; set; } [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// Indicates whether the poll is open for voting + /// [JsonPropertyName("is_closed")] public bool? IsClosed { get; set; } + /// + /// Indicates the maximum amount of votes a user can cast + /// [JsonPropertyName("max_votes_allowed")] public int? MaxVotesAllowed { get; set; } [JsonPropertyName("user_id")] @@ -5485,12 +7705,18 @@ public class CreateReminderRequest public class CreateRoleRequest { + /// + /// Role name + /// [JsonPropertyName("name")] public string Name { get; set; } } public class CreateRoleResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("role")] @@ -5499,12 +7725,24 @@ public class CreateRoleResponse public class CreateSIPTrunkRequest { + /// + /// Name of the SIP trunk + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Phone numbers associated with this SIP trunk + /// [JsonPropertyName("numbers")] public List Numbers { get; set; } + /// + /// Optional password for SIP trunk authentication + /// [JsonPropertyName("password")] public string? Password { get; set; } + /// + /// Optional list of allowed IPv4/IPv6 addresses or CIDR blocks + /// [JsonPropertyName("allowed_ips")] public List AllowedIps { get; set; } } @@ -5519,14 +7757,29 @@ public class CreateSIPTrunkResponse public class CreateUserGroupRequest { + /// + /// The user friendly name of the user group + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// An optional description for the group + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// Optional user group ID. If not provided, a UUID v7 will be generated + /// [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// Optional team ID to scope the group to a team + /// [JsonPropertyName("team_id")] public string? TeamID { get; set; } + /// + /// Optional initial list of user IDs to add as members + /// [JsonPropertyName("member_ids")] public List MemberIds { get; set; } } @@ -5541,32 +7794,62 @@ public class CreateUserGroupResponse public class CustomActionRequestPayload { + /// + /// Custom action identifier + /// [JsonPropertyName("id")] public string? ID { get; set; } + /// + /// Custom action options + /// [JsonPropertyName("options")] public object Options { get; set; } } public class CustomCheckFlag { + /// + /// Type of check (custom_check_text, custom_check_image, custom_check_video) + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Optional explanation for the flag + /// [JsonPropertyName("reason")] public string? Reason { get; set; } + /// + /// Labels from various moderation sources + /// [JsonPropertyName("labels")] public List Labels { get; set; } + /// + /// Additional metadata for the flag + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class CustomCheckRequest { + /// + /// Unique identifier of the entity + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// Type of entity to perform custom check on + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } + /// + /// List of custom check flags (1-10 flags required) + /// [JsonPropertyName("flags")] public List Flags { get; set; } + /// + /// ID of the user who created the entity (required for non-message entities) + /// [JsonPropertyName("entity_creator_id")] public string? EntityCreatorID { get; set; } [JsonPropertyName("user_id")] @@ -5581,8 +7864,14 @@ public class CustomCheckResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Unique identifier of the custom check + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Status of the custom check + /// [JsonPropertyName("status")] public string Status { get; set; } [JsonPropertyName("item")] @@ -5607,10 +7896,16 @@ public class CustomVideoEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event, "custom" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -5665,24 +7960,42 @@ public class DailyAggregateUserFeedbackReportResponse public class DailyMetricResponse { + /// + /// Date in YYYY-MM-DD format + /// [JsonPropertyName("date")] public string Date { get; set; } + /// + /// Metric value for this date + /// [JsonPropertyName("value")] public int Value { get; set; } } public class DailyMetricStatsResponse { + /// + /// Total value across all days in the date range + /// [JsonPropertyName("total")] public int Total { get; set; } + /// + /// Array of daily metric values + /// [JsonPropertyName("daily")] public List Daily { get; set; } } public class DailyValue { + /// + /// Date in YYYY-MM-DD format + /// [JsonPropertyName("date")] public string Date { get; set; } + /// + /// Metric value for this date + /// [JsonPropertyName("value")] public int Value { get; set; } } @@ -5705,14 +8018,23 @@ public class DataDogInfo public class DeactivateUserRequest { + /// + /// ID of the user who deactivated the user + /// [JsonPropertyName("created_by_id")] public string? CreatedByID { get; set; } + /// + /// Makes messages appear to be deleted + /// [JsonPropertyName("mark_messages_deleted")] public bool? MarkMessagesDeleted { get; set; } } public class DeactivateUserResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("user")] @@ -5721,18 +8043,30 @@ public class DeactivateUserResponse public class DeactivateUsersRequest { + /// + /// User IDs to deactivate + /// [JsonPropertyName("user_ids")] public List UserIds { get; set; } + /// + /// ID of the user who deactivated the users + /// [JsonPropertyName("created_by_id")] public string? CreatedByID { get; set; } [JsonPropertyName("mark_channels_deleted")] public bool? MarkChannelsDeleted { get; set; } + /// + /// Makes messages appear to be deleted + /// [JsonPropertyName("mark_messages_deleted")] public bool? MarkMessagesDeleted { get; set; } } public class DeactivateUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("task_id")] @@ -5741,26 +8075,53 @@ public class DeactivateUsersResponse public class DecayFunctionConfig { + /// + /// Base value for decay function + /// [JsonPropertyName("base")] public string? @Base { get; set; } + /// + /// Decay rate + /// [JsonPropertyName("decay")] public string? Decay { get; set; } + /// + /// Direction of decay + /// [JsonPropertyName("direction")] public string? Direction { get; set; } + /// + /// Offset value for decay function + /// [JsonPropertyName("offset")] public string? Offset { get; set; } + /// + /// Origin value for decay function + /// [JsonPropertyName("origin")] public string? Origin { get; set; } + /// + /// Scale factor for decay function + /// [JsonPropertyName("scale")] public string? Scale { get; set; } } public class DeleteActivitiesRequest { + /// + /// List of activity IDs to delete + /// [JsonPropertyName("ids")] public List Ids { get; set; } + /// + /// Whether to also delete any notification activities created from mentions in these activities + /// [JsonPropertyName("delete_notification_activity")] public bool? DeleteNotificationActivity { get; set; } + /// + /// Whether to permanently delete the activities + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } [JsonPropertyName("user_id")] @@ -5773,6 +8134,9 @@ public class DeleteActivitiesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of activity IDs that were successfully deleted + /// [JsonPropertyName("deleted_ids")] public List DeletedIds { get; set; } } @@ -5789,12 +8153,24 @@ public class DeleteActivityReactionResponse public class DeleteActivityRequestPayload { + /// + /// ID of the activity to delete (alternative to item_id) + /// [JsonPropertyName("entity_id")] public string? EntityID { get; set; } + /// + /// Type of the entity (required for delete_activity to distinguish v2 vs v3) + /// [JsonPropertyName("entity_type")] public string? EntityType { get; set; } + /// + /// Whether to permanently delete the activity + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } + /// + /// Reason for deletion + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } @@ -5821,6 +8197,9 @@ public class DeleteBookmarkResponse public class DeleteCallRequest { + /// + /// if true the call will be hard deleted along with all related data + /// [JsonPropertyName("hard")] public bool? Hard { get; set; } } @@ -5837,6 +8216,9 @@ public class DeleteCallResponse public class DeleteChannelResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("channel")] @@ -5845,18 +8227,30 @@ public class DeleteChannelResponse public class DeleteChannelsRequest { + /// + /// All channels that should be deleted + /// [JsonPropertyName("cids")] public List Cids { get; set; } + /// + /// Specify if channels and all ressources should be hard deleted + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } } public class DeleteChannelsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("task_id")] public string? TaskID { get; set; } + /// + /// Map of channel IDs and their deletion results + /// [JsonPropertyName("result")] public Dictionary Result { get; set; } } @@ -5879,6 +8273,9 @@ public class DeleteCommandResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Command name + /// [JsonPropertyName("name")] public string Name { get; set; } } @@ -5895,12 +8292,24 @@ public class DeleteCommentReactionResponse public class DeleteCommentRequestPayload { + /// + /// ID of the comment to delete (alternative to item_id) + /// [JsonPropertyName("entity_id")] public string? EntityID { get; set; } + /// + /// Type of the entity + /// [JsonPropertyName("entity_type")] public string? EntityType { get; set; } + /// + /// Whether to permanently delete the comment + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } + /// + /// Reason for deletion + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } @@ -5917,12 +8326,18 @@ public class DeleteCommentResponse public class DeleteExternalStorageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class DeleteFeedGroupResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -5931,12 +8346,18 @@ public class DeleteFeedResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// The ID of the async task that will handle feed cleanup and hard deletion + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } } public class DeleteFeedUserDataRequest { + /// + /// Whether to perform a hard delete instead of a soft delete + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } } @@ -5945,6 +8366,9 @@ public class DeleteFeedUserDataResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// The task ID for the deletion task + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } } @@ -5957,8 +8381,14 @@ public class DeleteFeedViewResponse public class DeleteFeedsBatchRequest { + /// + /// List of fully qualified feed IDs (format: group_id:feed_id) to delete + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } + /// + /// Whether to permanently delete the feeds instead of soft delete + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } } @@ -5967,30 +8397,51 @@ public class DeleteFeedsBatchResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// The ID of the async task that will handle feed cleanup and hard deletion + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } } public class DeleteImportV2TaskResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class DeleteMessageRequestPayload { + /// + /// ID of the message to delete (alternative to item_id) + /// [JsonPropertyName("entity_id")] public string? EntityID { get; set; } + /// + /// Type of the entity + /// [JsonPropertyName("entity_type")] public string? EntityType { get; set; } + /// + /// Whether to permanently delete the message + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } + /// + /// Reason for deletion + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } public class DeleteMessageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] @@ -6005,6 +8456,9 @@ public class DeleteModerationConfigResponse public class DeleteModerationRuleResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -6017,18 +8471,33 @@ public class DeleteModerationTemplateResponse public class DeleteReactionRequestPayload { + /// + /// ID of the reaction to delete (alternative to item_id) + /// [JsonPropertyName("entity_id")] public string? EntityID { get; set; } + /// + /// Type of the entity + /// [JsonPropertyName("entity_type")] public string? EntityType { get; set; } + /// + /// Whether to permanently delete the reaction + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } + /// + /// Reason for deletion + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } public class DeleteReactionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] @@ -6039,12 +8508,18 @@ public class DeleteReactionResponse public class DeleteRecordingResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class DeleteReminderResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -6052,11 +8527,14 @@ public class DeleteReminderResponse public class DeleteRetentionPolicyRequest { [JsonPropertyName("policy")] - public string? Policy { get; set; } + public string Policy { get; set; } } public class DeleteRetentionPolicyResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -6075,58 +8553,126 @@ public class DeleteSIPTrunkResponse public class DeleteSegmentTargetsRequest { + /// + /// Target IDs + /// [JsonPropertyName("target_ids")] public List TargetIds { get; set; } } public class DeleteTranscriptionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class DeleteUserRequestPayload { + /// + /// Also delete all user conversations + /// [JsonPropertyName("delete_conversation_channels")] public bool? DeleteConversationChannels { get; set; } + /// + /// Delete flagged feeds content + /// [JsonPropertyName("delete_feeds_content")] public bool? DeleteFeedsContent { get; set; } + /// + /// ID of the user to delete (alternative to item_id) + /// [JsonPropertyName("entity_id")] public string? EntityID { get; set; } + /// + /// Type of the entity + /// [JsonPropertyName("entity_type")] public string? EntityType { get; set; } + /// + /// Whether to permanently delete the user + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } + /// + /// Also delete all user messages + /// [JsonPropertyName("mark_messages_deleted")] public bool? MarkMessagesDeleted { get; set; } + /// + /// Reason for deletion + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } public class DeleteUsersRequest { + /// + /// IDs of users to delete + /// [JsonPropertyName("user_ids")] public List UserIds { get; set; } + /// + /// Calls delete mode. + /// Affected calls are those that include exactly two members, one of whom is the user being deleted. + /// * null or empty string - doesn't delete any calls + /// * soft - marks user's calls and their related data as deleted (soft-delete) + /// * hard - deletes user's calls and their data completely (hard-delete) + /// [JsonPropertyName("calls")] public string? Calls { get; set; } + /// + /// Conversation channels delete mode. + /// Conversation channel is any channel which only has two members one of which is the user being deleted. + /// * null or empty string - doesn't delete any conversation channels + /// * soft - marks all conversation channels as deleted (same effect as Delete Channels with 'hard' option disabled) + /// * hard - deletes channel and all its data completely including messages (same effect as Delete Channels with 'hard' option enabled) + /// [JsonPropertyName("conversations")] public string? Conversations { get; set; } + /// + /// Delete user files. + /// * false or empty string - doesn't delete any files + /// * true - deletes all files uploaded by the user, including images and attachments. + /// [JsonPropertyName("files")] public bool? Files { get; set; } + /// + /// Message delete mode. + /// * null or empty string - doesn't delete user messages + /// * soft - marks all user messages as deleted without removing any related message data + /// * pruning - marks all user messages as deleted, nullifies message information and removes some message data such as reactions and flags + /// * hard - deletes messages completely with all related information + /// [JsonPropertyName("messages")] public string? Messages { get; set; } [JsonPropertyName("new_call_owner_id")] public string? NewCallOwnerID { get; set; } [JsonPropertyName("new_channel_owner_id")] public string? NewChannelOwnerID { get; set; } + /// + /// User delete mode. + /// * soft - marks user as deleted and retains all user data + /// * pruning - marks user as deleted and nullifies user information + /// * hard - deletes user completely. Requires 'hard' option for messages and conversations as well + /// [JsonPropertyName("user")] public string? User { get; set; } } public class DeleteUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// ID of the task to delete users + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } } @@ -6165,50 +8711,107 @@ public class DeviceErrorInfo public class DeviceResponse { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Device ID + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Push provider + /// [JsonPropertyName("push_provider")] public string PushProvider { get; set; } + /// + /// User ID + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Whether device is disabled or not + /// [JsonPropertyName("disabled")] public bool? Disabled { get; set; } + /// + /// Reason explaining why device had been disabled + /// [JsonPropertyName("disabled_reason")] public string? DisabledReason { get; set; } + /// + /// Push provider name + /// [JsonPropertyName("push_provider_name")] public string? PushProviderName { get; set; } + /// + /// When true the token is for Apple VoIP push notifications + /// [JsonPropertyName("voip")] public bool? Voip { get; set; } } public class DraftPayloadResponse { + /// + /// Message ID is unique string identifier of the message + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Text of the message + /// [JsonPropertyName("text")] public string Text { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// Contains HTML markup of the message + /// [JsonPropertyName("html")] public string? Html { get; set; } + /// + /// MML content of the message + /// [JsonPropertyName("mml")] public string? Mml { get; set; } + /// + /// ID of parent message (thread) + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// Identifier of the poll to include in the message + /// [JsonPropertyName("poll_id")] public string? PollID { get; set; } [JsonPropertyName("quoted_message_id")] public string? QuotedMessageID { get; set; } + /// + /// Whether thread reply should be shown in the channel as well + /// [JsonPropertyName("show_in_channel")] public bool? ShowInChannel { get; set; } + /// + /// Whether message is silent or not + /// [JsonPropertyName("silent")] public bool? Silent { get; set; } + /// + /// Contains type of the message. One of: regular, system + /// [JsonPropertyName("type")] public string? Type { get; set; } + /// + /// Array of message attachments + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// List of mentioned users + /// [JsonPropertyName("mentioned_users")] public List MentionedUsers { get; set; } } @@ -6299,6 +8902,9 @@ public class EndCallRequest public class EndCallResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -6331,20 +8937,59 @@ public class EnrichedActivity public Data? Target { get; set; } } + public class EnrichedCollection + { + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } + [JsonPropertyName("name")] + public string Name { get; set; } + [JsonPropertyName("status")] + public string Status { get; set; } + [JsonPropertyName("updated_at")] + public DateTime UpdatedAt { get; set; } + [JsonPropertyName("user_id")] + public string UserID { get; set; } + [JsonPropertyName("custom")] + public object Custom { get; set; } + } + public class EnrichedCollectionResponse { + /// + /// Unique identifier for the collection within its name + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Name/type of the collection + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Enrichment status of the collection. One of: ok, notfound + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// When the collection was created + /// [JsonPropertyName("created_at")] public DateTime? CreatedAt { get; set; } + /// + /// When the collection was last updated + /// [JsonPropertyName("updated_at")] public DateTime? UpdatedAt { get; set; } + /// + /// ID of the user who owns this collection + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Custom data for the collection + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -6381,54 +9026,122 @@ public class EnrichedReaction public class EnrichmentOptions { + /// + /// Default: false. When true, includes fetching and enriching own_followings (follows where activity author's feeds follow current user's feeds). + /// [JsonPropertyName("enrich_own_followings")] public bool? EnrichOwnFollowings { get; set; } + /// + /// Default: false. When true, includes score_vars in activity responses containing variable values used at ranking time. + /// + [JsonPropertyName("include_score_vars")] + public bool? IncludeScoreVars { get; set; } + /// + /// Default: false. When true, skips all activity enrichments. + /// [JsonPropertyName("skip_activity")] public bool? SkipActivity { get; set; } + /// + /// Default: false. When true, skips enriching collections on activities. + /// [JsonPropertyName("skip_activity_collections")] public bool? SkipActivityCollections { get; set; } + /// + /// Default: false. When true, skips enriching comments on activities. + /// [JsonPropertyName("skip_activity_comments")] public bool? SkipActivityComments { get; set; } + /// + /// Default: false. When true, skips enriching current_feed on activities. Note: CurrentFeed is still computed for permission checks, but enrichment is skipped. + /// [JsonPropertyName("skip_activity_current_feed")] public bool? SkipActivityCurrentFeed { get; set; } + /// + /// Default: false. When true, skips enriching mentioned users on activities. + /// [JsonPropertyName("skip_activity_mentioned_users")] public bool? SkipActivityMentionedUsers { get; set; } + /// + /// Default: false. When true, skips enriching own bookmarks on activities. + /// [JsonPropertyName("skip_activity_own_bookmarks")] public bool? SkipActivityOwnBookmarks { get; set; } + /// + /// Default: false. When true, skips enriching parent activities. + /// [JsonPropertyName("skip_activity_parents")] public bool? SkipActivityParents { get; set; } + /// + /// Default: false. When true, skips enriching poll data on activities. + /// [JsonPropertyName("skip_activity_poll")] public bool? SkipActivityPoll { get; set; } + /// + /// Default: false. When true, skips fetching and enriching latest and own reactions on activities. Note: If reactions are already denormalized in the database, they will still be included. + /// [JsonPropertyName("skip_activity_reactions")] public bool? SkipActivityReactions { get; set; } + /// + /// Default: false. When true, skips refreshing image URLs on activities. + /// [JsonPropertyName("skip_activity_refresh_image_urls")] public bool? SkipActivityRefreshImageUrls { get; set; } + /// + /// Default: false. When true, skips all enrichments. + /// [JsonPropertyName("skip_all")] public bool? SkipAll { get; set; } + /// + /// Default: false. When true, skips enriching user data on feed members. + /// [JsonPropertyName("skip_feed_member_user")] public bool? SkipFeedMemberUser { get; set; } + /// + /// Default: false. When true, skips fetching and enriching followers. Note: If followers_pagination is explicitly provided, followers will be fetched regardless of this setting. + /// [JsonPropertyName("skip_followers")] public bool? SkipFollowers { get; set; } + /// + /// Default: false. When true, skips fetching and enriching following. Note: If following_pagination is explicitly provided, following will be fetched regardless of this setting. + /// [JsonPropertyName("skip_following")] public bool? SkipFollowing { get; set; } + /// + /// Default: false. When true, skips computing and including capabilities for feeds. + /// [JsonPropertyName("skip_own_capabilities")] public bool? SkipOwnCapabilities { get; set; } + /// + /// Default: false. When true, skips fetching and enriching own_follows (follows where user's feeds follow target feeds). + /// [JsonPropertyName("skip_own_follows")] public bool? SkipOwnFollows { get; set; } + /// + /// Default: false. When true, skips enriching pinned activities. + /// [JsonPropertyName("skip_pins")] public bool? SkipPins { get; set; } } public class EntityCreatorResponse { + /// + /// Number of minor actions performed on the user + /// [JsonPropertyName("ban_count")] public int BanCount { get; set; } [JsonPropertyName("banned")] public bool Banned { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Number of major actions performed on the user + /// [JsonPropertyName("deleted_content_count")] public int DeletedContentCount { get; set; } + /// + /// Number of flag actions performed on the user + /// [JsonPropertyName("flagged_count")] public int FlaggedCount { get; set; } [JsonPropertyName("id")] @@ -6487,6 +9200,35 @@ public class ErrorResult public string? Version { get; set; } } + public class EscalatePayload + { + /// + /// Additional context for the reviewer + /// + [JsonPropertyName("notes")] + public string? Notes { get; set; } + /// + /// Priority of the escalation (low, medium, high) + /// + [JsonPropertyName("priority")] + public string? Priority { get; set; } + /// + /// Reason for the escalation (from configured escalation_reasons) + /// + [JsonPropertyName("reason")] + public string? Reason { get; set; } + } + + public class EscalationMetadata + { + [JsonPropertyName("notes")] + public string? Notes { get; set; } + [JsonPropertyName("priority")] + public string? Priority { get; set; } + [JsonPropertyName("reason")] + public string? Reason { get; set; } + } + public class EventHook { [JsonPropertyName("created_at")] @@ -6585,6 +9327,9 @@ public class EventRequest public class EventResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("event")] @@ -6593,24 +9338,45 @@ public class EventResponse public class ExportChannelsRequest { + /// + /// Export options for channels + /// [JsonPropertyName("channels")] public List Channels { get; set; } + /// + /// Set if deleted message text should be cleared + /// [JsonPropertyName("clear_deleted_message_text")] public bool? ClearDeletedMessageText { get; set; } [JsonPropertyName("export_users")] public bool? ExportUsers { get; set; } + /// + /// Set if you want to include deleted channels + /// [JsonPropertyName("include_soft_deleted_channels")] public bool? IncludeSoftDeletedChannels { get; set; } + /// + /// Set if you want to include truncated messages + /// [JsonPropertyName("include_truncated_messages")] public bool? IncludeTruncatedMessages { get; set; } + /// + /// Export version + /// [JsonPropertyName("version")] public string? Version { get; set; } } public class ExportChannelsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// ID of the task to export channels + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } } @@ -6623,16 +9389,28 @@ public class ExportFeedUserDataResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// The task ID for the export task + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } } public class ExportUserResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of exported messages + /// [JsonPropertyName("messages")] public List Messages { get; set; } + /// + /// List of exported reactions + /// [JsonPropertyName("reactions")] public List Reactions { get; set; } [JsonPropertyName("user")] @@ -6647,6 +9425,9 @@ public class ExportUsersRequest public class ExportUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("task_id")] @@ -6687,6 +9468,9 @@ public class FailedChannelUpdates public class FeedCreatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -6699,6 +9483,9 @@ public class FeedCreatedEvent public FeedResponse Feed { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "feeds.feed.created" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6709,12 +9496,18 @@ public class FeedCreatedEvent public class FeedDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] public string Fid { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.feed.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6763,12 +9556,18 @@ public class FeedGroup public class FeedGroupChangedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] public string Fid { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.feed_group.changed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6783,14 +9582,23 @@ public class FeedGroupChangedEvent public class FeedGroupDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] public string Fid { get; set; } + /// + /// The ID of the feed group that was deleted + /// [JsonPropertyName("group_id")] public string GroupID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.feed_group.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6801,22 +9609,43 @@ public class FeedGroupDeletedEvent public class FeedGroupResponse { + /// + /// When the feed group was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Identifier within the group + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// When the feed group was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Default visibility for activities. One of: public, visible, followers, members, private + /// [JsonPropertyName("default_visibility")] public string? DefaultVisibility { get; set; } [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// Configuration for activity processors + /// [JsonPropertyName("activity_processors")] public List ActivityProcessors { get; set; } + /// + /// Configuration for activity selectors + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] public AggregationConfig? Aggregation { get; set; } + /// + /// Custom data for the feed group + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("notification")] @@ -6831,14 +9660,23 @@ public class FeedGroupResponse public class FeedGroupRestoredEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] public string Fid { get; set; } + /// + /// The ID of the feed group that was restored + /// [JsonPropertyName("group_id")] public string GroupID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.feed_group.restored" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6865,6 +9703,9 @@ public class FeedInput public class FeedMemberAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -6873,6 +9714,9 @@ public class FeedMemberAddedEvent public object Custom { get; set; } [JsonPropertyName("member")] public FeedMemberResponse Member { get; set; } + /// + /// The type of event: "feeds.feed_member.added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6885,6 +9729,9 @@ public class FeedMemberAddedEvent public class FeedMemberRemovedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -6893,6 +9740,9 @@ public class FeedMemberRemovedEvent public string MemberID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.feed_member.removed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6905,34 +9755,70 @@ public class FeedMemberRemovedEvent public class FeedMemberRequest { + /// + /// ID of the user to add as a member + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Whether this is an invite to become a member + /// [JsonPropertyName("invite")] public bool? Invite { get; set; } + /// + /// ID of the membership level to assign to the member + /// [JsonPropertyName("membership_level")] public string? MembershipLevel { get; set; } + /// + /// Role of the member in the feed + /// [JsonPropertyName("role")] public string? Role { get; set; } + /// + /// Custom data for the member + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class FeedMemberResponse { + /// + /// When the membership was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Role of the member in the feed + /// [JsonPropertyName("role")] public string Role { get; set; } + /// + /// Status of the membership. One of: member, pending, rejected + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// When the membership was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// When the invite was accepted + /// [JsonPropertyName("invite_accepted_at")] public DateTime? InviteAcceptedAt { get; set; } + /// + /// When the invite was rejected + /// [JsonPropertyName("invite_rejected_at")] public DateTime? InviteRejectedAt { get; set; } + /// + /// Custom data for the membership + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("membership_level")] @@ -6941,6 +9827,9 @@ public class FeedMemberResponse public class FeedMemberUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -6949,6 +9838,9 @@ public class FeedMemberUpdatedEvent public object Custom { get; set; } [JsonPropertyName("member")] public FeedMemberResponse Member { get; set; } + /// + /// The type of event: "feeds.feed_member.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -6965,10 +9857,19 @@ public class FeedOwnCapability public class FeedOwnData { + /// + /// Capabilities the current user has for this feed + /// [JsonPropertyName("own_capabilities")] public List OwnCapabilities { get; set; } + /// + /// Follow relationships where the feed owner's feeds are following the current user's feeds (up to 5 total) + /// [JsonPropertyName("own_followings")] public List OwnFollowings { get; set; } + /// + /// Follow relationships where the current user's feeds are following this feed + /// [JsonPropertyName("own_follows")] public List OwnFollows { get; set; } [JsonPropertyName("own_membership")] @@ -6977,22 +9878,49 @@ public class FeedOwnData public class FeedRequest { + /// + /// ID of the feed group + /// [JsonPropertyName("feed_group_id")] public string FeedGroupID { get; set; } + /// + /// ID of the feed + /// [JsonPropertyName("feed_id")] public string FeedID { get; set; } + /// + /// ID of the feed creator + /// [JsonPropertyName("created_by_id")] public string? CreatedByID { get; set; } + /// + /// Description of the feed + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// Name of the feed + /// [JsonPropertyName("name")] public string? Name { get; set; } + /// + /// Visibility setting for the feed. One of: public, visible, followers, members, private + /// [JsonPropertyName("visibility")] public string? Visibility { get; set; } + /// + /// Tags used for filtering feeds + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Initial members for the feed + /// [JsonPropertyName("members")] public List Members { get; set; } + /// + /// Custom data for the feed + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -7001,42 +9929,96 @@ public class FeedResponse { [JsonPropertyName("activity_count")] public int ActivityCount { get; set; } + /// + /// When the feed was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Description of the feed + /// [JsonPropertyName("description")] public string Description { get; set; } + /// + /// Fully qualified feed ID (group_id:id) + /// [JsonPropertyName("feed")] public string Feed { get; set; } + /// + /// Number of followers of this feed + /// [JsonPropertyName("follower_count")] public int FollowerCount { get; set; } + /// + /// Number of feeds this feed follows + /// [JsonPropertyName("following_count")] public int FollowingCount { get; set; } + /// + /// Group this feed belongs to + /// [JsonPropertyName("group_id")] public string GroupID { get; set; } + /// + /// Unique identifier for the feed + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Number of members in this feed + /// [JsonPropertyName("member_count")] public int MemberCount { get; set; } + /// + /// Name of the feed + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Number of pinned activities in this feed + /// [JsonPropertyName("pin_count")] public int PinCount { get; set; } + /// + /// When the feed was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("created_by")] public UserResponse CreatedBy { get; set; } + /// + /// When the feed was deleted + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// Visibility setting for the feed + /// [JsonPropertyName("visibility")] public string? Visibility { get; set; } + /// + /// Tags used for filtering feeds + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Capabilities the current user has for this feed + /// [JsonPropertyName("own_capabilities")] public List OwnCapabilities { get; set; } + /// + /// Follow relationships where the feed owner’s feeds are following the current user's feeds + /// [JsonPropertyName("own_followings")] public List OwnFollowings { get; set; } + /// + /// Follow relationships where the current user's feeds are following this feed + /// [JsonPropertyName("own_follows")] public List OwnFollows { get; set; } + /// + /// Custom data for the feed + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("own_membership")] @@ -7047,48 +10029,102 @@ public class FeedSuggestionResponse { [JsonPropertyName("activity_count")] public int ActivityCount { get; set; } + /// + /// When the feed was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Description of the feed + /// [JsonPropertyName("description")] public string Description { get; set; } + /// + /// Fully qualified feed ID (group_id:id) + /// [JsonPropertyName("feed")] public string Feed { get; set; } + /// + /// Number of followers of this feed + /// [JsonPropertyName("follower_count")] public int FollowerCount { get; set; } + /// + /// Number of feeds this feed follows + /// [JsonPropertyName("following_count")] public int FollowingCount { get; set; } + /// + /// Group this feed belongs to + /// [JsonPropertyName("group_id")] public string GroupID { get; set; } + /// + /// Unique identifier for the feed + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Number of members in this feed + /// [JsonPropertyName("member_count")] public int MemberCount { get; set; } + /// + /// Name of the feed + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Number of pinned activities in this feed + /// [JsonPropertyName("pin_count")] public int PinCount { get; set; } + /// + /// When the feed was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("created_by")] public UserResponse CreatedBy { get; set; } + /// + /// When the feed was deleted + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } [JsonPropertyName("reason")] public string? Reason { get; set; } [JsonPropertyName("recommendation_score")] public double? RecommendationScore { get; set; } + /// + /// Visibility setting for the feed + /// [JsonPropertyName("visibility")] public string? Visibility { get; set; } + /// + /// Tags used for filtering feeds + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Capabilities the current user has for this feed + /// [JsonPropertyName("own_capabilities")] public List OwnCapabilities { get; set; } + /// + /// Follow relationships where the feed owner’s feeds are following the current user's feeds + /// [JsonPropertyName("own_followings")] public List OwnFollowings { get; set; } + /// + /// Follow relationships where the current user's feeds are following this feed + /// [JsonPropertyName("own_follows")] public List OwnFollows { get; set; } [JsonPropertyName("algorithm_scores")] public Dictionary AlgorithmScores { get; set; } + /// + /// Custom data for the feed + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("own_membership")] @@ -7105,6 +10141,9 @@ public class FeedUpdatedEvent public object Custom { get; set; } [JsonPropertyName("feed")] public FeedResponse Feed { get; set; } + /// + /// The type of event: "feeds.feed.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -7117,10 +10156,19 @@ public class FeedUpdatedEvent public class FeedViewResponse { + /// + /// Unique identifier for the custom feed view + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// When the feed view was last used + /// [JsonPropertyName("last_used_at")] public DateTime? LastUsedAt { get; set; } + /// + /// Configured activity selectors + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] @@ -7131,36 +10179,77 @@ public class FeedViewResponse public class FeedVisibilityResponse { + /// + /// Name of the feed visibility level + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// List of permission policies + /// [JsonPropertyName("permissions")] public List Permissions { get; set; } + /// + /// Permission grants for each role + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } } public class FeedsModerationTemplateConfigPayload { + /// + /// Map of data type names to their content types + /// [JsonPropertyName("data_types")] public Dictionary DataTypes { get; set; } + /// + /// Key of the moderation configuration to use + /// [JsonPropertyName("config_key")] public string? ConfigKey { get; set; } } public class FeedsPreferences { + /// + /// Push notification preference for comments on user's activities. One of: all, none + /// [JsonPropertyName("comment")] public string? Comment { get; set; } + /// + /// Push notification preference for mentions in comments. One of: all, none + /// + [JsonPropertyName("comment_mention")] + public string? CommentMention { get; set; } + /// + /// Push notification preference for reactions on comments. One of: all, none + /// [JsonPropertyName("comment_reaction")] public string? CommentReaction { get; set; } + /// + /// Push notification preference for replies to comments. One of: all, none + /// [JsonPropertyName("comment_reply")] public string? CommentReply { get; set; } + /// + /// Push notification preference for new followers. One of: all, none + /// [JsonPropertyName("follow")] public string? Follow { get; set; } + /// + /// Push notification preference for mentions in activities. One of: all, none + /// [JsonPropertyName("mention")] public string? Mention { get; set; } + /// + /// Push notification preference for reactions on user's activities or comments. One of: all, none + /// [JsonPropertyName("reaction")] public string? Reaction { get; set; } + /// + /// Push notification preferences for custom activity types. Map of activity type to preference (all or none) + /// [JsonPropertyName("custom_activity_types")] public Dictionary CustomActivityTypes { get; set; } } @@ -7169,6 +10258,8 @@ public class FeedsPreferencesResponse { [JsonPropertyName("comment")] public string? Comment { get; set; } + [JsonPropertyName("comment_mention")] + public string? CommentMention { get; set; } [JsonPropertyName("comment_reaction")] public string? CommentReaction { get; set; } [JsonPropertyName("comment_reply")] @@ -7183,32 +10274,195 @@ public class FeedsPreferencesResponse public Dictionary CustomActivityTypes { get; set; } } + public class FeedsReactionGroup + { + [JsonPropertyName("count")] + public int Count { get; set; } + [JsonPropertyName("first_reaction_at")] + public DateTime FirstReactionAt { get; set; } + [JsonPropertyName("last_reaction_at")] + public DateTime LastReactionAt { get; set; } + } + public class FeedsReactionGroupResponse { + /// + /// Number of reactions in this group + /// [JsonPropertyName("count")] public int Count { get; set; } + /// + /// Time of the first reaction + /// [JsonPropertyName("first_reaction_at")] public DateTime FirstReactionAt { get; set; } + /// + /// Time of the most recent reaction + /// [JsonPropertyName("last_reaction_at")] public DateTime LastReactionAt { get; set; } } public class FeedsReactionResponse { + /// + /// ID of the activity that was reacted to + /// [JsonPropertyName("activity_id")] public string ActivityID { get; set; } + /// + /// When the reaction was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Type of reaction + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// When the reaction was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// ID of the comment that was reacted to + /// [JsonPropertyName("comment_id")] public string? CommentID { get; set; } + /// + /// Custom data for the reaction + /// + [JsonPropertyName("custom")] + public object Custom { get; set; } + } + + public class FeedsV3ActivityResponse + { + [JsonPropertyName("bookmark_count")] + public int BookmarkCount { get; set; } + [JsonPropertyName("comment_count")] + public int CommentCount { get; set; } + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + [JsonPropertyName("hidden")] + public bool Hidden { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } + [JsonPropertyName("popularity")] + public int Popularity { get; set; } + [JsonPropertyName("preview")] + public bool Preview { get; set; } + [JsonPropertyName("reaction_count")] + public int ReactionCount { get; set; } + [JsonPropertyName("restrict_replies")] + public string RestrictReplies { get; set; } + [JsonPropertyName("score")] + public double Score { get; set; } + [JsonPropertyName("share_count")] + public int ShareCount { get; set; } + [JsonPropertyName("type")] + public string Type { get; set; } + [JsonPropertyName("updated_at")] + public DateTime UpdatedAt { get; set; } + [JsonPropertyName("visibility")] + public string Visibility { get; set; } + [JsonPropertyName("attachments")] + public List Attachments { get; set; } + [JsonPropertyName("comments")] + public List Comments { get; set; } + [JsonPropertyName("feeds")] + public List Feeds { get; set; } + [JsonPropertyName("filter_tags")] + public List FilterTags { get; set; } + [JsonPropertyName("interest_tags")] + public List InterestTags { get; set; } + [JsonPropertyName("latest_reactions")] + public List LatestReactions { get; set; } + [JsonPropertyName("mentioned_users")] + public List MentionedUsers { get; set; } + [JsonPropertyName("own_bookmarks")] + public List OwnBookmarks { get; set; } + [JsonPropertyName("own_reactions")] + public List OwnReactions { get; set; } + [JsonPropertyName("collections")] + public Dictionary Collections { get; set; } + [JsonPropertyName("custom")] + public object Custom { get; set; } + [JsonPropertyName("reaction_groups")] + public Dictionary ReactionGroups { get; set; } + [JsonPropertyName("search_data")] + public object SearchData { get; set; } + [JsonPropertyName("user")] + public UserResponse User { get; set; } + [JsonPropertyName("deleted_at")] + public DateTime? DeletedAt { get; set; } + [JsonPropertyName("edited_at")] + public DateTime? EditedAt { get; set; } + [JsonPropertyName("expires_at")] + public DateTime? ExpiresAt { get; set; } + [JsonPropertyName("moderation_action")] + public string? ModerationAction { get; set; } + [JsonPropertyName("text")] + public string? Text { get; set; } + [JsonPropertyName("visibility_tag")] + public string? VisibilityTag { get; set; } + [JsonPropertyName("metrics")] + public Dictionary Metrics { get; set; } + [JsonPropertyName("moderation")] + public ModerationV2Response? Moderation { get; set; } + } + + public class FeedsV3CommentResponse + { + [JsonPropertyName("confidence_score")] + public double ConfidenceScore { get; set; } + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + [JsonPropertyName("downvote_count")] + public int DownvoteCount { get; set; } + [JsonPropertyName("id")] + public string ID { get; set; } + [JsonPropertyName("object_id")] + public string ObjectID { get; set; } + [JsonPropertyName("object_type")] + public string ObjectType { get; set; } + [JsonPropertyName("reaction_count")] + public int ReactionCount { get; set; } + [JsonPropertyName("reply_count")] + public int ReplyCount { get; set; } + [JsonPropertyName("score")] + public int Score { get; set; } + [JsonPropertyName("status")] + public string Status { get; set; } + [JsonPropertyName("updated_at")] + public DateTime UpdatedAt { get; set; } + [JsonPropertyName("upvote_count")] + public int UpvoteCount { get; set; } + [JsonPropertyName("mentioned_users")] + public List MentionedUsers { get; set; } + [JsonPropertyName("own_reactions")] + public List OwnReactions { get; set; } + [JsonPropertyName("user")] + public UserResponse User { get; set; } + [JsonPropertyName("controversy_score")] + public double? ControversyScore { get; set; } + [JsonPropertyName("deleted_at")] + public DateTime? DeletedAt { get; set; } + [JsonPropertyName("edited_at")] + public DateTime? EditedAt { get; set; } + [JsonPropertyName("parent_id")] + public string? ParentID { get; set; } + [JsonPropertyName("text")] + public string? Text { get; set; } + [JsonPropertyName("attachments")] + public List Attachments { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + [JsonPropertyName("moderation")] + public ModerationV2Response? Moderation { get; set; } } public class Field @@ -7237,6 +10491,9 @@ public class FileUploadConfig public class FileUploadRequest { + /// + /// file field + /// [JsonPropertyName("file")] public string? File { get; set; } [JsonPropertyName("user")] @@ -7245,10 +10502,19 @@ public class FileUploadRequest public class FileUploadResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// URL to the uploaded asset. Should be used to put to `asset_url` attachment field + /// [JsonPropertyName("file")] public string? File { get; set; } + /// + /// URL of the file thumbnail for supported file formats. Should be put to `thumb_url` attachment field + /// [JsonPropertyName("thumb_url")] public string? ThumbUrl { get; set; } } @@ -7335,16 +10601,31 @@ public class FlagMessageDetailsResponse public class FlagRequest { + /// + /// Unique identifier of the entity being flagged + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// Type of entity being flagged (e.g., message, user) + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } + /// + /// ID of the user who created the flagged entity + /// [JsonPropertyName("entity_creator_id")] public string? EntityCreatorID { get; set; } + /// + /// Optional explanation for why the content is being flagged + /// [JsonPropertyName("reason")] public string? Reason { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Additional metadata about the flag + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("moderation_payload")] @@ -7357,6 +10638,9 @@ public class FlagResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Unique identifier of the created moderation item + /// [JsonPropertyName("item_id")] public string ItemID { get; set; } } @@ -7387,8 +10671,14 @@ public class FlagUserOptions public class FollowBatchRequest { + /// + /// List of follow relationships to create + /// [JsonPropertyName("follows")] public List Follows { get; set; } + /// + /// If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } } @@ -7397,14 +10687,23 @@ public class FollowBatchResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of newly created follow relationships + /// [JsonPropertyName("created")] public List Created { get; set; } + /// + /// List of current follow relationships + /// [JsonPropertyName("follows")] public List Follows { get; set; } } public class FollowCreatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -7413,6 +10712,9 @@ public class FollowCreatedEvent public object Custom { get; set; } [JsonPropertyName("follow")] public FollowResponse Follow { get; set; } + /// + /// The type of event: "feeds.follow.created" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -7423,6 +10725,9 @@ public class FollowCreatedEvent public class FollowDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -7431,6 +10736,9 @@ public class FollowDeletedEvent public object Custom { get; set; } [JsonPropertyName("follow")] public FollowResponse Follow { get; set; } + /// + /// The type of event: "feeds.follow.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -7439,62 +10747,110 @@ public class FollowDeletedEvent public DateTime? ReceivedAt { get; set; } } - public class FollowPair - { - [JsonPropertyName("source")] - public string Source { get; set; } - [JsonPropertyName("target")] - public string Target { get; set; } - } - public class FollowRequest { + /// + /// Fully qualified ID of the source feed + /// [JsonPropertyName("source")] public string Source { get; set; } + /// + /// Fully qualified ID of the target feed + /// [JsonPropertyName("target")] public string Target { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to create a notification activity for this follow + /// [JsonPropertyName("create_notification_activity")] public bool? CreateNotificationActivity { get; set; } + /// + /// If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } + /// + /// Push preference for the follow relationship + /// [JsonPropertyName("push_preference")] public string? PushPreference { get; set; } + /// + /// Whether to skip push for this follow + /// [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } + /// + /// Status of the follow relationship. One of: accepted, pending, rejected + /// [JsonPropertyName("status")] public string? Status { get; set; } + /// + /// Custom data for the follow relationship + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class FollowResponse { + /// + /// When the follow relationship was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Role of the follower (source user) in the follow relationship + /// [JsonPropertyName("follower_role")] public string FollowerRole { get; set; } + /// + /// Push preference for notifications. One of: all, none + /// [JsonPropertyName("push_preference")] public string PushPreference { get; set; } + /// + /// Status of the follow relationship. One of: accepted, pending, rejected + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// When the follow relationship was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("source_feed")] public FeedResponse SourceFeed { get; set; } [JsonPropertyName("target_feed")] public FeedResponse TargetFeed { get; set; } + /// + /// When the follow request was accepted + /// [JsonPropertyName("request_accepted_at")] public DateTime? RequestAcceptedAt { get; set; } + /// + /// When the follow request was rejected + /// [JsonPropertyName("request_rejected_at")] public DateTime? RequestRejectedAt { get; set; } + /// + /// Custom data for the follow relationship + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class FollowUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("fid")] @@ -7503,6 +10859,9 @@ public class FollowUpdatedEvent public object Custom { get; set; } [JsonPropertyName("follow")] public FollowResponse Follow { get; set; } + /// + /// The type of event: "feeds.follow.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] @@ -7549,10 +10908,19 @@ public class FrameRecordingSettingsResponse public class FriendReactionsOptions { + /// + /// Default: false. When true, fetches friend reactions for activities. + /// [JsonPropertyName("enabled")] public bool? Enabled { get; set; } + /// + /// Default: 3, Max: 10. The maximum number of friend reactions to return per activity. + /// [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Default: 'following'. The type of friend relationship to use. 'following' = users you follow, 'mutual' = users with mutual follows. One of: following, mutual + /// [JsonPropertyName("type")] public string? Type { get; set; } } @@ -7671,8 +11039,14 @@ public class GetActiveCallsStatusResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// End time of the status period + /// [JsonPropertyName("end_time")] public DateTime EndTime { get; set; } + /// + /// Start time of the status period + /// [JsonPropertyName("start_time")] public DateTime StartTime { get; set; } [JsonPropertyName("metrics")] @@ -7699,6 +11073,9 @@ public class GetAppealResponse public class GetApplicationResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("app")] @@ -7715,14 +11092,23 @@ public class GetBlockListResponse public class GetBlockedUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Array of blocked user object + /// [JsonPropertyName("blocks")] public List Blocks { get; set; } } public class GetCallParticipantSessionMetricsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("is_publisher")] @@ -7745,6 +11131,9 @@ public class GetCallParticipantSessionMetricsResponse public class GetCallReportResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("session_id")] @@ -7779,6 +11168,9 @@ public class GetCallSessionParticipantStatsDetailsResponse public string CallSessionID { get; set; } [JsonPropertyName("call_type")] public string CallType { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("user_id")] @@ -7817,6 +11209,9 @@ public class GetCallTypeResponse public class GetCampaignResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("campaign")] @@ -7841,6 +11236,9 @@ public class GetChannelTypeResponse public bool CustomEvents { get; set; } [JsonPropertyName("delivery_events")] public bool DeliveryEvents { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("mark_messages_pending")] @@ -7929,8 +11327,14 @@ public class GetCommentRepliesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Sort order used for the replies (first, last, top, best, controversial) + /// [JsonPropertyName("sort")] public string Sort { get; set; } + /// + /// Threaded listing of replies to the comment + /// [JsonPropertyName("comments")] public List Comments { get; set; } [JsonPropertyName("next")] @@ -7951,8 +11355,14 @@ public class GetCommentsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Sort order used for the comments (first, last, top, best, controversial) + /// [JsonPropertyName("sort")] public string Sort { get; set; } + /// + /// Threaded listing for the activity + /// [JsonPropertyName("comments")] public List Comments { get; set; } [JsonPropertyName("next")] @@ -7971,6 +11381,9 @@ public class GetConfigResponse public class GetCustomPermissionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("permission")] @@ -7979,6 +11392,9 @@ public class GetCustomPermissionResponse public class GetDraftResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("draft")] @@ -7987,12 +11403,44 @@ public class GetDraftResponse public class GetEdgesResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("edges")] public List Edges { get; set; } } + public class GetExternalStorageAWSS3Response + { + [JsonPropertyName("bucket")] + public string Bucket { get; set; } + [JsonPropertyName("region")] + public string Region { get; set; } + [JsonPropertyName("role_arn")] + public string RoleArn { get; set; } + [JsonPropertyName("path_prefix")] + public string? PathPrefix { get; set; } + } + + public class GetExternalStorageResponse + { + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + /// + /// Duration of the request in milliseconds + /// + [JsonPropertyName("duration")] + public string Duration { get; set; } + [JsonPropertyName("type")] + public string Type { get; set; } + [JsonPropertyName("updated_at")] + public DateTime UpdatedAt { get; set; } + [JsonPropertyName("aws_s3")] + public GetExternalStorageAWSS3Response? AWSS3 { get; set; } + } + public class GetFeedGroupResponse { [JsonPropertyName("duration")] @@ -8021,20 +11469,60 @@ public class GetFeedsRateLimitsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Rate limits for Android platform (endpoint name -> limit info) + /// [JsonPropertyName("android")] public Dictionary Android { get; set; } + /// + /// Rate limits for iOS platform (endpoint name -> limit info) + /// [JsonPropertyName("ios")] public Dictionary Ios { get; set; } + /// + /// Rate limits for server-side platform (endpoint name -> limit info) + /// [JsonPropertyName("server_side")] public Dictionary ServerSide { get; set; } + /// + /// Rate limits for Web platform (endpoint name -> limit info) + /// [JsonPropertyName("web")] public Dictionary Web { get; set; } } + public class GetFlagCountRequest + { + /// + /// ID of the user whose content was flagged + /// + [JsonPropertyName("entity_creator_id")] + public string EntityCreatorID { get; set; } + /// + /// Optional entity type filter (e.g., stream:chat:v1:message, stream:user) + /// + [JsonPropertyName("entity_type")] + public string? EntityType { get; set; } + } + + public class GetFlagCountResponse + { + /// + /// Total number of flags against the specified user's content + /// + [JsonPropertyName("count")] + public int Count { get; set; } + [JsonPropertyName("duration")] + public string Duration { get; set; } + } + public class GetFollowSuggestionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of suggested feeds to follow + /// [JsonPropertyName("suggestions")] public List Suggestions { get; set; } [JsonPropertyName("algorithm_used")] @@ -8043,6 +11531,9 @@ public class GetFollowSuggestionsResponse public class GetImportResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("import_task")] @@ -8055,6 +11546,9 @@ public class GetImportV2TaskResponse public int AppPk { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("id")] @@ -8073,12 +11567,18 @@ public class GetManyMessagesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of messages + /// [JsonPropertyName("messages")] public List Messages { get; set; } } public class GetMessageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] @@ -8089,6 +11589,9 @@ public class GetMessageResponse public class GetModerationRuleResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("rule")] @@ -8101,12 +11604,21 @@ public class GetOGResponse public string Duration { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// URL of detected video or audio + /// [JsonPropertyName("asset_url")] public string? AssetUrl { get; set; } [JsonPropertyName("author_icon")] public string? AuthorIcon { get; set; } + /// + /// og:site + /// [JsonPropertyName("author_link")] public string? AuthorLink { get; set; } + /// + /// og:site_name + /// [JsonPropertyName("author_name")] public string? AuthorName { get; set; } [JsonPropertyName("color")] @@ -8117,8 +11629,14 @@ public class GetOGResponse public string? Footer { get; set; } [JsonPropertyName("footer_icon")] public string? FooterIcon { get; set; } + /// + /// URL of detected image + /// [JsonPropertyName("image_url")] public string? ImageUrl { get; set; } + /// + /// extracted url from the text + /// [JsonPropertyName("og_scrape_url")] public string? OGScrapeUrl { get; set; } [JsonPropertyName("original_height")] @@ -8127,14 +11645,29 @@ public class GetOGResponse public int? OriginalWidth { get; set; } [JsonPropertyName("pretext")] public string? Pretext { get; set; } + /// + /// og:description + /// [JsonPropertyName("text")] public string? Text { get; set; } + /// + /// URL of detected thumb image + /// [JsonPropertyName("thumb_url")] public string? ThumbUrl { get; set; } + /// + /// og:title + /// [JsonPropertyName("title")] public string? Title { get; set; } + /// + /// og:url + /// [JsonPropertyName("title_link")] public string? TitleLink { get; set; } + /// + /// Attachment type, could be empty, image, audio or video + /// [JsonPropertyName("type")] public string? Type { get; set; } [JsonPropertyName("actions")] @@ -8149,8 +11682,14 @@ public class GetOrCreateCallRequest { [JsonPropertyName("members_limit")] public int? MembersLimit { get; set; } + /// + /// if provided it sends a notification event to the members for this call + /// [JsonPropertyName("notify")] public bool? Notify { get; set; } + /// + /// if provided it sends a ring event to the members for this call + /// [JsonPropertyName("ring")] public bool? Ring { get; set; } [JsonPropertyName("video")] @@ -8175,14 +11714,26 @@ public class GetOrCreateCallResponse public class GetOrCreateFeedGroupRequest { + /// + /// Default visibility for the feed group, can be 'public', 'visible', 'followers', 'members', or 'private'. Defaults to 'visible' if not provided. + /// [JsonPropertyName("default_visibility")] public string? DefaultVisibility { get; set; } + /// + /// Configuration for activity processors + /// [JsonPropertyName("activity_processors")] public List ActivityProcessors { get; set; } + /// + /// Configuration for activity selectors + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] public AggregationConfig? Aggregation { get; set; } + /// + /// Custom data for the feed group + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("notification")] @@ -8199,6 +11750,9 @@ public class GetOrCreateFeedGroupResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Indicates whether the feed group was created (true) or already existed (false) + /// [JsonPropertyName("was_created")] public bool WasCreated { get; set; } [JsonPropertyName("feed_group")] @@ -8247,6 +11801,9 @@ public class GetOrCreateFeedResponse { [JsonPropertyName("created")] public bool Created { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("activities")] @@ -8279,6 +11836,9 @@ public class GetOrCreateFeedResponse public class GetOrCreateFeedViewRequest { + /// + /// Configuration for selecting activities + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] @@ -8291,6 +11851,9 @@ public class GetOrCreateFeedViewResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Indicates whether the feed view was newly created (true) or already existed (false) + /// [JsonPropertyName("was_created")] public bool WasCreated { get; set; } [JsonPropertyName("feed_view")] @@ -8299,6 +11862,9 @@ public class GetOrCreateFeedViewResponse public class GetPushTemplatesResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("templates")] @@ -8309,12 +11875,24 @@ public class GetRateLimitsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Map of endpoint rate limits for the Android platform + /// [JsonPropertyName("android")] public Dictionary Android { get; set; } + /// + /// Map of endpoint rate limits for the iOS platform + /// [JsonPropertyName("ios")] public Dictionary Ios { get; set; } + /// + /// Map of endpoint rate limits for the server-side platform + /// [JsonPropertyName("server_side")] public Dictionary ServerSide { get; set; } + /// + /// Map of endpoint rate limits for the web platform + /// [JsonPropertyName("web")] public Dictionary Web { get; set; } } @@ -8323,12 +11901,18 @@ public class GetReactionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of reactions + /// [JsonPropertyName("reactions")] public List Reactions { get; set; } } public class GetRepliesResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("messages")] @@ -8337,18 +11921,48 @@ public class GetRepliesResponse public class GetRetentionPolicyResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("policies")] public List Policies { get; set; } } + public class GetRetentionPolicyRunsRequest + { + [JsonPropertyName("limit")] + public int? Limit { get; set; } + [JsonPropertyName("next")] + public string? Next { get; set; } + [JsonPropertyName("prev")] + public string? Prev { get; set; } + /// + /// Array of sort parameters + /// + [JsonPropertyName("sort")] + public List Sort { get; set; } + /// + /// Filter conditions to apply to the query + /// + [JsonPropertyName("filter_conditions")] + public object FilterConditions { get; set; } + } + public class GetRetentionPolicyRunsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("runs")] - public List Runs { get; set; } + public List Runs { get; set; } + [JsonPropertyName("next")] + public string? Next { get; set; } + [JsonPropertyName("prev")] + public string? Prev { get; set; } } public class GetReviewQueueItemResponse @@ -8361,6 +11975,9 @@ public class GetReviewQueueItemResponse public class GetSegmentResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("segment")] @@ -8373,14 +11990,23 @@ public class GetTaskResponse public DateTime CreatedAt { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Current status of task + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// ID of task + /// [JsonPropertyName("task_id")] public string TaskID { get; set; } [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("error")] public ErrorResult? Error { get; set; } + /// + /// Result produced by task after completion + /// [JsonPropertyName("result")] public object Result { get; set; } } @@ -8425,6 +12051,9 @@ public class GoLiveRequest public class GoLiveResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("call")] @@ -8459,10 +12088,19 @@ public class HLSSettings public class HLSSettingsRequest { + /// + /// Quality tracks for HLS. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 + /// [JsonPropertyName("quality_tracks")] public List QualityTracks { get; set; } + /// + /// Whether HLS broadcasting should start automatically + /// [JsonPropertyName("auto_on")] public bool? AutoOn { get; set; } + /// + /// Whether HLS broadcasting is enabled + /// [JsonPropertyName("enabled")] public bool? Enabled { get; set; } [JsonPropertyName("layout")] @@ -8497,6 +12135,9 @@ public class HarmConfig public class HideChannelRequest { + /// + /// Whether to clear message history of the channel or not + /// [JsonPropertyName("clear_history")] public bool? ClearHistory { get; set; } [JsonPropertyName("user_id")] @@ -8507,6 +12148,9 @@ public class HideChannelRequest public class HideChannelResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -8533,6 +12177,10 @@ public class HuaweiConfigFields public class ImageContentParameters { + [JsonPropertyName("label_operator")] + public string? LabelOperator { get; set; } + [JsonPropertyName("min_confidence")] + public double? MinConfidence { get; set; } [JsonPropertyName("harm_labels")] public List HarmLabels { get; set; } } @@ -8553,6 +12201,8 @@ public class ImageData public class ImageRuleParameters { + [JsonPropertyName("min_confidence")] + public double? MinConfidence { get; set; } [JsonPropertyName("threshold")] public int? Threshold { get; set; } [JsonPropertyName("time_window")] @@ -8563,12 +12213,24 @@ public class ImageRuleParameters public class ImageSize { + /// + /// Crop mode. One of: top, bottom, left, right, center + /// [JsonPropertyName("crop")] public string? Crop { get; set; } + /// + /// Target image height + /// [JsonPropertyName("height")] public int? Height { get; set; } + /// + /// Resize method. One of: clip, crop, scale, fill + /// [JsonPropertyName("resize")] public string? Resize { get; set; } + /// + /// Target image width + /// [JsonPropertyName("width")] public int? Width { get; set; } } @@ -8577,6 +12239,9 @@ public class ImageUploadRequest { [JsonPropertyName("file")] public string? File { get; set; } + /// + /// field with JSON-encoded array of image size configurations + /// [JsonPropertyName("upload_sizes")] public List UploadSizes { get; set; } [JsonPropertyName("user")] @@ -8585,12 +12250,18 @@ public class ImageUploadRequest public class ImageUploadResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("file")] public string? File { get; set; } [JsonPropertyName("thumb_url")] public string? ThumbUrl { get; set; } + /// + /// Array of image size configurations + /// [JsonPropertyName("upload_sizes")] public List UploadSizes { get; set; } } @@ -8701,8 +12372,14 @@ public class IndividualRecordingResponse public class IndividualRecordingSettingsRequest { + /// + /// Recording mode. One of: available, disabled, auto-on + /// [JsonPropertyName("mode")] public string Mode { get; set; } + /// + /// Output types to include: audio_only, video_only, audio_video, screenshare_audio_only, screenshare_video_only, screenshare_audio_video + /// [JsonPropertyName("output_types")] public List OutputTypes { get; set; } } @@ -8751,14 +12428,29 @@ public class IngressErrorEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Human-readable error message + /// [JsonPropertyName("error")] public string Error { get; set; } + /// + /// Unique identifier for the stream + /// [JsonPropertyName("ingress_stream_id")] public string IngressStreamID { get; set; } + /// + /// User who was streaming + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// The type of event: "ingress.error" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Error code + /// [JsonPropertyName("code")] public string? Code { get; set; } } @@ -8829,18 +12521,39 @@ public class IngressStartedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique identifier for this stream + /// [JsonPropertyName("ingress_stream_id")] public string IngressStreamID { get; set; } + /// + /// Streaming protocol (e.g., 'rtmps', 'srt', 'rtmp', 'rtsp') + /// [JsonPropertyName("publisher_type")] public string PublisherType { get; set; } + /// + /// User who started the stream + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// The type of event: "ingress.started" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Client IP address + /// [JsonPropertyName("client_ip")] public string? ClientIp { get; set; } + /// + /// Streaming client software name (e.g., 'OBS Studio') + /// [JsonPropertyName("client_name")] public string? ClientName { get; set; } + /// + /// Client software version + /// [JsonPropertyName("version")] public string? Version { get; set; } } @@ -8851,10 +12564,19 @@ public class IngressStoppedEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique identifier for the stream + /// [JsonPropertyName("ingress_stream_id")] public string IngressStreamID { get; set; } + /// + /// User who was streaming + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// The type of event: "ingress.stopped" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } @@ -8925,6 +12647,46 @@ public class IngressVideoLayerResponse public int MinDimension { get; set; } } + public class InsertActionLogRequest + { + /// + /// Type of moderation action taken + /// + [JsonPropertyName("action_type")] + public string ActionType { get; set; } + /// + /// ID of the user who created the entity + /// + [JsonPropertyName("entity_creator_id")] + public string EntityCreatorID { get; set; } + /// + /// ID of the entity the action was taken on + /// + [JsonPropertyName("entity_id")] + public string EntityID { get; set; } + /// + /// Type of entity the action was taken on + /// + [JsonPropertyName("entity_type")] + public string EntityType { get; set; } + /// + /// Reason for the action + /// + [JsonPropertyName("reason")] + public string? Reason { get; set; } + /// + /// Custom metadata for the action log + /// + [JsonPropertyName("custom")] + public object Custom { get; set; } + } + + public class InsertActionLogResponse + { + [JsonPropertyName("duration")] + public string Duration { get; set; } + } + public class JoinCallAPIMetrics { [JsonPropertyName("failures")] @@ -8947,10 +12709,19 @@ public class KeyframeRuleParameters public class KickUserRequest { + /// + /// The user to kick + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// If true, also block the user from rejoining the call + /// [JsonPropertyName("block")] public bool? Block { get; set; } + /// + /// Server-side: ID of the user performing the action + /// [JsonPropertyName("kicked_by_id")] public string? KickedByID { get; set; } [JsonPropertyName("kicked_by")] @@ -8959,6 +12730,9 @@ public class KickUserRequest public class KickUserResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -8971,6 +12745,9 @@ public class KickedUserEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.kicked_user" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("kicked_by_user")] @@ -9015,8 +12792,14 @@ public class LabelResponse public class LabelThresholds { + /// + /// Threshold for automatic message block + /// [JsonPropertyName("block")] public double? Block { get; set; } + /// + /// Threshold for automatic message flag + /// [JsonPropertyName("flag")] public double? Flag { get; set; } } @@ -9065,10 +12848,19 @@ public class LayoutSettingsResponse public class LimitInfoResponse { + /// + /// The maximum number of API calls allowed per time window + /// [JsonPropertyName("limit")] public int Limit { get; set; } + /// + /// The number of remaining calls in the current window + /// [JsonPropertyName("remaining")] public int Remaining { get; set; } + /// + /// The Unix timestamp when the rate limit resets + /// [JsonPropertyName("reset")] public int Reset { get; set; } } @@ -9111,6 +12903,9 @@ public class LimitsSettingsResponse public class ListBlockListResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("blocklists")] @@ -9129,6 +12924,9 @@ public class ListChannelTypesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Object with all channel types + /// [JsonPropertyName("channel_types")] public Dictionary ChannelTypes { get; set; } } @@ -9137,6 +12935,9 @@ public class ListCommandsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of commands + /// [JsonPropertyName("commands")] public List Commands { get; set; } } @@ -9145,12 +12946,18 @@ public class ListDevicesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of devices + /// [JsonPropertyName("devices")] public List Devices { get; set; } } public class ListExternalStorageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("external_storages")] @@ -9159,6 +12966,9 @@ public class ListExternalStorageResponse public class ListFeedGroupsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("groups")] @@ -9169,6 +12979,9 @@ public class ListFeedViewsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Map of feed view ID to feed view + /// [JsonPropertyName("views")] public Dictionary Views { get; set; } } @@ -9177,12 +12990,18 @@ public class ListFeedVisibilitiesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Map of feed visibility configurations by name + /// [JsonPropertyName("feed_visibilities")] public Dictionary FeedVisibilities { get; set; } } public class ListImportV2TasksResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("import_tasks")] @@ -9195,6 +13014,9 @@ public class ListImportV2TasksResponse public class ListImportsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("import_tasks")] @@ -9203,6 +13025,9 @@ public class ListImportsResponse public class ListPermissionsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("permissions")] @@ -9211,6 +13036,9 @@ public class ListPermissionsResponse public class ListPushProvidersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("push_providers")] @@ -9227,6 +13055,9 @@ public class ListRecordingsResponse public class ListRolesResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("roles")] @@ -9237,6 +13068,9 @@ public class ListSIPInboundRoutingRuleResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of SIP Inbound Routing Rules for the application + /// [JsonPropertyName("sip_inbound_routing_rules")] public List SipInboundRoutingRules { get; set; } } @@ -9245,6 +13079,9 @@ public class ListSIPTrunksResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of SIP trunks for the application + /// [JsonPropertyName("sip_trunks")] public List SipTrunks { get; set; } } @@ -9253,6 +13090,9 @@ public class ListTranscriptionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of transcriptions for the call + /// [JsonPropertyName("transcriptions")] public List Transcriptions { get; set; } } @@ -9261,32 +13101,59 @@ public class ListUserGroupsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of user groups + /// [JsonPropertyName("user_groups")] public List UserGroups { get; set; } } public class LocationResponse { + /// + /// Continent code + /// [JsonPropertyName("continent_code")] public string ContinentCode { get; set; } + /// + /// Country ISO code + /// [JsonPropertyName("country_iso_code")] public string CountryIsoCode { get; set; } + /// + /// Subdivision ISO code + /// [JsonPropertyName("subdivision_iso_code")] public string SubdivisionIsoCode { get; set; } } public class MarkActivityRequest { + /// + /// Whether to mark all activities as read + /// [JsonPropertyName("mark_all_read")] public bool? MarkAllRead { get; set; } + /// + /// Whether to mark all activities as seen + /// [JsonPropertyName("mark_all_seen")] public bool? MarkAllSeen { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// List of activity IDs to mark as read + /// [JsonPropertyName("mark_read")] public List MarkRead { get; set; } + /// + /// List of activity IDs to mark as seen + /// [JsonPropertyName("mark_seen")] public List MarkSeen { get; set; } + /// + /// List of activity IDs to mark as watched (for stories) + /// [JsonPropertyName("mark_watched")] public List MarkWatched { get; set; } [JsonPropertyName("user")] @@ -9297,6 +13164,9 @@ public class MarkChannelsReadRequest { [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Map of channel ID to last read message ID + /// [JsonPropertyName("read_by_channel")] public Dictionary ReadByChannel { get; set; } [JsonPropertyName("user")] @@ -9311,14 +13181,23 @@ public class MarkDeliveredRequest public class MarkDeliveredResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class MarkReadRequest { + /// + /// ID of the message that is considered last read by client + /// [JsonPropertyName("message_id")] public string? MessageID { get; set; } + /// + /// Optional Thread ID to specifically mark a given thread as read + /// [JsonPropertyName("thread_id")] public string? ThreadID { get; set; } [JsonPropertyName("user_id")] @@ -9329,6 +13208,9 @@ public class MarkReadRequest public class MarkReadResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("event")] @@ -9363,20 +13245,38 @@ public class MarkReadResponseEvent public class MarkReviewedRequestPayload { + /// + /// Maximum content items to mark as reviewed + /// [JsonPropertyName("content_to_mark_as_reviewed_limit")] public int? ContentToMarkAsReviewedLimit { get; set; } + /// + /// Reason for the appeal decision + /// [JsonPropertyName("decision_reason")] public string? DecisionReason { get; set; } + /// + /// Skip marking content as reviewed + /// [JsonPropertyName("disable_marking_content_as_reviewed")] public bool? DisableMarkingContentAsReviewed { get; set; } } public class MarkUnreadRequest { + /// + /// ID of the message from where the channel is marked unread + /// [JsonPropertyName("message_id")] public string? MessageID { get; set; } + /// + /// Timestamp of the message from where the channel is marked unread + /// [JsonPropertyName("message_timestamp")] public DateTime? MessageTimestamp { get; set; } + /// + /// Mark a thread unread, specify one of the thread, message timestamp, or message id + /// [JsonPropertyName("thread_id")] public string? ThreadID { get; set; } [JsonPropertyName("user_id")] @@ -9399,6 +13299,9 @@ public class MaxStreakChangedEvent public class MemberAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] @@ -9407,20 +13310,41 @@ public class MemberAddedEvent public object Custom { get; set; } [JsonPropertyName("member")] public ChannelMemberResponse Member { get; set; } + /// + /// The type of event: "member.added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel to which the member was added + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel to which the member was added + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel to which the member was added + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -9431,6 +13355,9 @@ public class MemberAddedEvent public class MemberRemovedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] @@ -9439,20 +13366,41 @@ public class MemberRemovedEvent public object Custom { get; set; } [JsonPropertyName("member")] public ChannelMemberResponse Member { get; set; } + /// + /// The type of event: "member.removed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel from which the member was removed + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel from which the member was removed + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel from which the member was removed + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -9467,22 +13415,37 @@ public class MemberRequest public string UserID { get; set; } [JsonPropertyName("role")] public string? Role { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class MemberResponse { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Custom member response data + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// Date/time of deletion + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } [JsonPropertyName("role")] @@ -9491,6 +13454,9 @@ public class MemberResponse public class MemberUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] @@ -9499,20 +13465,41 @@ public class MemberUpdatedEvent public object Custom { get; set; } [JsonPropertyName("member")] public ChannelMemberResponse Member { get; set; } + /// + /// The type of event: "member.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel in which the member was updated + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel in which the member was updated + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel in which the member was updated + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -9523,34 +13510,67 @@ public class MemberUpdatedEvent public class MembersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of found members + /// [JsonPropertyName("members")] public List Members { get; set; } } public class MembershipLevelResponse { + /// + /// When the membership level was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique identifier for the membership level + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Display name for the membership level + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Priority level + /// [JsonPropertyName("priority")] public int Priority { get; set; } + /// + /// When the membership level was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Activity tags this membership level gives access to + /// [JsonPropertyName("tags")] public List Tags { get; set; } + /// + /// Description of the membership level + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// Custom data for the membership level + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class MessageActionRequest { + /// + /// ReadOnlyData to execute command with + /// [JsonPropertyName("form_data")] public Dictionary FormData { get; set; } [JsonPropertyName("user_id")] @@ -9561,6 +13581,9 @@ public class MessageActionRequest public class MessageActionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] @@ -9591,8 +13614,14 @@ public class MessageChangeSet public class MessageDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Whether the message was hard deleted + /// [JsonPropertyName("hard_delete")] public bool HardDelete { get; set; } [JsonPropertyName("message_id")] @@ -9601,22 +13630,46 @@ public class MessageDeletedEvent public object Custom { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "message.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the message was sent + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the message was sent + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the message was sent + /// [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// Whether the message was deleted only for the current user + /// [JsonPropertyName("deleted_for_me")] public bool? DeletedForMe { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -9659,34 +13712,67 @@ public class MessageFlagResponse public class MessageFlaggedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("message_id")] public string MessageID { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "message.flagged" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the message was sent + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the message was sent + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the message was sent + /// [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// The reason for the flag + /// [JsonPropertyName("reason")] public string? Reason { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// The total number of flags for the user + /// [JsonPropertyName("total_flags")] public int? TotalFlags { get; set; } [JsonPropertyName("channel_custom")] public object ChannelCustom { get; set; } + /// + /// Custom data + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("details")] @@ -9717,22 +13803,49 @@ public class MessageHistoryEntryResponse public class MessageModerationResult { + /// + /// Action taken by automod + /// [JsonPropertyName("action")] public string Action { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// ID of the message + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Whether user has bad karma + /// [JsonPropertyName("user_bad_karma")] public bool UserBadKarma { get; set; } + /// + /// Karma of the user + /// [JsonPropertyName("user_karma")] public double UserKarma { get; set; } + /// + /// Word that was blocked + /// [JsonPropertyName("blocked_word")] public string? BlockedWord { get; set; } + /// + /// Name of the blocklist + /// [JsonPropertyName("blocklist_name")] public string? BlocklistName { get; set; } + /// + /// User who moderated the message + /// [JsonPropertyName("moderated_by")] public string? ModeratedBy { get; set; } [JsonPropertyName("ai_moderation_response")] @@ -9743,40 +13856,76 @@ public class MessageModerationResult public class MessageNewEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// The number of watchers + /// [JsonPropertyName("watcher_count")] public int WatcherCount { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "message.new" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the message was sent + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the message was sent + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the message was sent + /// [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// The author of the parent message + /// [JsonPropertyName("parent_author")] public string? ParentAuthor { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("total_unread_count")] public int? TotalUnreadCount { get; set; } [JsonPropertyName("unread_channels")] public int? UnreadChannels { get; set; } + /// + /// The number of unread messages + /// [JsonPropertyName("unread_count")] public int? UnreadCount { get; set; } + /// + /// The participants of the thread + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("channel")] @@ -9795,52 +13944,112 @@ public class MessageOptions public class MessagePaginationParams { + /// + /// The timestamp to get messages with a created_at timestamp greater than + /// [JsonPropertyName("created_at_after")] public DateTime? CreatedAtAfter { get; set; } + /// + /// The timestamp to get messages with a created_at timestamp greater than or equal to + /// [JsonPropertyName("created_at_after_or_equal")] public DateTime? CreatedAtAfterOrEqual { get; set; } + /// + /// The result will be a set of messages, that are both older and newer than the created_at timestamp provided, distributed evenly around the timestamp + /// [JsonPropertyName("created_at_around")] public DateTime? CreatedAtAround { get; set; } + /// + /// The timestamp to get messages with a created_at timestamp smaller than + /// [JsonPropertyName("created_at_before")] public DateTime? CreatedAtBefore { get; set; } + /// + /// The timestamp to get messages with a created_at timestamp smaller than or equal to + /// [JsonPropertyName("created_at_before_or_equal")] public DateTime? CreatedAtBeforeOrEqual { get; set; } + /// + /// The result will be a set of messages, that are both older and newer than the message with the provided ID, and the message with the ID provided will be in the middle of the set + /// [JsonPropertyName("id_around")] public string? IDAround { get; set; } + /// + /// The ID of the message to get messages with a timestamp greater than + /// [JsonPropertyName("id_gt")] public string? IDGt { get; set; } + /// + /// The ID of the message to get messages with a timestamp greater than or equal to + /// [JsonPropertyName("id_gte")] public string? IDGte { get; set; } + /// + /// The ID of the message to get messages with a timestamp smaller than + /// [JsonPropertyName("id_lt")] public string? IDLt { get; set; } + /// + /// The ID of the message to get messages with a timestamp smaller than or equal to + /// [JsonPropertyName("id_lte")] public string? IDLte { get; set; } + /// + /// The maximum number of messages to return (max limit + /// [JsonPropertyName("limit")] public int? Limit { get; set; } } public class MessageReadEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "message.read" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the message was read + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the message was read + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the message was read + /// [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// The ID of the last read message + /// [JsonPropertyName("last_read_message_id")] public string? LastReadMessageID { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel")] @@ -9855,46 +14064,94 @@ public class MessageReadEvent public class MessageRequest { + /// + /// Contains HTML markup of the message. Can only be set when using server-side API + /// [JsonPropertyName("html")] public string? Html { get; set; } + /// + /// Message ID is unique string identifier of the message + /// [JsonPropertyName("id")] public string? ID { get; set; } [JsonPropertyName("mentioned_channel")] public bool? MentionedChannel { get; set; } [JsonPropertyName("mentioned_here")] public bool? MentionedHere { get; set; } + /// + /// Should be empty if `text` is provided. Can only be set when using server-side API + /// [JsonPropertyName("mml")] public string? Mml { get; set; } + /// + /// ID of parent message (thread) + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// Date when pinned message expires + /// [JsonPropertyName("pin_expires")] public DateTime? PinExpires { get; set; } + /// + /// Whether message is pinned or not + /// [JsonPropertyName("pinned")] public bool? Pinned { get; set; } + /// + /// Date when message got pinned + /// [JsonPropertyName("pinned_at")] public DateTime? PinnedAt { get; set; } + /// + /// Identifier of the poll to include in the message + /// [JsonPropertyName("poll_id")] public string? PollID { get; set; } [JsonPropertyName("quoted_message_id")] public string? QuotedMessageID { get; set; } + /// + /// Whether thread reply should be shown in the channel as well + /// [JsonPropertyName("show_in_channel")] public bool? ShowInChannel { get; set; } + /// + /// Whether message is silent or not + /// [JsonPropertyName("silent")] public bool? Silent { get; set; } + /// + /// Text of the message. Should be empty if `mml` is provided + /// [JsonPropertyName("text")] public string? Text { get; set; } + /// + /// Contains type of the message. One of: regular, system + /// [JsonPropertyName("type")] public string? Type { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of message attachments + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// List of user group IDs to mention. Group members who are also channel members will receive push notifications. Max 10 groups + /// [JsonPropertyName("mentioned_group_ids")] public List MentionedGroupIds { get; set; } [JsonPropertyName("mentioned_roles")] public List MentionedRoles { get; set; } + /// + /// Array of user IDs to mention + /// [JsonPropertyName("mentioned_users")] public List MentionedUsers { get; set; } + /// + /// A list of user ids that have restricted visibility to the message + /// [JsonPropertyName("restricted_visibility")] public List RestrictedVisibility { get; set; } [JsonPropertyName("custom")] @@ -9907,84 +14164,183 @@ public class MessageRequest public class MessageResponse { + /// + /// Channel unique identifier in : format + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("deleted_reply_count")] public int DeletedReplyCount { get; set; } + /// + /// Contains HTML markup of the message. Can only be set when using server-side API + /// [JsonPropertyName("html")] public string Html { get; set; } + /// + /// Message ID is unique string identifier of the message + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Whether the message mentioned the channel tag + /// [JsonPropertyName("mentioned_channel")] public bool MentionedChannel { get; set; } + /// + /// Whether the message mentioned online users with @here tag + /// [JsonPropertyName("mentioned_here")] public bool MentionedHere { get; set; } + /// + /// Whether message is pinned or not + /// [JsonPropertyName("pinned")] public bool Pinned { get; set; } + /// + /// Number of replies to this message + /// [JsonPropertyName("reply_count")] public int ReplyCount { get; set; } + /// + /// Whether the message was shadowed or not + /// [JsonPropertyName("shadowed")] public bool Shadowed { get; set; } + /// + /// Whether message is silent or not + /// [JsonPropertyName("silent")] public bool Silent { get; set; } + /// + /// Text of the message. Should be empty if `mml` is provided + /// [JsonPropertyName("text")] public string Text { get; set; } + /// + /// Contains type of the message. One of: regular, ephemeral, error, reply, system, deleted + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Array of message attachments + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// List of 10 latest reactions to this message + /// [JsonPropertyName("latest_reactions")] public List LatestReactions { get; set; } + /// + /// List of mentioned users + /// [JsonPropertyName("mentioned_users")] public List MentionedUsers { get; set; } + /// + /// List of 10 latest reactions of authenticated user to this message + /// [JsonPropertyName("own_reactions")] public List OwnReactions { get; set; } + /// + /// A list of user ids that have restricted visibility to the message, if the list is not empty, the message is only visible to the users in the list + /// [JsonPropertyName("restricted_visibility")] public List RestrictedVisibility { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// An object containing number of reactions of each type. Key: reaction type (string), value: number of reactions (int) + /// [JsonPropertyName("reaction_counts")] public Dictionary ReactionCounts { get; set; } + /// + /// An object containing scores of reactions of each type. Key: reaction type (string), value: total score of reactions (int) + /// [JsonPropertyName("reaction_scores")] public Dictionary ReactionScores { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// Contains provided slash command + /// [JsonPropertyName("command")] public string? Command { get; set; } + /// + /// Date/time of deletion + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } [JsonPropertyName("deleted_for_me")] public bool? DeletedForMe { get; set; } [JsonPropertyName("message_text_updated_at")] public DateTime? MessageTextUpdatedAt { get; set; } + /// + /// Should be empty if `text` is provided. Can only be set when using server-side API + /// [JsonPropertyName("mml")] public string? Mml { get; set; } + /// + /// ID of parent message (thread) + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// Date when pinned message expires + /// [JsonPropertyName("pin_expires")] public DateTime? PinExpires { get; set; } + /// + /// Date when message got pinned + /// [JsonPropertyName("pinned_at")] public DateTime? PinnedAt { get; set; } + /// + /// Identifier of the poll to include in the message + /// [JsonPropertyName("poll_id")] public string? PollID { get; set; } [JsonPropertyName("quoted_message_id")] public string? QuotedMessageID { get; set; } + /// + /// Whether thread reply should be shown in the channel as well + /// [JsonPropertyName("show_in_channel")] public bool? ShowInChannel { get; set; } + /// + /// List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups + /// [JsonPropertyName("mentioned_group_ids")] public List MentionedGroupIds { get; set; } + /// + /// List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles + /// [JsonPropertyName("mentioned_roles")] public List MentionedRoles { get; set; } + /// + /// List of users who participate in thread + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("draft")] public DraftResponse? Draft { get; set; } + /// + /// Object with translations. Key `language` contains the original language key. Other keys contain translations + /// [JsonPropertyName("i18n")] public Dictionary I18n { get; set; } + /// + /// Contains image moderation information + /// [JsonPropertyName("image_labels")] public Dictionary> ImageLabels { get; set; } [JsonPropertyName("member")] @@ -10013,6 +14369,9 @@ public class MessageStatsResponse public class MessageUnblockedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("message_id")] @@ -10021,8 +14380,14 @@ public class MessageUnblockedEvent public object Custom { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "message.unblocked" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The CID of the channel where the message was unblocked + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] @@ -10033,6 +14398,9 @@ public class MessageUnblockedEvent public class MessageUndeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("message_id")] @@ -10041,20 +14409,41 @@ public class MessageUndeletedEvent public object Custom { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "message.undeleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the message was sent + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the message was sent + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the message was sent + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -10071,6 +14460,9 @@ public class MessageUpdate public class MessageUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("message_id")] @@ -10079,20 +14471,41 @@ public class MessageUpdatedEvent public object Custom { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "message.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the message was sent + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the message was sent + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the message was sent + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -10105,86 +14518,185 @@ public class MessageUpdatedEvent public class MessageWithChannelResponse { + /// + /// Channel unique identifier in : format + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("deleted_reply_count")] public int DeletedReplyCount { get; set; } + /// + /// Contains HTML markup of the message. Can only be set when using server-side API + /// [JsonPropertyName("html")] public string Html { get; set; } + /// + /// Message ID is unique string identifier of the message + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Whether the message mentioned the channel tag + /// [JsonPropertyName("mentioned_channel")] public bool MentionedChannel { get; set; } + /// + /// Whether the message mentioned online users with @here tag + /// [JsonPropertyName("mentioned_here")] public bool MentionedHere { get; set; } + /// + /// Whether message is pinned or not + /// [JsonPropertyName("pinned")] public bool Pinned { get; set; } + /// + /// Number of replies to this message + /// [JsonPropertyName("reply_count")] public int ReplyCount { get; set; } + /// + /// Whether the message was shadowed or not + /// [JsonPropertyName("shadowed")] public bool Shadowed { get; set; } + /// + /// Whether message is silent or not + /// [JsonPropertyName("silent")] public bool Silent { get; set; } + /// + /// Text of the message. Should be empty if `mml` is provided + /// [JsonPropertyName("text")] public string Text { get; set; } + /// + /// Contains type of the message. One of: regular, ephemeral, error, reply, system, deleted + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Array of message attachments + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// List of 10 latest reactions to this message + /// [JsonPropertyName("latest_reactions")] public List LatestReactions { get; set; } + /// + /// List of mentioned users + /// [JsonPropertyName("mentioned_users")] public List MentionedUsers { get; set; } + /// + /// List of 10 latest reactions of authenticated user to this message + /// [JsonPropertyName("own_reactions")] public List OwnReactions { get; set; } + /// + /// A list of user ids that have restricted visibility to the message, if the list is not empty, the message is only visible to the users in the list + /// [JsonPropertyName("restricted_visibility")] public List RestrictedVisibility { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// An object containing number of reactions of each type. Key: reaction type (string), value: number of reactions (int) + /// [JsonPropertyName("reaction_counts")] public Dictionary ReactionCounts { get; set; } + /// + /// An object containing scores of reactions of each type. Key: reaction type (string), value: total score of reactions (int) + /// [JsonPropertyName("reaction_scores")] public Dictionary ReactionScores { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// Contains provided slash command + /// [JsonPropertyName("command")] public string? Command { get; set; } + /// + /// Date/time of deletion + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } [JsonPropertyName("deleted_for_me")] public bool? DeletedForMe { get; set; } [JsonPropertyName("message_text_updated_at")] public DateTime? MessageTextUpdatedAt { get; set; } + /// + /// Should be empty if `text` is provided. Can only be set when using server-side API + /// [JsonPropertyName("mml")] public string? Mml { get; set; } + /// + /// ID of parent message (thread) + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } + /// + /// Date when pinned message expires + /// [JsonPropertyName("pin_expires")] public DateTime? PinExpires { get; set; } + /// + /// Date when message got pinned + /// [JsonPropertyName("pinned_at")] public DateTime? PinnedAt { get; set; } + /// + /// Identifier of the poll to include in the message + /// [JsonPropertyName("poll_id")] public string? PollID { get; set; } [JsonPropertyName("quoted_message_id")] public string? QuotedMessageID { get; set; } + /// + /// Whether thread reply should be shown in the channel as well + /// [JsonPropertyName("show_in_channel")] public bool? ShowInChannel { get; set; } + /// + /// List of user group IDs mentioned in the message. Group members who are also channel members will receive push notifications based on their push preferences. Max 10 groups + /// [JsonPropertyName("mentioned_group_ids")] public List MentionedGroupIds { get; set; } + /// + /// List of roles mentioned in the message (e.g. admin, channel_moderator, custom roles). Members with matching roles will receive push notifications based on their push preferences. Max 10 roles + /// [JsonPropertyName("mentioned_roles")] public List MentionedRoles { get; set; } + /// + /// List of users who participate in thread + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("draft")] public DraftResponse? Draft { get; set; } + /// + /// Object with translations. Key `language` contains the original language key. Other keys contain translations + /// [JsonPropertyName("i18n")] public Dictionary I18n { get; set; } + /// + /// Contains image moderation information + /// [JsonPropertyName("image_labels")] public Dictionary> ImageLabels { get; set; } [JsonPropertyName("member")] @@ -10217,8 +14729,14 @@ public class MetricDescriptor public class MetricStats { + /// + /// Aggregated total value + /// [JsonPropertyName("total")] public int Total { get; set; } + /// + /// Per-day values (only present in daily mode) + /// [JsonPropertyName("daily")] public List Daily { get; set; } } @@ -10245,16 +14763,39 @@ public class MetricTimeSeries public class ModerationActionConfigResponse { + /// + /// The action to take + /// [JsonPropertyName("action")] public string Action { get; set; } + /// + /// Description of what this action does + /// [JsonPropertyName("description")] public string Description { get; set; } + /// + /// Type of entity this action applies to + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } + /// + /// Icon for the dashboard + /// [JsonPropertyName("icon")] public string Icon { get; set; } + /// + /// Display order (lower numbers shown first) + /// [JsonPropertyName("order")] public int Order { get; set; } + /// + /// Queue type this action config belongs to + /// + [JsonPropertyName("queue_type")] + public string? QueueType { get; set; } + /// + /// Custom data for the action + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -10263,12 +14804,24 @@ public class ModerationCheckCompletedEvent { [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of entity which was moderated + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// The type of the entity which was moderated + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } + /// + /// The recommended action + /// [JsonPropertyName("recommended_action")] public string RecommendedAction { get; set; } + /// + /// The review queue item ID + /// [JsonPropertyName("review_queue_item_id")] public string ReviewQueueItemID { get; set; } [JsonPropertyName("custom")] @@ -10321,6 +14874,9 @@ public class ModerationConfig public class ModerationCustomActionEvent { + /// + /// The ID of the custom action that was executed + /// [JsonPropertyName("action_id")] public string ActionID { get; set; } [JsonPropertyName("created_at")] @@ -10333,6 +14889,9 @@ public class ModerationCustomActionEvent public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// Additional options passed to the custom action + /// [JsonPropertyName("action_options")] public object ActionOptions { get; set; } [JsonPropertyName("message")] @@ -10347,12 +14906,16 @@ public class ModerationDashboardPreferences public bool? DisableAuditLogs { get; set; } [JsonPropertyName("disable_flagging_reviewed_entity")] public bool? DisableFlaggingReviewedEntity { get; set; } + [JsonPropertyName("escalation_queue_enabled")] + public bool? EscalationQueueEnabled { get; set; } [JsonPropertyName("flag_user_on_flagged_content")] public bool? FlagUserOnFlaggedContent { get; set; } [JsonPropertyName("media_queue_blur_enabled")] public bool? MediaQueueBlurEnabled { get; set; } [JsonPropertyName("allowed_moderation_action_reasons")] public List AllowedModerationActionReasons { get; set; } + [JsonPropertyName("escalation_reasons")] + public List EscalationReasons { get; set; } [JsonPropertyName("keyframe_classifications_map")] public Dictionary> KeyframeClassificationsMap { get; set; } [JsonPropertyName("overview_dashboard")] @@ -10395,10 +14958,16 @@ public class ModerationFlagResponse public class ModerationFlaggedEvent { + /// + /// The type of content that was flagged + /// [JsonPropertyName("content_type")] public string ContentType { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the flagged content + /// [JsonPropertyName("object_id")] public string ObjectID { get; set; } [JsonPropertyName("custom")] @@ -10439,24 +15008,48 @@ public class ModerationPayload public class ModerationPayloadRequest { + /// + /// Image URLs to moderate (max 30) + /// [JsonPropertyName("images")] public List Images { get; set; } + /// + /// Text content to moderate + /// [JsonPropertyName("texts")] public List Texts { get; set; } + /// + /// Video URLs to moderate + /// [JsonPropertyName("videos")] public List Videos { get; set; } + /// + /// Custom data for moderation + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class ModerationPayloadResponse { + /// + /// Image URLs to moderate + /// [JsonPropertyName("images")] public List Images { get; set; } + /// + /// Text content to moderate + /// [JsonPropertyName("texts")] public List Texts { get; set; } + /// + /// Video URLs to moderate + /// [JsonPropertyName("videos")] public List Videos { get; set; } + /// + /// Custom data for moderation + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -10523,12 +15116,24 @@ public class ModerationRulesTriggeredEvent { [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the entity that triggered the rule + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// The type of the entity (call, user, message, etc.) + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } + /// + /// The ID of the user who triggered the rule + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Array of action types that were triggered + /// [JsonPropertyName("triggered_actions")] public List TriggeredActions { get; set; } [JsonPropertyName("custom")] @@ -10539,8 +15144,14 @@ public class ModerationRulesTriggeredEvent public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The review queue item ID if applicable + /// [JsonPropertyName("review_queue_item_id")] public string? ReviewQueueItemID { get; set; } + /// + /// The violation number for call rules (optional) + /// [JsonPropertyName("violation_number")] public int? ViolationNumber { get; set; } } @@ -10567,10 +15178,16 @@ public class ModerationV2Response public class MuteChannelRequest { + /// + /// Duration of mute in milliseconds + /// [JsonPropertyName("expiration")] public int? Expiration { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Channel CIDs to mute (if multiple channels) + /// [JsonPropertyName("channel_cids")] public List ChannelCids { get; set; } [JsonPropertyName("user")] @@ -10581,6 +15198,9 @@ public class MuteChannelResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Object with mutes (if multiple channels were muted) + /// [JsonPropertyName("channel_mutes")] public List ChannelMutes { get; set; } [JsonPropertyName("channel_mute")] @@ -10591,8 +15211,14 @@ public class MuteChannelResponse public class MuteRequest { + /// + /// User IDs to mute (if multiple users) + /// [JsonPropertyName("target_ids")] public List TargetIds { get; set; } + /// + /// Duration of mute in minutes + /// [JsonPropertyName("timeout")] public int? Timeout { get; set; } [JsonPropertyName("user_id")] @@ -10605,8 +15231,14 @@ public class MuteResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Object with mutes (if multiple users were muted) + /// [JsonPropertyName("mutes")] public List Mutes { get; set; } + /// + /// A list of users that can't be found. Common cause for this is deleted users + /// [JsonPropertyName("non_existing_users")] public List NonExistingUsers { get; set; } [JsonPropertyName("own_user")] @@ -10635,6 +15267,9 @@ public class MuteUsersRequest public class MuteUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -10671,10 +15306,19 @@ public class NotificationComment public class NotificationConfig { + /// + /// Time window for deduplicating notification activities (reactions and follows). Empty or '0' = always deduplicate (default). Examples: '1h', '24h', '7d', '1w' + /// [JsonPropertyName("deduplication_window")] public string? DeduplicationWindow { get; set; } + /// + /// Whether to track read status + /// [JsonPropertyName("track_read")] public bool? TrackRead { get; set; } + /// + /// Whether to track seen status + /// [JsonPropertyName("track_seen")] public bool? TrackSeen { get; set; } } @@ -10689,18 +15333,30 @@ public class NotificationContext public class NotificationFeedUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the feed + /// [JsonPropertyName("fid")] public string Fid { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.notification_feed.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// Aggregated activities for notification feeds + /// [JsonPropertyName("aggregated_activities")] public List AggregatedActivities { get; set; } [JsonPropertyName("notification_status")] @@ -10711,44 +15367,95 @@ public class NotificationFeedUpdatedEvent public class NotificationMarkUnreadEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "notification.mark_unread" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel which was marked as unread + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel which was marked as unread + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel which was marked as unread + /// [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// The ID of the first unread message + /// [JsonPropertyName("first_unread_message_id")] public string? FirstUnreadMessageID { get; set; } + /// + /// The time when the channel/thread was marked as unread + /// [JsonPropertyName("last_read_at")] public DateTime? LastReadAt { get; set; } + /// + /// The ID of the last read message + /// [JsonPropertyName("last_read_message_id")] public string? LastReadMessageID { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// The ID of the thread which was marked as unread + /// [JsonPropertyName("thread_id")] public string? ThreadID { get; set; } + /// + /// The total number of unread messages + /// [JsonPropertyName("total_unread_count")] public int? TotalUnreadCount { get; set; } + /// + /// The number of channels with unread messages + /// [JsonPropertyName("unread_channels")] public int? UnreadChannels { get; set; } + /// + /// The total number of unread messages + /// [JsonPropertyName("unread_count")] public int? UnreadCount { get; set; } + /// + /// The number of unread messages in the channel/thread after first_unread_message_id + /// [JsonPropertyName("unread_messages")] public int? UnreadMessages { get; set; } + /// + /// The total number of unread messages in the threads + /// [JsonPropertyName("unread_thread_messages")] public int? UnreadThreadMessages { get; set; } + /// + /// The number of unread threads + /// [JsonPropertyName("unread_threads")] public int? UnreadThreads { get; set; } [JsonPropertyName("channel")] @@ -10823,48 +15530,98 @@ public class NotificationSettingsResponse public class NotificationStatusResponse { + /// + /// Number of unread notifications + /// [JsonPropertyName("unread")] public int Unread { get; set; } + /// + /// Number of unseen notifications + /// [JsonPropertyName("unseen")] public int Unseen { get; set; } + /// + /// When notifications were last read + /// [JsonPropertyName("last_read_at")] public DateTime? LastReadAt { get; set; } + /// + /// When notifications were last seen + /// [JsonPropertyName("last_seen_at")] public DateTime? LastSeenAt { get; set; } + /// + /// Deprecated: use is_read on each activity/group instead. IDs of activities that have been read. Capped at ~101 entries for aggregated feeds. + /// [JsonPropertyName("read_activities")] public List ReadActivities { get; set; } + /// + /// Deprecated: use is_seen on each activity/group instead. IDs of activities that have been seen. Capped at ~101 entries for aggregated feeds. + /// [JsonPropertyName("seen_activities")] public List SeenActivities { get; set; } } public class NotificationTarget { + /// + /// The ID of the target (activity ID or user ID) + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// The name of the target user (for user targets like follows) + /// [JsonPropertyName("name")] public string? Name { get; set; } + /// + /// The text content of the target activity (for activity targets) + /// [JsonPropertyName("text")] public string? Text { get; set; } + /// + /// The type of the target activity (for activity targets) + /// [JsonPropertyName("type")] public string? Type { get; set; } + /// + /// The ID of the user who created the target activity (for activity targets) + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Attachments on the target activity (for activity targets) + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } [JsonPropertyName("comment")] public NotificationComment? Comment { get; set; } + /// + /// Custom data from the target activity + /// + [JsonPropertyName("custom")] + public object Custom { get; set; } [JsonPropertyName("parent_activity")] public NotificationParentActivity? ParentActivity { get; set; } } public class NotificationThreadMessageNewEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// The ID of the thread + /// [JsonPropertyName("thread_id")] public string ThreadID { get; set; } + /// + /// The number of watchers + /// [JsonPropertyName("watcher_count")] public int WatcherCount { get; set; } [JsonPropertyName("channel")] @@ -10873,28 +15630,46 @@ public class NotificationThreadMessageNewEvent public object Custom { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "notification.message_new" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the message was sent + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the message was sent + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the message was sent + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("parent_author")] public string? ParentAuthor { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("unread_thread_messages")] public int? UnreadThreadMessages { get; set; } [JsonPropertyName("unread_threads")] public int? UnreadThreads { get; set; } + /// + /// The participants of the thread + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("channel_custom")] @@ -10903,12 +15678,23 @@ public class NotificationThreadMessageNewEvent public class NotificationTrigger { + /// + /// Human-readable text describing the notification + /// [JsonPropertyName("text")] public string Text { get; set; } + /// + /// The type of notification (mention, reaction, comment, follow, etc.) + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("comment")] public NotificationComment? Comment { get; set; } + /// + /// Custom data from the trigger object (comment, reaction, etc.) + /// + [JsonPropertyName("custom")] + public object Custom { get; set; } } public class OCRRule @@ -10935,10 +15721,16 @@ public class OverviewDashboardConfig public class OwnBatchRequest { + /// + /// List of feed IDs to get own fields for + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Optional list of specific fields to return. If not specified, all fields (own_follows, own_followings, own_capabilities, own_membership) are returned + /// [JsonPropertyName("fields")] public List Fields { get; set; } [JsonPropertyName("user")] @@ -10949,6 +15741,9 @@ public class OwnBatchResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Map of feed ID to own fields data + /// [JsonPropertyName("data")] public Dictionary Data { get; set; } } @@ -11207,12 +16002,21 @@ public class ParticipantSessionDetails public class PendingMessageEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The method used for the pending message + /// [JsonPropertyName("method")] public string Method { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "message.pending" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -11221,6 +16025,9 @@ public class PendingMessageEvent public ChannelResponse? Channel { get; set; } [JsonPropertyName("message")] public MessageResponse? Message { get; set; } + /// + /// Metadata attached to the pending message + /// [JsonPropertyName("metadata")] public Dictionary Metadata { get; set; } [JsonPropertyName("user")] @@ -11249,24 +16056,54 @@ public class PerSDKUsageReport public class Permission { + /// + /// Action name this permission is for (e.g. SendMessage) + /// [JsonPropertyName("action")] public string Action { get; set; } + /// + /// Whether this is a custom permission or built-in + /// [JsonPropertyName("custom")] public bool Custom { get; set; } + /// + /// Description of the permission + /// [JsonPropertyName("description")] public string Description { get; set; } + /// + /// Unique permission ID + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Level at which permission could be applied (app or channel). One of: app, channel + /// [JsonPropertyName("level")] public string Level { get; set; } + /// + /// Name of the permission + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Whether this permission applies to resource owner or not + /// [JsonPropertyName("owner")] public bool Owner { get; set; } + /// + /// Whether this permission applies to teammates (multi-tenancy mode only) + /// [JsonPropertyName("same_team")] public bool SameTeam { get; set; } + /// + /// List of tags of the permission + /// [JsonPropertyName("tags")] public List Tags { get; set; } + /// + /// MongoDB style condition which decides whether or not the permission is granted + /// [JsonPropertyName("condition")] public object Condition { get; set; } } @@ -11277,16 +16114,25 @@ public class PermissionRequestEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The list of permissions requested by the user + /// [JsonPropertyName("permissions")] public List Permissions { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.permission_request" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } public class PinActivityRequest { + /// + /// If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } [JsonPropertyName("user_id")] @@ -11297,12 +16143,21 @@ public class PinActivityRequest public class PinActivityResponse { + /// + /// When the activity was pinned + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Fully qualified ID of the feed the activity was pinned to + /// [JsonPropertyName("feed")] public string Feed { get; set; } + /// + /// ID of the user who pinned the activity + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("activity")] @@ -11311,14 +16166,23 @@ public class PinActivityResponse public class PinRequest { + /// + /// the session ID of the user who pinned the message + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } + /// + /// the user ID of the user who pinned the message + /// [JsonPropertyName("user_id")] public string UserID { get; set; } } public class PinResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -11363,14 +16227,29 @@ public class PolicyRequest { [JsonPropertyName("action")] public string Action { get; set; } + /// + /// User-friendly policy name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Whether policy applies to resource owner or not + /// [JsonPropertyName("owner")] public bool Owner { get; set; } + /// + /// Policy priority + /// [JsonPropertyName("priority")] public int Priority { get; set; } + /// + /// List of resources to apply policy to + /// [JsonPropertyName("resources")] public List Resources { get; set; } + /// + /// List of roles to apply policy to + /// [JsonPropertyName("roles")] public List Roles { get; set; } } @@ -11395,6 +16274,9 @@ public class PollOptionRequest public class PollOptionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("poll_option")] @@ -11413,6 +16295,9 @@ public class PollOptionResponseData public class PollResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("poll")] @@ -11467,6 +16352,9 @@ public class PollResponseData public class PollVoteResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("poll")] @@ -11499,8 +16387,14 @@ public class PollVoteResponseData public class PollVotesResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Poll votes + /// [JsonPropertyName("votes")] public List Votes { get; set; } [JsonPropertyName("next")] @@ -11605,8 +16499,14 @@ public class PushConfig public class PushNotificationConfig { + /// + /// Whether push notifications are enabled for this feed group + /// [JsonPropertyName("enable_push")] public bool? EnablePush { get; set; } + /// + /// List of notification types that should trigger push notifications (e.g., follow, comment, reaction, comment_reaction, mention) + /// [JsonPropertyName("push_types")] public List PushTypes { get; set; } } @@ -11639,18 +16539,39 @@ public class PushNotificationSettingsResponse public class PushPreferenceInput { + /// + /// Set the level of call push notifications for the user. One of: all, none, default + /// [JsonPropertyName("call_level")] public string? CallLevel { get; set; } + /// + /// Set the push preferences for a specific channel. If empty it sets the default for the user + /// [JsonPropertyName("channel_cid")] public string? ChannelCid { get; set; } + /// + /// Set the level of chat push notifications for the user. Note: "mentions" is deprecated in favor of "direct_mentions". One of: all, mentions, direct_mentions, all_mentions, none, default + /// [JsonPropertyName("chat_level")] public string? ChatLevel { get; set; } + /// + /// Disable push notifications till a certain time + /// [JsonPropertyName("disabled_until")] public DateTime? DisabledUntil { get; set; } + /// + /// Set the level of feeds push notifications for the user. One of: all, none, default + /// [JsonPropertyName("feeds_level")] public string? FeedsLevel { get; set; } + /// + /// Remove the disabled until time. (IE stop snoozing notifications) + /// [JsonPropertyName("remove_disable")] public bool? RemoveDisable { get; set; } + /// + /// The user id for which to set the push preferences. Required when using server side auths, defaults to current user with client side auth. + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } [JsonPropertyName("chat_preferences")] @@ -11863,16 +16784,34 @@ public class PushTemplate public class PushTemplateResponse { + /// + /// Time when the template was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Whether push notification is enabled for this event + /// [JsonPropertyName("enable_push")] public bool EnablePush { get; set; } + /// + /// Type of event this template applies to + /// [JsonPropertyName("event_type")] public string EventType { get; set; } + /// + /// Internal ID of the push provider + /// [JsonPropertyName("push_provider_internal_id")] public string PushProviderInternalID { get; set; } + /// + /// Time when the template was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// The push notification template + /// [JsonPropertyName("template")] public string? Template { get; set; } } @@ -11893,6 +16832,9 @@ public class QueryActivitiesRequest { [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } + /// + /// When true, include both expired and non-expired activities in the result. + /// [JsonPropertyName("include_expired_activities")] public bool? IncludeExpiredActivities { get; set; } [JsonPropertyName("include_private_activities")] @@ -11905,8 +16847,14 @@ public class QueryActivitiesRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query. Supports location-based queries with 'near' and 'within_bounds' operators. + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -11917,10 +16865,19 @@ public class QueryActivitiesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of activities matching the query + /// [JsonPropertyName("activities")] public List Activities { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } @@ -11941,6 +16898,9 @@ public class QueryActivityReactionsRequest public class QueryActivityReactionsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("reactions")] @@ -11963,6 +16923,9 @@ public class QueryAggregateCallStatsRequest public class QueryAggregateCallStatsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("call_duration_report")] @@ -11991,8 +16954,14 @@ public class QueryAppealsRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sorting parameters for appeals + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions for appeals + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -12003,6 +16972,9 @@ public class QueryAppealsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of Appeal Items + /// [JsonPropertyName("items")] public List Items { get; set; } [JsonPropertyName("next")] @@ -12013,16 +16985,31 @@ public class QueryAppealsResponse public class QueryBannedUsersPayload { + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } + /// + /// Whether to exclude expired bans or not + /// [JsonPropertyName("exclude_expired_bans")] public bool? ExcludeExpiredBans { get; set; } + /// + /// Number of records to return + /// [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Number of records to offset + /// [JsonPropertyName("offset")] public int? Offset { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } [JsonPropertyName("user")] @@ -12031,8 +17018,14 @@ public class QueryBannedUsersPayload public class QueryBannedUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of found bans + /// [JsonPropertyName("bans")] public List Bans { get; set; } } @@ -12045,8 +17038,14 @@ public class QueryBookmarkFoldersRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12055,10 +17054,19 @@ public class QueryBookmarkFoldersResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of bookmark folders matching the query + /// [JsonPropertyName("bookmark_folders")] public List BookmarkFolders { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } @@ -12073,8 +17081,14 @@ public class QueryBookmarksRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12083,10 +17097,19 @@ public class QueryBookmarksResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of bookmarks matching the query + /// [JsonPropertyName("bookmarks")] public List Bookmarks { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } @@ -12103,14 +17126,23 @@ public class QueryCallMembersRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } } public class QueryCallMembersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("members")] @@ -12129,6 +17161,9 @@ public class QueryCallParticipantSessionsResponse public string CallSessionID { get; set; } [JsonPropertyName("call_type")] public string CallType { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public int Duration { get; set; } [JsonPropertyName("total_participant_duration")] @@ -12147,6 +17182,9 @@ public class QueryCallParticipantSessionsResponse public class QueryCallParticipantsRequest { + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } } @@ -12161,6 +17199,9 @@ public class QueryCallParticipantsResponse public List Members { get; set; } [JsonPropertyName("own_capabilities")] public List OwnCapabilities { get; set; } + /// + /// List of call participants + /// [JsonPropertyName("participants")] public List Participants { get; set; } [JsonPropertyName("call")] @@ -12175,6 +17216,9 @@ public class QueryCallSessionParticipantStatsResponse public string CallSessionID { get; set; } [JsonPropertyName("call_type")] public string CallType { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("participants")] @@ -12191,6 +17235,8 @@ public class QueryCallSessionParticipantStatsResponse public string? Prev { get; set; } [JsonPropertyName("tmp_data_source")] public string? TmpDataSource { get; set; } + [JsonPropertyName("call_events")] + public List CallEvents { get; set; } } public class QueryCallSessionParticipantStatsTimelineResponse @@ -12201,6 +17247,9 @@ public class QueryCallSessionParticipantStatsTimelineResponse public string CallSessionID { get; set; } [JsonPropertyName("call_type")] public string CallType { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("user_id")] @@ -12219,6 +17268,9 @@ public class QueryCallStatsMapResponse public string CallSessionID { get; set; } [JsonPropertyName("call_type")] public string CallType { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("counts")] @@ -12251,14 +17303,23 @@ public class QueryCallStatsRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } } public class QueryCallStatsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("reports")] @@ -12277,14 +17338,23 @@ public class QueryCallsRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } } public class QueryCallsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("calls")] @@ -12313,6 +17383,9 @@ public class QueryCampaignsRequest public class QueryCampaignsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("campaigns")] @@ -12325,24 +17398,51 @@ public class QueryCampaignsResponse public class QueryChannelsRequest { + /// + /// Number of channels to limit + /// [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Number of members to limit + /// [JsonPropertyName("member_limit")] public int? MemberLimit { get; set; } + /// + /// Number of messages to limit + /// [JsonPropertyName("message_limit")] public int? MessageLimit { get; set; } + /// + /// Channel pagination offset + /// [JsonPropertyName("offset")] public int? Offset { get; set; } + /// + /// ID of a predefined filter to use instead of filter_conditions + /// [JsonPropertyName("predefined_filter")] public string? PredefinedFilter { get; set; } + /// + /// Whether to update channel state or not + /// [JsonPropertyName("state")] public bool? State { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// List of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } + /// + /// Values to interpolate into the predefined filter template + /// [JsonPropertyName("filter_values")] public object FilterValues { get; set; } [JsonPropertyName("sort_values")] @@ -12353,8 +17453,14 @@ public class QueryChannelsRequest public class QueryChannelsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of channels + /// [JsonPropertyName("channels")] public List Channels { get; set; } [JsonPropertyName("predefined_filter")] @@ -12371,8 +17477,14 @@ public class QueryCollectionsRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -12383,10 +17495,19 @@ public class QueryCollectionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of collections matching the query + /// [JsonPropertyName("collections")] public List Collections { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } @@ -12407,6 +17528,9 @@ public class QueryCommentReactionsRequest public class QueryCommentReactionsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("reactions")] @@ -12419,16 +17543,28 @@ public class QueryCommentReactionsResponse public class QueryCommentsRequest { + /// + /// MongoDB-style filter for querying comments + /// [JsonPropertyName("filter")] public object Filter { get; set; } + /// + /// Returns the comment with the specified ID along with surrounding comments for context + /// [JsonPropertyName("id_around")] public string? IDAround { get; set; } + /// + /// Maximum number of comments to return + /// [JsonPropertyName("limit")] public int? Limit { get; set; } [JsonPropertyName("next")] public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// first (oldest), last (newest) or top. One of: first, last, top, best, controversial + /// [JsonPropertyName("sort")] public string? Sort { get; set; } [JsonPropertyName("user_id")] @@ -12441,10 +17577,19 @@ public class QueryCommentsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of comments matching the query + /// [JsonPropertyName("comments")] public List Comments { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } @@ -12459,8 +17604,14 @@ public class QueryDraftsRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -12469,8 +17620,14 @@ public class QueryDraftsRequest public class QueryDraftsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Drafts + /// [JsonPropertyName("drafts")] public List Drafts { get; set; } [JsonPropertyName("next")] @@ -12487,8 +17644,14 @@ public class QueryFeedMembersRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Sort parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter parameters for the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12497,20 +17660,38 @@ public class QueryFeedMembersResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of feed members + /// [JsonPropertyName("members")] public List Members { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } public class QueryFeedModerationTemplate { + /// + /// When the template was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Name of the moderation template + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// When the template was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("config")] @@ -12521,6 +17702,9 @@ public class QueryFeedModerationTemplatesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of moderation templates + /// [JsonPropertyName("templates")] public List Templates { get; set; } } @@ -12535,10 +17719,19 @@ public class QueryFeedsRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Whether to subscribe to realtime updates + /// [JsonPropertyName("watch")] public bool? Watch { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12547,18 +17740,33 @@ public class QueryFeedsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of feeds matching the query + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } public class QueryFeedsUsageStatsRequest { + /// + /// Start date in YYYY-MM-DD format (optional, defaults to 30 days ago) + /// [JsonPropertyName("from")] public string? From { get; set; } + /// + /// End date in YYYY-MM-DD format (optional, defaults to today) + /// [JsonPropertyName("to")] public string? To { get; set; } } @@ -12585,8 +17793,14 @@ public class QueryFollowsRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12595,22 +17809,43 @@ public class QueryFollowsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of follow relationships matching the query + /// [JsonPropertyName("follows")] public List Follows { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } public class QueryFutureChannelBansPayload { + /// + /// Whether to exclude expired bans or not + /// [JsonPropertyName("exclude_expired_bans")] public bool? ExcludeExpiredBans { get; set; } + /// + /// Number of records to return + /// [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Number of records to offset + /// [JsonPropertyName("offset")] public int? Offset { get; set; } + /// + /// Filter by the target user ID. For server-side requests only. + /// [JsonPropertyName("target_user_id")] public string? TargetUserID { get; set; } [JsonPropertyName("user_id")] @@ -12621,8 +17856,14 @@ public class QueryFutureChannelBansPayload public class QueryFutureChannelBansResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of found future channel bans + /// [JsonPropertyName("bans")] public List Bans { get; set; } } @@ -12631,6 +17872,9 @@ public class QueryMembersPayload { [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } [JsonPropertyName("id")] @@ -12643,6 +17887,9 @@ public class QueryMembersPayload public string? UserID { get; set; } [JsonPropertyName("members")] public List Members { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } [JsonPropertyName("user")] @@ -12657,8 +17904,14 @@ public class QueryMembershipLevelsRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12669,8 +17922,14 @@ public class QueryMembershipLevelsResponse public string Duration { get; set; } [JsonPropertyName("membership_levels")] public List MembershipLevels { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } @@ -12681,12 +17940,21 @@ public class QueryMessageFlagsPayload public int? Limit { get; set; } [JsonPropertyName("offset")] public int? Offset { get; set; } + /// + /// Whether to include deleted messages in the results + /// [JsonPropertyName("show_deleted_messages")] public bool? ShowDeletedMessages { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } [JsonPropertyName("user")] @@ -12695,14 +17963,23 @@ public class QueryMessageFlagsPayload public class QueryMessageFlagsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// The flags that match the query + /// [JsonPropertyName("flags")] public List Flags { get; set; } } public class QueryMessageHistoryRequest { + /// + /// Filter to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("limit")] @@ -12711,14 +17988,23 @@ public class QueryMessageHistoryRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } } public class QueryMessageHistoryResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Message history entries + /// [JsonPropertyName("message_history")] public List MessageHistory { get; set; } [JsonPropertyName("next")] @@ -12737,8 +18023,14 @@ public class QueryModerationConfigsRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sorting parameters for the results + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions for moderation configs + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -12749,6 +18041,9 @@ public class QueryModerationConfigsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of moderation configurations + /// [JsonPropertyName("configs")] public List Configs { get; set; } [JsonPropertyName("next")] @@ -12773,6 +18068,9 @@ public class QueryModerationFlagsRequest public class QueryModerationFlagsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("flags")] @@ -12793,8 +18091,14 @@ public class QueryModerationLogsRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sorting parameters for the results + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions for moderation logs + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -12805,6 +18109,9 @@ public class QueryModerationLogsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of moderation action logs + /// [JsonPropertyName("logs")] public List Logs { get; set; } [JsonPropertyName("next")] @@ -12823,8 +18130,14 @@ public class QueryModerationRulesRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sorting parameters for the results + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions for moderation rules + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -12835,18 +18148,39 @@ public class QueryModerationRulesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// AI image label definitions with metadata for dashboard rendering + /// [JsonPropertyName("ai_image_label_definitions")] public List AiImageLabelDefinitions { get; set; } + /// + /// Available harm labels for closed caption rules + /// [JsonPropertyName("closed_caption_labels")] public List ClosedCaptionLabels { get; set; } + /// + /// Deprecated: use keyframe_label_classifications instead. Available L1 harm labels for keyframe rules + /// [JsonPropertyName("keyframe_labels")] public List KeyframeLabels { get; set; } + /// + /// List of moderation rules + /// [JsonPropertyName("rules")] public List Rules { get; set; } + /// + /// Stream L1 to leaf-level label name mapping for AI image rules + /// [JsonPropertyName("ai_image_subclassifications")] public Dictionary> AiImageSubclassifications { get; set; } + /// + /// Default LLM label descriptions + /// [JsonPropertyName("default_llm_labels")] public Dictionary DefaultLlmLabels { get; set; } + /// + /// L1 to L2 mapping of keyframe harm label classifications + /// [JsonPropertyName("keyframe_label_classifications")] public Dictionary> KeyframeLabelClassifications { get; set; } [JsonPropertyName("next")] @@ -12865,8 +18199,14 @@ public class QueryPinnedActivitiesRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Sorting parameters for the query + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filters to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12875,10 +18215,19 @@ public class QueryPinnedActivitiesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of pinned activities matching the query + /// [JsonPropertyName("pinned_activities")] public List PinnedActivities { get; set; } + /// + /// Cursor for next page + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Cursor for previous page + /// [JsonPropertyName("prev")] public string? Prev { get; set; } } @@ -12891,8 +18240,14 @@ public class QueryPollVotesRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } @@ -12905,16 +18260,28 @@ public class QueryPollsRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } } public class QueryPollsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Polls data returned by the query + /// [JsonPropertyName("polls")] public List Polls { get; set; } [JsonPropertyName("next")] @@ -12943,6 +18310,9 @@ public class QueryReactionsRequest public class QueryReactionsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("reactions")] @@ -12963,8 +18333,14 @@ public class QueryRemindersRequest public string? Prev { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -12973,8 +18349,14 @@ public class QueryRemindersRequest public class QueryRemindersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// MessageReminders data returned by the query + /// [JsonPropertyName("reminders")] public List Reminders { get; set; } [JsonPropertyName("next")] @@ -12987,22 +18369,40 @@ public class QueryReviewQueueRequest { [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Number of items to lock (1-25) + /// [JsonPropertyName("lock_count")] public int? LockCount { get; set; } + /// + /// Duration for which items should be locked + /// [JsonPropertyName("lock_duration")] public int? LockDuration { get; set; } + /// + /// Whether to lock items for review (true), unlock items (false), or just fetch (nil) + /// [JsonPropertyName("lock_items")] public bool? LockItems { get; set; } [JsonPropertyName("next")] public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Whether to return only statistics + /// [JsonPropertyName("stats_only")] public bool? StatsOnly { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sorting parameters for the results + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions for review queue items + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -13013,10 +18413,19 @@ public class QueryReviewQueueResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of review queue items + /// [JsonPropertyName("items")] public List Items { get; set; } + /// + /// Configuration for moderation actions + /// [JsonPropertyName("action_config")] public Dictionary> ActionConfig { get; set; } + /// + /// Statistics about the review queue + /// [JsonPropertyName("stats")] public object Stats { get; set; } [JsonPropertyName("next")] @@ -13029,10 +18438,19 @@ public class QueryReviewQueueResponse public class QuerySegmentTargetsRequest { + /// + /// Limit + /// [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Next + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Prev + /// [JsonPropertyName("prev")] public string? Prev { get; set; } [JsonPropertyName("Sort")] @@ -13043,8 +18461,14 @@ public class QuerySegmentTargetsRequest public class QuerySegmentTargetsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Targets + /// [JsonPropertyName("targets")] public List Targets { get; set; } [JsonPropertyName("next")] @@ -13055,6 +18479,9 @@ public class QuerySegmentTargetsResponse public class QuerySegmentsRequest { + /// + /// Filter to apply to the query + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("limit")] @@ -13063,14 +18490,23 @@ public class QuerySegmentsRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } } public class QuerySegmentsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Segments + /// [JsonPropertyName("segments")] public List Segments { get; set; } [JsonPropertyName("next")] @@ -13081,24 +18517,48 @@ public class QuerySegmentsResponse public class QueryTeamUsageStatsRequest { + /// + /// End date in YYYY-MM-DD format. Used with start_date for custom date range. Returns daily breakdown. + /// [JsonPropertyName("end_date")] public string? EndDate { get; set; } + /// + /// Maximum number of teams to return per page (default: 30, max: 30) + /// [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Month in YYYY-MM format (e.g., '2026-01'). Mutually exclusive with start_date/end_date. Returns aggregated monthly values. + /// [JsonPropertyName("month")] public string? Month { get; set; } + /// + /// Cursor for pagination to fetch next page of teams + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Start date in YYYY-MM-DD format. Used with end_date for custom date range. Returns daily breakdown. + /// [JsonPropertyName("start_date")] public string? StartDate { get; set; } } public class QueryTeamUsageStatsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Array of team usage statistics + /// [JsonPropertyName("teams")] public List Teams { get; set; } + /// + /// Cursor for pagination to fetch next page + /// [JsonPropertyName("next")] public string? Next { get; set; } } @@ -13111,16 +18571,28 @@ public class QueryThreadsRequest public int? MemberLimit { get; set; } [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Limit the number of participants returned per each thread + /// [JsonPropertyName("participant_limit")] public int? ParticipantLimit { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Limit the number of replies returned per each thread + /// [JsonPropertyName("reply_limit")] public int? ReplyLimit { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Sort conditions to apply to threads + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions to apply to threads + /// [JsonPropertyName("filter")] public object Filter { get; set; } [JsonPropertyName("user")] @@ -13129,8 +18601,14 @@ public class QueryThreadsRequest public class QueryThreadsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of enriched thread states + /// [JsonPropertyName("threads")] public List Threads { get; set; } [JsonPropertyName("next")] @@ -13147,14 +18625,23 @@ public class QueryUserFeedbackRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } } public class QueryUserFeedbackResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("user_feedback")] @@ -13167,6 +18654,9 @@ public class QueryUserFeedbackResponse public class QueryUsersPayload { + /// + /// Filter conditions to apply to the query + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } [JsonPropertyName("include_deactivated_users")] @@ -13179,6 +18669,9 @@ public class QueryUsersPayload public bool? Presence { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of sort parameters + /// [JsonPropertyName("sort")] public List Sort { get; set; } [JsonPropertyName("user")] @@ -13187,20 +18680,38 @@ public class QueryUsersPayload public class QueryUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Array of users as result of filters applied. + /// [JsonPropertyName("users")] public List Users { get; set; } } public class RTMPBroadcastRequest { + /// + /// Name identifier for RTMP broadcast, must be unique in call + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// URL for the RTMP server to send the call to + /// [JsonPropertyName("stream_url")] public string StreamUrl { get; set; } + /// + /// If provided, will override the call's RTMP settings quality. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 + /// [JsonPropertyName("quality")] public string? Quality { get; set; } + /// + /// If provided, will be appended at the end of stream_url + /// [JsonPropertyName("stream_key")] public string? StreamKey { get; set; } [JsonPropertyName("layout")] @@ -13237,8 +18748,14 @@ public class RTMPSettings public class RTMPSettingsRequest { + /// + /// Whether RTMP broadcasting is enabled + /// [JsonPropertyName("enabled")] public bool? Enabled { get; set; } + /// + /// Resolution to set for the RTMP stream. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 + /// [JsonPropertyName("quality")] public string? Quality { get; set; } [JsonPropertyName("layout")] @@ -13257,12 +18774,24 @@ public class RTMPSettingsResponse public class RankingConfig { + /// + /// Type of ranking algorithm. Required. One of: expression, interest + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Scoring formula. Required when type is 'expression' or 'interest' + /// [JsonPropertyName("score")] public string? Score { get; set; } + /// + /// Default values for ranking + /// [JsonPropertyName("defaults")] public object Defaults { get; set; } + /// + /// Decay functions configuration + /// [JsonPropertyName("functions")] public Dictionary Functions { get; set; } } @@ -13281,6 +18810,9 @@ public class RawRecordingResponse public class RawRecordingSettingsRequest { + /// + /// Recording mode. One of: available, disabled, auto-on + /// [JsonPropertyName("mode")] public string Mode { get; set; } } @@ -13331,30 +18863,57 @@ public class Reaction public class ReactionDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "reaction.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel containing the message + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel containing the message + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel containing the message + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("message_id")] public string? MessageID { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// The participants of the thread + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("channel_custom")] @@ -13369,42 +18928,102 @@ public class ReactionDeletedEvent public class ReactionGroupResponse { + /// + /// Count is the number of reactions of this type. + /// [JsonPropertyName("count")] public int Count { get; set; } + /// + /// FirstReactionAt is the time of the first reaction of this type. This is the same also if all reaction of this type are deleted, because if someone will react again with the same type, will be preserved the sorting. + /// [JsonPropertyName("first_reaction_at")] public DateTime FirstReactionAt { get; set; } + /// + /// LastReactionAt is the time of the last reaction of this type. + /// [JsonPropertyName("last_reaction_at")] public DateTime LastReactionAt { get; set; } + /// + /// SumScores is the sum of all scores of reactions of this type. Medium allows you to clap articles more than once and shows the sum of all claps from all users. For example, you can send `clap` x5 using `score: 5`. + /// [JsonPropertyName("sum_scores")] public int SumScores { get; set; } + /// + /// The most recent users who reacted with this type, ordered by most recent first. + /// + [JsonPropertyName("latest_reactions_by")] + public List LatestReactionsBy { get; set; } + } + + public class ReactionGroupUserResponse + { + /// + /// The time when the user reacted. + /// + [JsonPropertyName("created_at")] + public DateTime CreatedAt { get; set; } + /// + /// The ID of the user who reacted. + /// + [JsonPropertyName("user_id")] + public string UserID { get; set; } + [JsonPropertyName("user")] + public UserResponse? User { get; set; } } public class ReactionNewEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("channel")] public ChannelResponse Channel { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "reaction.new" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel containing the message + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel containing the message + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel containing the message + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("message_id")] public string? MessageID { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// The participants of the thread + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("channel_custom")] @@ -13419,12 +19038,24 @@ public class ReactionNewEvent public class ReactionRequest { + /// + /// The type of reaction (e.g. 'like', 'laugh', 'wow') + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime? CreatedAt { get; set; } + /// + /// Reaction score. If not specified reaction has score of 1 + /// [JsonPropertyName("score")] public int? Score { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime? UpdatedAt { get; set; } [JsonPropertyName("user_id")] @@ -13437,18 +19068,39 @@ public class ReactionRequest public class ReactionResponse { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Message ID + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// Score of the reaction + /// [JsonPropertyName("score")] public int Score { get; set; } + /// + /// Type of reaction + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// User ID + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] @@ -13457,6 +19109,9 @@ public class ReactionResponse public class ReactionUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("message_id")] @@ -13467,20 +19122,41 @@ public class ReactionUpdatedEvent public object Custom { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// The type of event: "reaction.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel containing the message + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } + /// + /// The number of members in the channel + /// [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } + /// + /// The number of messages in the channel + /// [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel containing the message + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel containing the message + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team ID + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -13493,16 +19169,28 @@ public class ReactionUpdatedEvent public class ReactivateUserRequest { + /// + /// ID of the user who's reactivating the user + /// [JsonPropertyName("created_by_id")] public string? CreatedByID { get; set; } + /// + /// Set this field to put new name for the user + /// [JsonPropertyName("name")] public string? Name { get; set; } + /// + /// Restore previously deleted messages + /// [JsonPropertyName("restore_messages")] public bool? RestoreMessages { get; set; } } public class ReactivateUserResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("user")] @@ -13511,18 +19199,30 @@ public class ReactivateUserResponse public class ReactivateUsersRequest { + /// + /// User IDs to reactivate + /// [JsonPropertyName("user_ids")] public List UserIds { get; set; } + /// + /// ID of the user who's reactivating the users + /// [JsonPropertyName("created_by_id")] public string? CreatedByID { get; set; } [JsonPropertyName("restore_channels")] public bool? RestoreChannels { get; set; } + /// + /// Restore previously deleted messages + /// [JsonPropertyName("restore_messages")] public bool? RestoreMessages { get; set; } } public class ReactivateUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("task_id")] @@ -13533,6 +19233,9 @@ public class ReadCollectionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of collections matching the references + /// [JsonPropertyName("collections")] public List Collections { get; set; } } @@ -13573,10 +19276,19 @@ public class RecordSettings public class RecordSettingsRequest { + /// + /// Recording mode. One of: available, disabled, auto-on + /// [JsonPropertyName("mode")] public string Mode { get; set; } + /// + /// Whether to record audio only + /// [JsonPropertyName("audio_only")] public bool? AudioOnly { get; set; } + /// + /// Recording quality. One of: 360p, 480p, 720p, 1080p, 1440p, portrait-360x640, portrait-480x854, portrait-720x1280, portrait-1080x1920, portrait-1440x2560 + /// [JsonPropertyName("quality")] public string? Quality { get; set; } [JsonPropertyName("layout")] @@ -13597,6 +19309,9 @@ public class RecordSettingsResponse public class RejectAppealRequestPayload { + /// + /// Reason for rejecting the appeal + /// [JsonPropertyName("decision_reason")] public string DecisionReason { get; set; } } @@ -13619,8 +19334,14 @@ public class RejectFeedMemberInviteResponse public class RejectFollowRequest { + /// + /// Fully qualified ID of the source feed + /// [JsonPropertyName("source")] public string Source { get; set; } + /// + /// Fully qualified ID of the target feed + /// [JsonPropertyName("target")] public string Target { get; set; } } @@ -13635,18 +19356,36 @@ public class RejectFollowResponse public class ReminderCreatedEvent { + /// + /// The CID of the Channel for which the reminder was created + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the message for which the reminder was created + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// The ID of the user for whom the reminder was created + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "reminder.created" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the parent message, if the reminder is for a thread message + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } [JsonPropertyName("received_at")] @@ -13657,18 +19396,36 @@ public class ReminderCreatedEvent public class ReminderDeletedEvent { + /// + /// The CID of the Channel for which the reminder was created + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the message for which the reminder was created + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// The ID of the user for whom the reminder was created + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "reminder.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the parent message, if the reminder is for a thread message + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } [JsonPropertyName("received_at")] @@ -13679,16 +19436,31 @@ public class ReminderDeletedEvent public class ReminderNotificationEvent { + /// + /// The CID of the Channel for which the reminder was created + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the message for which the reminder was created + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// The ID of the user for whom the reminder was created + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "notification.reminder_due" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("parent_id")] @@ -13723,18 +19495,36 @@ public class ReminderResponseData public class ReminderUpdatedEvent { + /// + /// The CID of the Channel for which the reminder was created + /// [JsonPropertyName("cid")] public string Cid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the message for which the reminder was created + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// The ID of the user for whom the reminder was created + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "reminder.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the parent message, if the reminder is for a thread message + /// [JsonPropertyName("parent_id")] public string? ParentID { get; set; } [JsonPropertyName("received_at")] @@ -13745,6 +19535,9 @@ public class ReminderUpdatedEvent public class RemoveUserGroupMembersRequest { + /// + /// List of user IDs to remove + /// [JsonPropertyName("member_ids")] public List MemberIds { get; set; } [JsonPropertyName("team_id")] @@ -13761,12 +19554,24 @@ public class RemoveUserGroupMembersResponse public class RepliesMeta { + /// + /// True if the subtree was cut because the requested depth was reached. + /// [JsonPropertyName("depth_truncated")] public bool DepthTruncated { get; set; } + /// + /// True if more siblings exist in the database. + /// [JsonPropertyName("has_more")] public bool HasMore { get; set; } + /// + /// Number of unread siblings that match current filters. + /// [JsonPropertyName("remaining")] public int Remaining { get; set; } + /// + /// Opaque cursor to request the next page of siblings. + /// [JsonPropertyName("next_cursor")] public string? NextCursor { get; set; } } @@ -13805,42 +19610,81 @@ public class ResolutionMetricsTimeSeries public class ResolveSipAuthRequest { + /// + /// SIP caller number + /// [JsonPropertyName("sip_caller_number")] public string SipCallerNumber { get; set; } + /// + /// SIP trunk number to look up + /// [JsonPropertyName("sip_trunk_number")] public string SipTrunkNumber { get; set; } + /// + /// Host from the SIP From header + /// [JsonPropertyName("from_host")] public string? FromHost { get; set; } + /// + /// Transport-layer source IP address of the SIP request + /// [JsonPropertyName("source_ip")] public string? SourceIp { get; set; } } public class ResolveSipAuthResponse { + /// + /// Authentication result: password, accept, or no_trunk_found + /// [JsonPropertyName("auth_result")] public string AuthResult { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Password for digest authentication (when auth_result is password) + /// [JsonPropertyName("password")] public string? Password { get; set; } + /// + /// ID of the matched SIP trunk + /// [JsonPropertyName("trunk_id")] public string? TrunkID { get; set; } + /// + /// Username for digest authentication (when auth_result is password) + /// [JsonPropertyName("username")] public string? Username { get; set; } } public class ResolveSipInboundRequest { + /// + /// SIP caller number + /// [JsonPropertyName("sip_caller_number")] public string SipCallerNumber { get; set; } + /// + /// SIP trunk number to resolve + /// [JsonPropertyName("sip_trunk_number")] public string SipTrunkNumber { get; set; } + /// + /// Optional routing number for routing number-based call routing (10 digits) + /// [JsonPropertyName("routing_number")] public string? RoutingNumber { get; set; } + /// + /// Optional pre-authenticated trunk ID (from PreAuth no-auth flow) + /// [JsonPropertyName("trunk_id")] public string? TrunkID { get; set; } [JsonPropertyName("challenge")] public SIPChallengeRequest? Challenge { get; set; } + /// + /// Optional SIP headers as key-value pairs + /// [JsonPropertyName("sip_headers")] public Dictionary SipHeaders { get; set; } } @@ -13859,12 +19703,18 @@ public class ResolveSipInboundResponse public class Response { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class RestoreActionRequestPayload { + /// + /// Reason for the appeal decision + /// [JsonPropertyName("decision_reason")] public string? DecisionReason { get; set; } } @@ -13885,6 +19735,24 @@ public class RestoreActivityResponse public ActivityResponse Activity { get; set; } } + public class RestoreCommentRequest + { + [JsonPropertyName("user_id")] + public string? UserID { get; set; } + [JsonPropertyName("user")] + public UserRequest? User { get; set; } + } + + public class RestoreCommentResponse + { + [JsonPropertyName("duration")] + public string Duration { get; set; } + [JsonPropertyName("activity")] + public ActivityResponse Activity { get; set; } + [JsonPropertyName("comment")] + public CommentResponse Comment { get; set; } + } + public class RestoreFeedGroupRequest { } @@ -13903,40 +19771,28 @@ public class RestoreUsersRequest public List UserIds { get; set; } } - public class RetentionCleanupRun + public class RetentionPolicy { [JsonPropertyName("app_pk")] public int AppPk { get; set; } - [JsonPropertyName("date")] - public DateTime Date { get; set; } + [JsonPropertyName("enabled_at")] + public DateTime EnabledAt { get; set; } [JsonPropertyName("policy")] public string Policy { get; set; } - [JsonPropertyName("started_at")] - public DateTime StartedAt { get; set; } - [JsonPropertyName("status")] - public string Status { get; set; } - [JsonPropertyName("stats")] - public RunStats Stats { get; set; } - [JsonPropertyName("cursor_id")] - public string? CursorID { get; set; } - [JsonPropertyName("cursor_ts")] - public DateTime? CursorTs { get; set; } - [JsonPropertyName("error")] - public string? Error { get; set; } - [JsonPropertyName("finished_at")] - public DateTime? FinishedAt { get; set; } + [JsonPropertyName("config")] + public PolicyConfig Config { get; set; } } - public class RetentionPolicy + public class RetentionRunResponse { [JsonPropertyName("app_pk")] public int AppPk { get; set; } - [JsonPropertyName("enabled_at")] - public DateTime EnabledAt { get; set; } + [JsonPropertyName("date")] + public string Date { get; set; } [JsonPropertyName("policy")] public string Policy { get; set; } - [JsonPropertyName("config")] - public PolicyConfig Config { get; set; } + [JsonPropertyName("stats")] + public RunStats Stats { get; set; } } public class ReviewQueueItemNewEvent @@ -13949,6 +19805,9 @@ public class ReviewQueueItemNewEvent public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The flags associated with this review queue item + /// [JsonPropertyName("flags")] public List Flags { get; set; } [JsonPropertyName("action")] @@ -13959,46 +19818,115 @@ public class ReviewQueueItemNewEvent public class ReviewQueueItemResponse { + /// + /// AI-determined text severity + /// [JsonPropertyName("ai_text_severity")] public string AiTextSeverity { get; set; } + /// + /// When the item was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// ID of the entity being reviewed + /// [JsonPropertyName("entity_id")] public string EntityID { get; set; } + /// + /// Type of entity being reviewed + /// [JsonPropertyName("entity_type")] public string EntityType { get; set; } + /// + /// Whether the item has been escalated + /// + [JsonPropertyName("escalated")] + public bool Escalated { get; set; } [JsonPropertyName("flags_count")] public int FlagsCount { get; set; } + /// + /// Unique identifier of the review queue item + /// [JsonPropertyName("id")] public string ID { get; set; } [JsonPropertyName("latest_moderator_action")] public string LatestModeratorAction { get; set; } + /// + /// Suggested moderation action + /// [JsonPropertyName("recommended_action")] public string RecommendedAction { get; set; } + /// + /// ID of the moderator who reviewed the item + /// [JsonPropertyName("reviewed_by")] public string ReviewedBy { get; set; } + /// + /// Severity level of the content + /// [JsonPropertyName("severity")] public int Severity { get; set; } + /// + /// Current status of the review + /// [JsonPropertyName("status")] public string Status { get; set; } + /// + /// When the item was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Moderation actions taken + /// [JsonPropertyName("actions")] public List Actions { get; set; } + /// + /// Associated ban records + /// [JsonPropertyName("bans")] public List Bans { get; set; } + /// + /// Associated flag records + /// [JsonPropertyName("flags")] public List Flags { get; set; } + /// + /// Detected languages in the content + /// [JsonPropertyName("languages")] public List Languages { get; set; } + /// + /// When the review was completed + /// [JsonPropertyName("completed_at")] public DateTime? CompletedAt { get; set; } [JsonPropertyName("config_key")] public string? ConfigKey { get; set; } + /// + /// ID of who created the entity + /// [JsonPropertyName("entity_creator_id")] public string? EntityCreatorID { get; set; } + /// + /// When the item was escalated + /// + [JsonPropertyName("escalated_at")] + public DateTime? EscalatedAt { get; set; } + /// + /// ID of the moderator who escalated the item + /// + [JsonPropertyName("escalated_by")] + public string? EscalatedBy { get; set; } + /// + /// When the item was reviewed + /// [JsonPropertyName("reviewed_at")] public DateTime? ReviewedAt { get; set; } + /// + /// Teams associated with this item + /// [JsonPropertyName("teams")] public List Teams { get; set; } [JsonPropertyName("activity")] @@ -14011,14 +19939,16 @@ public class ReviewQueueItemResponse public CallResponse? Call { get; set; } [JsonPropertyName("entity_creator")] public EntityCreatorResponse? EntityCreator { get; set; } + [JsonPropertyName("escalation_metadata")] + public EscalationMetadata? EscalationMetadata { get; set; } [JsonPropertyName("feeds_v2_activity")] public EnrichedActivity? FeedsV2Activity { get; set; } [JsonPropertyName("feeds_v2_reaction")] public Reaction? FeedsV2Reaction { get; set; } [JsonPropertyName("feeds_v3_activity")] - public ActivityResponse? FeedsV3Activity { get; set; } + public FeedsV3ActivityResponse? FeedsV3Activity { get; set; } [JsonPropertyName("feeds_v3_comment")] - public CommentResponse? FeedsV3Comment { get; set; } + public FeedsV3CommentResponse? FeedsV3Comment { get; set; } [JsonPropertyName("message")] public MessageResponse? Message { get; set; } [JsonPropertyName("moderation_payload")] @@ -14037,6 +19967,9 @@ public class ReviewQueueItemUpdatedEvent public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The flags associated with this review queue item + /// [JsonPropertyName("flags")] public List Flags { get; set; } [JsonPropertyName("action")] @@ -14047,8 +19980,14 @@ public class ReviewQueueItemUpdatedEvent public class RingCallRequest { + /// + /// Indicate if call should be video + /// [JsonPropertyName("video")] public bool? Video { get; set; } + /// + /// Members that should receive the ring. If no ids are provided, all call members who are not already in the call will receive ring notifications. + /// [JsonPropertyName("members_ids")] public List MembersIds { get; set; } } @@ -14057,6 +19996,9 @@ public class RingCallResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of members ringing notification was sent to + /// [JsonPropertyName("members_ids")] public List MembersIds { get; set; } } @@ -14073,10 +20015,19 @@ public class RingSettings public class RingSettingsRequest { + /// + /// When none of the callees accept a ring call in this time a rejection will be sent by the caller with reason 'timeout' by the SDKs + /// [JsonPropertyName("auto_cancel_timeout_ms")] public int AutoCancelTimeoutMs { get; set; } + /// + /// When a callee is online but doesn't answer a ring call in this time a rejection will be sent with reason 'timeout' by the SDKs + /// [JsonPropertyName("incoming_call_timeout_ms")] public int IncomingCallTimeoutMs { get; set; } + /// + /// When a callee doesn't accept or reject a ring call in this time a missed call event will be sent + /// [JsonPropertyName("missed_call_timeout_ms")] public int? MissedCallTimeoutMs { get; set; } } @@ -14093,14 +20044,29 @@ public class RingSettingsResponse public class Role { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Whether this is a custom role or built-in + /// [JsonPropertyName("custom")] public bool Custom { get; set; } + /// + /// Unique role name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// List of scopes where this role is currently present. `.app` means that role is present in app-level grants + /// [JsonPropertyName("scopes")] public List Scopes { get; set; } } @@ -14211,12 +20177,24 @@ public class RunStats public class S3Request { + /// + /// The AWS region where the bucket is hosted + /// [JsonPropertyName("s3_region")] public string S3Region { get; set; } + /// + /// The AWS API key. To use Amazon S3 as your storage provider, you have two authentication options: IAM role or API key. If you do not specify the `s3_api_key` parameter, Stream will use IAM role authentication. In that case make sure to have the correct IAM role configured for your application. + /// [JsonPropertyName("s3_api_key")] public string? S3APIKey { get; set; } + /// + /// The custom endpoint for S3. If you want to use a custom endpoint, you must also provide the `s3_api_key` and `s3_secret` parameters. + /// [JsonPropertyName("s3_custom_endpoint_url")] public string? S3CustomEndpointUrl { get; set; } + /// + /// The AWS API Secret + /// [JsonPropertyName("s3_secret")] public string? S3Secret { get; set; } } @@ -14249,122 +20227,242 @@ public class SFULocationResponse public class SIPCallConfigsRequest { + /// + /// Custom data associated with the call + /// [JsonPropertyName("custom_data")] public object CustomData { get; set; } } public class SIPCallConfigsResponse { + /// + /// Custom data associated with the call + /// [JsonPropertyName("custom_data")] public object CustomData { get; set; } } public class SIPCallerConfigsRequest { + /// + /// Unique identifier for the caller (handlebars template) + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Custom data associated with the caller (values are handlebars templates) + /// [JsonPropertyName("custom_data")] public object CustomData { get; set; } } public class SIPCallerConfigsResponse { + /// + /// Unique identifier for the caller + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Custom data associated with the caller + /// [JsonPropertyName("custom_data")] public object CustomData { get; set; } } public class SIPChallengeRequest { + /// + /// Deprecated: A1 hash for backward compatibility + /// [JsonPropertyName("a1")] public string? A1 { get; set; } + /// + /// Hash algorithm (e.g., MD5, SHA-256) + /// [JsonPropertyName("algorithm")] public string? Algorithm { get; set; } + /// + /// Character set + /// [JsonPropertyName("charset")] public string? Charset { get; set; } + /// + /// Client nonce for qop=auth + /// [JsonPropertyName("cnonce")] public string? Cnonce { get; set; } + /// + /// SIP method (e.g., INVITE) + /// [JsonPropertyName("method")] public string? Method { get; set; } + /// + /// Nonce count for qop=auth + /// [JsonPropertyName("nc")] public string? Nc { get; set; } + /// + /// Server nonce + /// [JsonPropertyName("nonce")] public string? Nonce { get; set; } + /// + /// Opaque value + /// [JsonPropertyName("opaque")] public string? Opaque { get; set; } + /// + /// Authentication realm + /// [JsonPropertyName("realm")] public string? Realm { get; set; } + /// + /// Digest response hash from client + /// [JsonPropertyName("response")] public string? Response { get; set; } + /// + /// Whether the nonce is stale + /// [JsonPropertyName("stale")] public bool? Stale { get; set; } + /// + /// Request URI + /// [JsonPropertyName("uri")] public string? Uri { get; set; } + /// + /// Whether to hash the username + /// [JsonPropertyName("userhash")] public bool? Userhash { get; set; } + /// + /// Username for authentication + /// [JsonPropertyName("username")] public string? Username { get; set; } + /// + /// Domain list + /// [JsonPropertyName("domain")] public List Domain { get; set; } + /// + /// Quality of protection options + /// [JsonPropertyName("qop")] public List Qop { get; set; } } public class SIPDirectRoutingRuleCallConfigsRequest { + /// + /// ID of the call (handlebars template) + /// [JsonPropertyName("call_id")] public string CallID { get; set; } + /// + /// Type of the call + /// [JsonPropertyName("call_type")] public string CallType { get; set; } } public class SIPDirectRoutingRuleCallConfigsResponse { + /// + /// ID of the call + /// [JsonPropertyName("call_id")] public string CallID { get; set; } + /// + /// Type of the call + /// [JsonPropertyName("call_type")] public string CallType { get; set; } } public class SIPInboundRoutingRulePinConfigsRequest { + /// + /// Optional webhook URL for custom PIN handling + /// [JsonPropertyName("custom_webhook_url")] public string? CustomWebhookUrl { get; set; } + /// + /// Prompt message for failed PIN attempts + /// [JsonPropertyName("pin_failed_attempt_prompt")] public string? PinFailedAttemptPrompt { get; set; } + /// + /// Prompt message for hangup after PIN input + /// [JsonPropertyName("pin_hangup_prompt")] public string? PinHangupPrompt { get; set; } + /// + /// Prompt message for PIN input + /// [JsonPropertyName("pin_prompt")] public string? PinPrompt { get; set; } + /// + /// Prompt message for successful PIN input + /// [JsonPropertyName("pin_success_prompt")] public string? PinSuccessPrompt { get; set; } } public class SIPInboundRoutingRulePinConfigsResponse { + /// + /// Optional webhook URL for custom PIN handling + /// [JsonPropertyName("custom_webhook_url")] public string? CustomWebhookUrl { get; set; } + /// + /// Prompt message for failed PIN attempts + /// [JsonPropertyName("pin_failed_attempt_prompt")] public string? PinFailedAttemptPrompt { get; set; } + /// + /// Prompt message for hangup after PIN input + /// [JsonPropertyName("pin_hangup_prompt")] public string? PinHangupPrompt { get; set; } + /// + /// Prompt message for PIN input + /// [JsonPropertyName("pin_prompt")] public string? PinPrompt { get; set; } + /// + /// Prompt message for successful PIN input + /// [JsonPropertyName("pin_success_prompt")] public string? PinSuccessPrompt { get; set; } } public class SIPInboundRoutingRuleRequest { + /// + /// Name of the SIP Inbound Routing Rule + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// List of SIP trunk IDs + /// [JsonPropertyName("trunk_ids")] public List TrunkIds { get; set; } [JsonPropertyName("caller_configs")] public SIPCallerConfigsRequest CallerConfigs { get; set; } + /// + /// List of called numbers + /// [JsonPropertyName("called_numbers")] public List CalledNumbers { get; set; } + /// + /// List of caller numbers (optional) + /// [JsonPropertyName("caller_numbers")] public List CallerNumbers { get; set; } [JsonPropertyName("call_configs")] @@ -14379,20 +20477,41 @@ public class SIPInboundRoutingRuleRequest public class SIPInboundRoutingRuleResponse { + /// + /// Creation timestamp + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Unique identifier of the SIP Inbound Routing Rule + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Name of the SIP Inbound Routing Rule + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Last update timestamp + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// List of called numbers + /// [JsonPropertyName("called_numbers")] public List CalledNumbers { get; set; } + /// + /// List of SIP trunk IDs + /// [JsonPropertyName("trunk_ids")] public List TrunkIds { get; set; } + /// + /// List of caller numbers + /// [JsonPropertyName("caller_numbers")] public List CallerNumbers { get; set; } [JsonPropertyName("call_configs")] @@ -14409,46 +20528,97 @@ public class SIPInboundRoutingRuleResponse public class SIPPinProtectionConfigsRequest { + /// + /// Default PIN to use if there is no PIN set on the call object + /// [JsonPropertyName("default_pin")] public string? DefaultPin { get; set; } + /// + /// Whether PIN protection is enabled + /// [JsonPropertyName("enabled")] public bool? Enabled { get; set; } + /// + /// Maximum number of PIN attempts allowed + /// [JsonPropertyName("max_attempts")] public int? MaxAttempts { get; set; } + /// + /// Number of digits required for the PIN + /// [JsonPropertyName("required_pin_digits")] public int? RequiredPinDigits { get; set; } } public class SIPPinProtectionConfigsResponse { + /// + /// Whether PIN protection is enabled + /// [JsonPropertyName("enabled")] public bool Enabled { get; set; } + /// + /// Default PIN to use if there is no PIN set on the call object + /// [JsonPropertyName("default_pin")] public string? DefaultPin { get; set; } + /// + /// Maximum number of PIN attempts allowed + /// [JsonPropertyName("max_attempts")] public int? MaxAttempts { get; set; } + /// + /// Number of digits required for the PIN + /// [JsonPropertyName("required_pin_digits")] public int? RequiredPinDigits { get; set; } } public class SIPTrunkResponse { + /// + /// Creation timestamp + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique identifier for the SIP trunk + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Name of the SIP trunk + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Password for SIP trunk authentication + /// [JsonPropertyName("password")] public string Password { get; set; } + /// + /// Last update timestamp + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// The URI for the SIP trunk + /// [JsonPropertyName("uri")] public string Uri { get; set; } + /// + /// Username for SIP trunk authentication + /// [JsonPropertyName("username")] public string Username { get; set; } + /// + /// Allowed IPv4/IPv6 addresses or CIDR blocks + /// [JsonPropertyName("allowed_ips")] public List AllowedIps { get; set; } + /// + /// Phone numbers associated with this SIP trunk + /// [JsonPropertyName("numbers")] public List Numbers { get; set; } } @@ -14491,22 +20661,43 @@ public class ScreensharingSettingsResponse public class SearchPayload { + /// + /// Channel filter conditions + /// [JsonPropertyName("filter_conditions")] public object FilterConditions { get; set; } [JsonPropertyName("force_default_search")] public bool? ForceDefaultSearch { get; set; } [JsonPropertyName("force_sql_v2_backend")] public bool? ForceSqlV2Backend { get; set; } + /// + /// Number of messages to return + /// [JsonPropertyName("limit")] public int? Limit { get; set; } + /// + /// Pagination parameter. Cannot be used with non-zero offset. + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Pagination offset. Cannot be used with sort or next. + /// [JsonPropertyName("offset")] public int? Offset { get; set; } + /// + /// Search phrase + /// [JsonPropertyName("query")] public string? Query { get; set; } + /// + /// Sort parameters. Cannot be used with non-zero offset + /// [JsonPropertyName("sort")] public List Sort { get; set; } + /// + /// Message filter conditions + /// [JsonPropertyName("message_filter_conditions")] public object MessageFilterConditions { get; set; } [JsonPropertyName("message_options")] @@ -14515,12 +20706,24 @@ public class SearchPayload public class SearchResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Search results + /// [JsonPropertyName("results")] public List Results { get; set; } + /// + /// Value to pass to the next search query in order to paginate + /// [JsonPropertyName("next")] public string? Next { get; set; } + /// + /// Value that points to the previous page. Pass as the next value in a search query to paginate backwards + /// [JsonPropertyName("previous")] public string? Previous { get; set; } [JsonPropertyName("results_warning")] @@ -14639,18 +20842,33 @@ public class SearchUserGroupsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of matching user groups + /// [JsonPropertyName("user_groups")] public List UserGroups { get; set; } } public class SearchWarning { + /// + /// Code corresponding to the warning + /// [JsonPropertyName("warning_code")] public int WarningCode { get; set; } + /// + /// Description of the warning + /// [JsonPropertyName("warning_description")] public string WarningDescription { get; set; } + /// + /// Number of channels searched + /// [JsonPropertyName("channel_search_count")] public int? ChannelSearchCount { get; set; } + /// + /// Channel CIDs for the searched channels + /// [JsonPropertyName("channel_search_cids")] public List ChannelSearchCids { get; set; } } @@ -14733,6 +20951,9 @@ public class SendCallEventRequest public class SendCallEventResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -14791,10 +21012,16 @@ public class SendMessageRequest public class SendMessageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] public MessageResponse Message { get; set; } + /// + /// Pending message metadata + /// [JsonPropertyName("pending_message_metadata")] public Dictionary PendingMessageMetadata { get; set; } } @@ -14803,14 +21030,23 @@ public class SendReactionRequest { [JsonPropertyName("reaction")] public ReactionRequest Reaction { get; set; } + /// + /// Whether to replace all existing user reactions + /// [JsonPropertyName("enforce_unique")] public bool? EnforceUnique { get; set; } + /// + /// Skips any mobile push notifications + /// [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } } public class SendReactionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] @@ -14870,13 +21106,16 @@ public class SessionWarningResponse public class SetRetentionPolicyRequest { [JsonPropertyName("max_age_hours")] - public int? MaxAgeHours { get; set; } + public int MaxAgeHours { get; set; } [JsonPropertyName("policy")] - public string? Policy { get; set; } + public string Policy { get; set; } } public class SetRetentionPolicyResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("policy")] @@ -14885,6 +21124,9 @@ public class SetRetentionPolicyResponse public class ShadowBlockActionRequestPayload { + /// + /// Reason for shadow blocking + /// [JsonPropertyName("reason")] public string? Reason { get; set; } } @@ -14903,24 +21145,51 @@ public class SharedLocation public class SharedLocationResponse { + /// + /// Channel CID + /// [JsonPropertyName("channel_cid")] public string ChannelCid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Device ID that created the live location + /// [JsonPropertyName("created_by_device_id")] public string CreatedByDeviceID { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Latitude coordinate + /// [JsonPropertyName("latitude")] public double Latitude { get; set; } + /// + /// Longitude coordinate + /// [JsonPropertyName("longitude")] public double Longitude { get; set; } + /// + /// Message ID + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// User ID + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Time when the live location expires + /// [JsonPropertyName("end_at")] public DateTime? EndAt { get; set; } [JsonPropertyName("channel")] @@ -14973,6 +21242,9 @@ public class ShowChannelRequest public class ShowChannelResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -14983,34 +21255,67 @@ public class SingleFollowResponse public string Duration { get; set; } [JsonPropertyName("follow")] public FollowResponse Follow { get; set; } + /// + /// Whether a notification activity was successfully created + /// [JsonPropertyName("notification_created")] public bool? NotificationCreated { get; set; } } public class SipInboundCredentials { + /// + /// API key for the application + /// [JsonPropertyName("api_key")] public string APIKey { get; set; } + /// + /// ID of the call + /// [JsonPropertyName("call_id")] public string CallID { get; set; } + /// + /// Type of the call + /// [JsonPropertyName("call_type")] public string CallType { get; set; } + /// + /// Authentication token for the call + /// [JsonPropertyName("token")] public string Token { get; set; } + /// + /// User ID for the call + /// [JsonPropertyName("user_id")] public string UserID { get; set; } + /// + /// Custom data associated with the call + /// [JsonPropertyName("call_custom_data")] public object CallCustomData { get; set; } + /// + /// Custom data associated with the user + /// [JsonPropertyName("user_custom_data")] public object UserCustomData { get; set; } } public class SortParamRequest { + /// + /// Direction of sorting, 1 for Ascending, -1 for Descending, default is 1. One of: -1, 1 + /// [JsonPropertyName("direction")] public int? Direction { get; set; } + /// + /// Name of field to sort by + /// [JsonPropertyName("field")] public string? Field { get; set; } + /// + /// Type of field to sort by. Empty string or omitted means string type (default). One of: number, boolean + /// [JsonPropertyName("type")] public string? Type { get; set; } } @@ -15033,6 +21338,9 @@ public class StartCampaignRequest public class StartCampaignResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("campaign")] @@ -15043,10 +21351,19 @@ public class StartCampaignResponse public class StartClosedCaptionsRequest { + /// + /// Enable transcriptions along with closed captions + /// [JsonPropertyName("enable_transcription")] public bool? EnableTranscription { get; set; } + /// + /// Which external storage to use for transcriptions (only applicable if enable_transcription is true) + /// [JsonPropertyName("external_storage")] public string? ExternalStorage { get; set; } + /// + /// The spoken language in the call, if not provided the language defined in the transcription settings will be used. One of: auto, ar, bg, ca, cs, da, de, el, en, es, et, fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, ta, th, tl, tr, uk, zh + /// [JsonPropertyName("language")] public string? Language { get; set; } [JsonPropertyName("speech_segment_config")] @@ -15067,6 +21384,9 @@ public class StartFrameRecordingRequest public class StartFrameRecordingResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15079,18 +21399,27 @@ public class StartHLSBroadcastingResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// the URL of the HLS playlist + /// [JsonPropertyName("playlist_url")] public string PlaylistUrl { get; set; } } public class StartRTMPBroadcastsRequest { + /// + /// List of broadcasts to start + /// [JsonPropertyName("broadcasts")] public List Broadcasts { get; set; } } public class StartRTMPBroadcastsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15103,22 +21432,37 @@ public class StartRecordingRequest public class StartRecordingResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class StartTranscriptionRequest { + /// + /// Enable closed captions along with transcriptions + /// [JsonPropertyName("enable_closed_captions")] public bool? EnableClosedCaptions { get; set; } + /// + /// The spoken language in the call, if not provided the language defined in the transcription settings will be used. One of: auto, ar, bg, ca, cs, da, de, el, en, es, et, fi, fr, he, hi, hr, hu, id, it, ja, ko, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, ta, th, tl, tr, uk, zh + /// [JsonPropertyName("language")] public string? Language { get; set; } + /// + /// Store transcriptions in this external storage + /// [JsonPropertyName("transcription_external_storage")] public string? TranscriptionExternalStorage { get; set; } } public class StartTranscriptionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15129,6 +21473,9 @@ public class StopAllRTMPBroadcastsRequest public class StopAllRTMPBroadcastsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15145,6 +21492,9 @@ public class StopClosedCaptionsRequest public class StopClosedCaptionsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15155,6 +21505,9 @@ public class StopFrameRecordingRequest public class StopFrameRecordingResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15165,6 +21518,9 @@ public class StopHLSBroadcastingRequest public class StopHLSBroadcastingResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15203,6 +21559,9 @@ public class StopRTMPBroadcastsRequest public class StopRTMPBroadcastsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15213,6 +21572,9 @@ public class StopRecordingRequest public class StopRecordingResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15225,34 +21587,58 @@ public class StopTranscriptionRequest public class StopTranscriptionResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } public class StoriesConfig { + /// + /// Whether to skip already watched stories + /// [JsonPropertyName("skip_watched")] public bool? SkipWatched { get; set; } + /// + /// Whether to track watched status for stories + /// [JsonPropertyName("track_watched")] public bool? TrackWatched { get; set; } } public class StoriesFeedUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The ID of the feed + /// [JsonPropertyName("fid")] public string Fid { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "feeds.stories_feed.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("feed_visibility")] public string? FeedVisibility { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// Individual activities for stories feeds + /// [JsonPropertyName("activities")] public List Activities { get; set; } + /// + /// Aggregated activities for stories feeds + /// [JsonPropertyName("aggregated_activities")] public List AggregatedActivities { get; set; } [JsonPropertyName("user")] @@ -15261,10 +21647,19 @@ public class StoriesFeedUpdatedEvent public class SubmitActionRequest { + /// + /// Type of moderation action to perform. One of: mark_reviewed, delete_message, delete_activity, delete_comment, delete_reaction, ban, custom, unban, restore, delete_user, unblock, block, shadow_block, unmask, kick_user, end_call, escalate, de_escalate + /// [JsonPropertyName("action_type")] public string ActionType { get; set; } + /// + /// UUID of the appeal to act on (required for reject_appeal, optional for other actions) + /// [JsonPropertyName("appeal_id")] public string? AppealID { get; set; } + /// + /// UUID of the review queue item to act on + /// [JsonPropertyName("item_id")] public string? ItemID { get; set; } [JsonPropertyName("user_id")] @@ -15285,6 +21680,8 @@ public class SubmitActionRequest public DeleteReactionRequestPayload? DeleteReaction { get; set; } [JsonPropertyName("delete_user")] public DeleteUserRequestPayload? DeleteUser { get; set; } + [JsonPropertyName("escalate")] + public EscalatePayload? Escalate { get; set; } [JsonPropertyName("flag")] public FlagRequest? Flag { get; set; } [JsonPropertyName("mark_reviewed")] @@ -15371,6 +21768,9 @@ public class TargetResolution public class TeamUsageStats { + /// + /// Team identifier (empty string for users not assigned to any team) + /// [JsonPropertyName("team")] public string Team { get; set; } [JsonPropertyName("concurrent_connections")] @@ -15411,6 +21811,8 @@ public class TextContentParameters { [JsonPropertyName("contains_url")] public bool? ContainsUrl { get; set; } + [JsonPropertyName("label_operator")] + public string? LabelOperator { get; set; } [JsonPropertyName("severity")] public string? Severity { get; set; } [JsonPropertyName("blocklist_match")] @@ -15449,6 +21851,9 @@ public class ThreadParticipant public int AppPk { get; set; } [JsonPropertyName("channel_cid")] public string ChannelCid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("last_read_at")] @@ -15457,10 +21862,19 @@ public class ThreadParticipant public object Custom { get; set; } [JsonPropertyName("last_thread_message_at")] public DateTime? LastThreadMessageAt { get; set; } + /// + /// Left Thread At is the time when the user left the thread + /// [JsonPropertyName("left_thread_at")] public DateTime? LeftThreadAt { get; set; } + /// + /// Thead ID is unique string identifier of the thread + /// [JsonPropertyName("thread_id")] public string? ThreadID { get; set; } + /// + /// User ID is unique string identifier of the user + /// [JsonPropertyName("user_id")] public string? UserID { get; set; } [JsonPropertyName("user")] @@ -15469,30 +21883,69 @@ public class ThreadParticipant public class ThreadResponse { + /// + /// Active Participant Count + /// [JsonPropertyName("active_participant_count")] public int ActiveParticipantCount { get; set; } + /// + /// Channel CID + /// [JsonPropertyName("channel_cid")] public string ChannelCid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Created By User ID + /// [JsonPropertyName("created_by_user_id")] public string CreatedByUserID { get; set; } + /// + /// Parent Message ID + /// [JsonPropertyName("parent_message_id")] public string ParentMessageID { get; set; } + /// + /// Participant Count + /// [JsonPropertyName("participant_count")] public int ParticipantCount { get; set; } + /// + /// Title + /// [JsonPropertyName("title")] public string Title { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// Deleted At + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// Last Message At + /// [JsonPropertyName("last_message_at")] public DateTime? LastMessageAt { get; set; } + /// + /// Reply Count + /// [JsonPropertyName("reply_count")] public int? ReplyCount { get; set; } + /// + /// Thread Participants + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("channel")] @@ -15505,34 +21958,73 @@ public class ThreadResponse public class ThreadStateResponse { + /// + /// Active Participant Count + /// [JsonPropertyName("active_participant_count")] public int ActiveParticipantCount { get; set; } + /// + /// Channel CID + /// [JsonPropertyName("channel_cid")] public string ChannelCid { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Created By User ID + /// [JsonPropertyName("created_by_user_id")] public string CreatedByUserID { get; set; } + /// + /// Parent Message ID + /// [JsonPropertyName("parent_message_id")] public string ParentMessageID { get; set; } + /// + /// Participant Count + /// [JsonPropertyName("participant_count")] public int ParticipantCount { get; set; } + /// + /// Title + /// [JsonPropertyName("title")] public string Title { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("latest_replies")] public List LatestReplies { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// Deleted At + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } + /// + /// Last Message At + /// [JsonPropertyName("last_message_at")] public DateTime? LastMessageAt { get; set; } + /// + /// Reply Count + /// [JsonPropertyName("reply_count")] public int? ReplyCount { get; set; } [JsonPropertyName("read")] public List Read { get; set; } + /// + /// Thread Participants + /// [JsonPropertyName("thread_participants")] public List ThreadParticipants { get; set; } [JsonPropertyName("channel")] @@ -15585,6 +22077,9 @@ public class ThreadedCommentResponse public int ReplyCount { get; set; } [JsonPropertyName("score")] public int Score { get; set; } + /// + /// Status of the comment. One of: active, deleted, removed, hidden + /// [JsonPropertyName("status")] public string Status { get; set; } [JsonPropertyName("updated_at")] @@ -15611,6 +22106,9 @@ public class ThreadedCommentResponse public List Attachments { get; set; } [JsonPropertyName("latest_reactions")] public List LatestReactions { get; set; } + /// + /// Slice of nested comments (may be empty). + /// [JsonPropertyName("replies")] public List Replies { get; set; } [JsonPropertyName("custom")] @@ -15663,28 +22161,52 @@ public class Time public class TrackActivityMetricsEvent { + /// + /// The ID of the activity to track the metric for + /// [JsonPropertyName("activity_id")] public string ActivityID { get; set; } + /// + /// The metric name (e.g. views, clicks, impressions). Alphanumeric and underscores only. + /// [JsonPropertyName("metric")] public string Metric { get; set; } + /// + /// The amount to increment (positive) or decrement (negative). Defaults to 1. The absolute value counts against rate limits. + /// [JsonPropertyName("delta")] public int? Delta { get; set; } } public class TrackActivityMetricsEventResult { + /// + /// The activity ID from the request + /// [JsonPropertyName("activity_id")] public string ActivityID { get; set; } + /// + /// Whether the metric was counted (false if rate-limited) + /// [JsonPropertyName("allowed")] public bool Allowed { get; set; } + /// + /// The metric name from the request + /// [JsonPropertyName("metric")] public string Metric { get; set; } + /// + /// Error message if processing failed + /// [JsonPropertyName("error")] public string? Error { get; set; } } public class TrackActivityMetricsRequest { + /// + /// List of metric events to track (max 100 per request) + /// [JsonPropertyName("events")] public List Events { get; set; } [JsonPropertyName("user_id")] @@ -15697,6 +22219,9 @@ public class TrackActivityMetricsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Results for each event in the request, in the same order + /// [JsonPropertyName("results")] public List Results { get; set; } } @@ -15711,8 +22236,14 @@ public class TrackStatsResponse public class TranscriptionSettings { + /// + /// One of: available, disabled, auto-on + /// [JsonPropertyName("closed_caption_mode")] public string ClosedCaptionMode { get; set; } + /// + /// The language used in this call as a two letter code + /// [JsonPropertyName("language")] public string Language { get; set; } [JsonPropertyName("mode")] @@ -15753,6 +22284,9 @@ public class TranscriptionSettingsResponse public class TranslateMessageRequest { + /// + /// Language to translate message to + /// [JsonPropertyName("language")] public string Language { get; set; } } @@ -15767,12 +22301,24 @@ public class TranslationSettings public class TriggeredRuleResponse { + /// + /// ID of the moderation rule that triggered + /// [JsonPropertyName("rule_id")] public string RuleID { get; set; } + /// + /// Action types resolved from the rule's action sequence + /// [JsonPropertyName("actions")] public List Actions { get; set; } + /// + /// Name of the moderation rule that triggered + /// [JsonPropertyName("rule_name")] public string? RuleName { get; set; } + /// + /// Violation count for action sequence rules (1-based) + /// [JsonPropertyName("violation_number")] public int? ViolationNumber { get; set; } [JsonPropertyName("call_options")] @@ -15781,14 +22327,26 @@ public class TriggeredRuleResponse public class TruncateChannelRequest { + /// + /// Permanently delete channel data (messages, reactions, etc.) + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } + /// + /// When `message` is set disables all push notifications for it + /// [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } + /// + /// Truncate channel data up to `truncated_at`. The system message (if provided) creation time is always greater than `truncated_at` + /// [JsonPropertyName("truncated_at")] public DateTime? TruncatedAt { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// List of member IDs to hide message history for. If empty, truncates the channel for all members + /// [JsonPropertyName("member_ids")] public List MemberIds { get; set; } [JsonPropertyName("message")] @@ -15799,6 +22357,9 @@ public class TruncateChannelRequest public class TruncateChannelResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("channel")] @@ -15815,14 +22376,23 @@ public class TypingIndicatorsResponse public class UnbanActionRequestPayload { + /// + /// Channel CID for channel-specific unban + /// [JsonPropertyName("channel_cid")] public string? ChannelCid { get; set; } + /// + /// Reason for the appeal decision + /// [JsonPropertyName("decision_reason")] public string? DecisionReason { get; set; } } public class UnbanRequest { + /// + /// ID of the user performing the unban + /// [JsonPropertyName("unbanned_by_id")] public string? UnbannedByID { get; set; } [JsonPropertyName("unbanned_by")] @@ -15837,18 +22407,27 @@ public class UnbanResponse public class UnblockActionRequestPayload { + /// + /// Reason for the appeal decision + /// [JsonPropertyName("decision_reason")] public string? DecisionReason { get; set; } } public class UnblockUserRequest { + /// + /// the user to unblock + /// [JsonPropertyName("user_id")] public string UserID { get; set; } } public class UnblockUserResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15865,6 +22444,9 @@ public class UnblockUsersRequest public class UnblockUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15877,18 +22459,27 @@ public class UnblockedUserEvent public DateTime CreatedAt { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.unblocked_user" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } public class UndeleteMessageRequest { + /// + /// ID of the user who is undeleting the message + /// [JsonPropertyName("undeleted_by")] public string UndeletedBy { get; set; } } public class UndeleteMessageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] @@ -15897,10 +22488,19 @@ public class UndeleteMessageResponse public class UnfollowBatchRequest { + /// + /// List of follow relationships to remove, each with optional keep_history + /// [JsonPropertyName("follows")] - public List Follows { get; set; } + public List Follows { get; set; } + /// + /// Whether to delete the corresponding notification activity (default: false) + /// [JsonPropertyName("delete_notification_activity")] public bool? DeleteNotificationActivity { get; set; } + /// + /// If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } } @@ -15909,10 +22509,32 @@ public class UnfollowBatchResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of follow relationships that were removed + /// [JsonPropertyName("follows")] public List Follows { get; set; } } + public class UnfollowPair + { + /// + /// Fully qualified ID of the source feed + /// + [JsonPropertyName("source")] + public string Source { get; set; } + /// + /// Fully qualified ID of the target feed + /// + [JsonPropertyName("target")] + public string Target { get; set; } + /// + /// When true, activities from the unfollowed feed will remain in the source feed's timeline (default: false) + /// + [JsonPropertyName("keep_history")] + public bool? KeepHistory { get; set; } + } + public class UnfollowResponse { [JsonPropertyName("duration")] @@ -15923,10 +22545,16 @@ public class UnfollowResponse public class UnmuteChannelRequest { + /// + /// Duration of mute in milliseconds + /// [JsonPropertyName("expiration")] public int? Expiration { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Channel CIDs to mute (if multiple channels) + /// [JsonPropertyName("channel_cids")] public List ChannelCids { get; set; } [JsonPropertyName("user")] @@ -15935,6 +22563,9 @@ public class UnmuteChannelRequest public class UnmuteRequest { + /// + /// User IDs to unmute + /// [JsonPropertyName("target_ids")] public List TargetIds { get; set; } [JsonPropertyName("user_id")] @@ -15947,6 +22578,9 @@ public class UnmuteResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// A list of users that can't be found. Common cause for this is deleted users + /// [JsonPropertyName("non_existing_users")] public List NonExistingUsers { get; set; } } @@ -15955,8 +22589,14 @@ public class UnpinActivityResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Fully qualified ID of the feed the activity was unpinned from + /// [JsonPropertyName("feed")] public string Feed { get; set; } + /// + /// ID of the user who unpinned the activity + /// [JsonPropertyName("user_id")] public string UserID { get; set; } [JsonPropertyName("activity")] @@ -15965,14 +22605,23 @@ public class UnpinActivityResponse public class UnpinRequest { + /// + /// the session ID of the user who pinned the message + /// [JsonPropertyName("session_id")] public string SessionID { get; set; } + /// + /// the user ID of the user who pinned the message + /// [JsonPropertyName("user_id")] public string UserID { get; set; } } public class UnpinResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -15985,6 +22634,9 @@ public class UnreadCountsBatchRequest public class UnreadCountsBatchResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("counts_by_user")] @@ -16041,6 +22693,9 @@ public class UnreadCountsThread public class UpdateActivitiesPartialBatchRequest { + /// + /// List of activity changes to apply. Each change specifies an activity ID and the fields to set/unset + /// [JsonPropertyName("changes")] public List Changes { get; set; } } @@ -16049,38 +22704,78 @@ public class UpdateActivitiesPartialBatchResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of successfully updated activities + /// [JsonPropertyName("activities")] public List Activities { get; set; } } public class UpdateActivityPartialChangeRequest { + /// + /// ID of the activity to update + /// [JsonPropertyName("activity_id")] public string ActivityID { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// When true and 'mentioned_user_ids' is updated, automatically creates or deletes mention notifications for added/removed users. Only applicable for client-side requests (ignored for server-side requests) + /// [JsonPropertyName("handle_mention_notifications")] public bool? HandleMentionNotifications { get; set; } + /// + /// List of field names to remove. Supported fields: 'custom', 'location', 'expires_at', 'filter_tags', 'interest_tags', 'attachments', 'poll_id', 'mentioned_user_ids'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') + /// [JsonPropertyName("unset")] public List Unset { get; set; } + /// + /// Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'visibility', 'visibility_tag', 'restrict_replies' (values: 'everyone', 'people_i_follow', 'nobody'), 'location', 'expires_at', 'filter_tags', 'interest_tags', 'poll_id', 'feeds', 'mentioned_user_ids'. For custom fields, use dot-notation (e.g., 'custom.field_name') + /// [JsonPropertyName("set")] public object Set { get; set; } } public class UpdateActivityPartialRequest { + /// + /// Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } + /// + /// If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned + /// [JsonPropertyName("handle_mention_notifications")] public bool? HandleMentionNotifications { get; set; } + /// + /// If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false. + /// [JsonPropertyName("run_activity_processors")] public bool? RunActivityProcessors { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// List of field names to remove. Supported fields: 'custom', 'visibility_tag', 'location', 'expires_at', 'filter_tags', 'interest_tags', 'attachments', 'poll_id', 'mentioned_user_ids', 'search_data'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') + /// [JsonPropertyName("unset")] public List Unset { get; set; } + /// + /// Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'visibility', 'visibility_tag', 'restrict_replies' (values: 'everyone', 'people_i_follow', 'nobody'), 'location', 'expires_at', 'filter_tags', 'interest_tags', 'poll_id', 'feeds', 'mentioned_user_ids', 'search_data'. For custom fields, use dot-notation (e.g., 'custom.field_name') + /// [JsonPropertyName("set")] public object Set { get; set; } [JsonPropertyName("user")] @@ -16097,46 +22792,105 @@ public class UpdateActivityPartialResponse public class UpdateActivityRequest { + /// + /// Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// If true, enriches the activity's current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } + /// + /// Time when the activity will expire + /// [JsonPropertyName("expires_at")] public DateTime? ExpiresAt { get; set; } + /// + /// If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned + /// [JsonPropertyName("handle_mention_notifications")] public bool? HandleMentionNotifications { get; set; } + /// + /// Poll ID + /// [JsonPropertyName("poll_id")] public string? PollID { get; set; } + /// + /// Controls who can add comments/replies to this activity. One of: everyone, people_i_follow, nobody + /// [JsonPropertyName("restrict_replies")] public string? RestrictReplies { get; set; } + /// + /// If true, runs activity processors on the updated activity. Processors will only run if the activity text and/or attachments are changed. Defaults to false. + /// [JsonPropertyName("run_activity_processors")] public bool? RunActivityProcessors { get; set; } + /// + /// Whether to skip URL enrichment for the activity + /// [JsonPropertyName("skip_enrich_url")] public bool? SkipEnrichUrl { get; set; } + /// + /// The text content of the activity + /// [JsonPropertyName("text")] public string? Text { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Visibility setting for the activity + /// [JsonPropertyName("visibility")] public string? Visibility { get; set; } + /// + /// If visibility is 'tag', this is the tag name and is required + /// [JsonPropertyName("visibility_tag")] public string? VisibilityTag { get; set; } + /// + /// List of attachments for the activity + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// Collections that this activity references + /// [JsonPropertyName("collection_refs")] public List CollectionRefs { get; set; } + /// + /// List of feeds the activity is present in + /// [JsonPropertyName("feeds")] public List Feeds { get; set; } + /// + /// Tags used for filtering the activity + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Tags indicating interest categories + /// [JsonPropertyName("interest_tags")] public List InterestTags { get; set; } + /// + /// List of user IDs mentioned in the activity + /// [JsonPropertyName("mentioned_user_ids")] public List MentionedUserIds { get; set; } + /// + /// Custom data for the activity + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("location")] public ActivityLocation? Location { get; set; } + /// + /// Additional data for search indexing + /// [JsonPropertyName("search_data")] public object SearchData { get; set; } [JsonPropertyName("user")] @@ -16263,12 +23017,18 @@ public class UpdateBlockListRequest public bool? IsPluralCheckEnabled { get; set; } [JsonPropertyName("team")] public string? Team { get; set; } + /// + /// List of words to block + /// [JsonPropertyName("words")] public List Words { get; set; } } public class UpdateBlockListResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("blocklist")] @@ -16277,10 +23037,16 @@ public class UpdateBlockListResponse public class UpdateBookmarkFolderRequest { + /// + /// Name of the folder + /// [JsonPropertyName("name")] public string? Name { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Custom data for the folder + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] @@ -16297,12 +23063,18 @@ public class UpdateBookmarkFolderResponse public class UpdateBookmarkRequest { + /// + /// ID of the folder to move the bookmark to + /// [JsonPropertyName("folder_id")] public string? FolderID { get; set; } [JsonPropertyName("new_folder_id")] public string? NewFolderID { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Custom data for the bookmark + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("new_folder")] @@ -16321,14 +23093,23 @@ public class UpdateBookmarkResponse public class UpdateCallMembersRequest { + /// + /// List of userID to remove + /// [JsonPropertyName("remove_members")] public List RemoveMembers { get; set; } + /// + /// List of members to update or insert + /// [JsonPropertyName("update_members")] public List UpdateMembers { get; set; } } public class UpdateCallMembersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("members")] @@ -16337,8 +23118,14 @@ public class UpdateCallMembersResponse public class UpdateCallRequest { + /// + /// the time the call is scheduled to start + /// [JsonPropertyName("starts_at")] public DateTime? StartsAt { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("settings_override")] @@ -16371,20 +23158,35 @@ public class UpdateCallTypeRequest public class UpdateCallTypeResponse { + /// + /// the time the call type was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// the name of the call type + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// the time the call type was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } + /// + /// the permissions granted to each role + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } [JsonPropertyName("notification_settings")] public NotificationSettingsResponse NotificationSettings { get; set; } [JsonPropertyName("settings")] public CallSettingsResponse Settings { get; set; } + /// + /// the external storage for the call type + /// [JsonPropertyName("external_storage")] public string? ExternalStorage { get; set; } } @@ -16403,8 +23205,14 @@ public class UpdateChannelPartialRequest public class UpdateChannelPartialResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of updated members + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("channel")] @@ -16413,34 +23221,76 @@ public class UpdateChannelPartialResponse public class UpdateChannelRequest { + /// + /// Set to `true` to accept the invite + /// [JsonPropertyName("accept_invite")] public bool? AcceptInvite { get; set; } + /// + /// Sets cool down period for the channel in seconds + /// [JsonPropertyName("cooldown")] public int? Cooldown { get; set; } + /// + /// Set to `true` to hide channel's history when adding new members + /// [JsonPropertyName("hide_history")] public bool? HideHistory { get; set; } + /// + /// If set, hides channel's history before this time when adding new members. Takes precedence over `hide_history` when both are provided. Must be in RFC3339 format (e.g., "2024-01-01T10:00:00Z") and in the past. + /// [JsonPropertyName("hide_history_before")] public DateTime? HideHistoryBefore { get; set; } + /// + /// Set to `true` to reject the invite + /// [JsonPropertyName("reject_invite")] public bool? RejectInvite { get; set; } + /// + /// When `message` is set disables all push notifications for it + /// [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// List of filter tags to add to the channel + /// [JsonPropertyName("add_filter_tags")] public List AddFilterTags { get; set; } + /// + /// List of user IDs to add to the channel + /// [JsonPropertyName("add_members")] public List AddMembers { get; set; } + /// + /// List of user IDs to make channel moderators + /// [JsonPropertyName("add_moderators")] public List AddModerators { get; set; } + /// + /// List of channel member role assignments. If any specified user is not part of the channel, the request will fail + /// [JsonPropertyName("assign_roles")] public List AssignRoles { get; set; } + /// + /// List of user IDs to take away moderators status from + /// [JsonPropertyName("demote_moderators")] public List DemoteModerators { get; set; } + /// + /// List of user IDs to invite to the channel + /// [JsonPropertyName("invites")] public List Invites { get; set; } + /// + /// List of filter tags to remove from the channel + /// [JsonPropertyName("remove_filter_tags")] public List RemoveFilterTags { get; set; } + /// + /// List of user IDs to remove from the channel + /// [JsonPropertyName("remove_members")] public List RemoveMembers { get; set; } [JsonPropertyName("data")] @@ -16453,8 +23303,14 @@ public class UpdateChannelRequest public class UpdateChannelResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of channel members + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("channel")] @@ -16525,6 +23381,9 @@ public class UpdateChannelTypeRequest public List AllowedFlagReasons { get; set; } [JsonPropertyName("blocklists")] public List Blocklists { get; set; } + /// + /// List of commands that channel supports + /// [JsonPropertyName("commands")] public List Commands { get; set; } [JsonPropertyName("permissions")] @@ -16621,16 +23480,28 @@ public class UpdateChannelTypeResponse public class UpdateCollectionRequest { + /// + /// Unique identifier for the collection within its name + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Name/type of the collection + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Custom data for the collection (required, must contain at least one key) + /// [JsonPropertyName("custom")] public object Custom { get; set; } } public class UpdateCollectionsRequest { + /// + /// List of collections to update (only custom data is updatable) + /// [JsonPropertyName("collections")] public List Collections { get; set; } [JsonPropertyName("user_id")] @@ -16643,16 +23514,28 @@ public class UpdateCollectionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of updated collections + /// [JsonPropertyName("collections")] public List Collections { get; set; } } public class UpdateCommandRequest { + /// + /// Description, shown in commands auto-completion + /// [JsonPropertyName("description")] public string Description { get; set; } + /// + /// Arguments help text, shown in commands auto-completion + /// [JsonPropertyName("args")] public string? Args { get; set; } + /// + /// Set name used for grouping commands + /// [JsonPropertyName("set")] public string? Set { get; set; } } @@ -16665,24 +23548,95 @@ public class UpdateCommandResponse public Command? Command { get; set; } } + public class UpdateCommentPartialRequest + { + /// + /// Whether to copy custom data to notification activities Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] + [JsonPropertyName("copy_custom_to_notification")] + public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to handle mention notification changes + /// + [JsonPropertyName("handle_mention_notifications")] + public bool? HandleMentionNotifications { get; set; } + /// + /// Whether to skip URL enrichment + /// + [JsonPropertyName("skip_enrich_url")] + public bool? SkipEnrichUrl { get; set; } + /// + /// Whether to skip push notifications + /// + [JsonPropertyName("skip_push")] + public bool? SkipPush { get; set; } + [JsonPropertyName("user_id")] + public string? UserID { get; set; } + /// + /// List of field names to remove. Supported fields: 'custom', 'attachments', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') + /// + [JsonPropertyName("unset")] + public List Unset { get; set; } + /// + /// Map of field names to new values. Supported fields: 'text', 'attachments', 'custom', 'mentioned_user_ids', 'status'. Use dot-notation for nested custom fields (e.g., 'custom.field_name') + /// + [JsonPropertyName("set")] + public object Set { get; set; } + [JsonPropertyName("user")] + public UserRequest? User { get; set; } + } + + public class UpdateCommentPartialResponse + { + [JsonPropertyName("duration")] + public string Duration { get; set; } + [JsonPropertyName("comment")] + public CommentResponse Comment { get; set; } + } + public class UpdateCommentRequest { + /// + /// Updated text content of the comment + /// [JsonPropertyName("comment")] public string? Comment { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when handle_mention_notifications creates notifications) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// If true, creates notification activities for newly mentioned users and deletes notifications for users no longer mentioned + /// [JsonPropertyName("handle_mention_notifications")] public bool? HandleMentionNotifications { get; set; } + /// + /// Whether to skip URL enrichment for this comment + /// [JsonPropertyName("skip_enrich_url")] public bool? SkipEnrichUrl { get; set; } [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Updated media attachments for the comment. Providing this field will replace all existing attachments. + /// [JsonPropertyName("attachments")] public List Attachments { get; set; } + /// + /// List of user IDs mentioned in the comment + /// [JsonPropertyName("mentioned_user_ids")] public List MentionedUserIds { get; set; } + /// + /// Updated custom data for the comment + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] @@ -16699,12 +23653,21 @@ public class UpdateCommentResponse public class UpdateExternalStorageRequest { + /// + /// The name of the bucket on the service provider + /// [JsonPropertyName("bucket")] public string Bucket { get; set; } + /// + /// The type of storage to use + /// [JsonPropertyName("storage_type")] public string StorageType { get; set; } [JsonPropertyName("gcs_credentials")] public string? GcsCredentials { get; set; } + /// + /// The path prefix to use for storing files + /// [JsonPropertyName("path")] public string? Path { get; set; } [JsonPropertyName("aws_s3")] @@ -16717,6 +23680,9 @@ public class UpdateExternalStorageResponse { [JsonPropertyName("bucket")] public string Bucket { get; set; } + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("name")] @@ -16731,12 +23697,21 @@ public class UpdateFeedGroupRequest { [JsonPropertyName("default_visibility")] public string? DefaultVisibility { get; set; } + /// + /// Configuration for activity processors + /// [JsonPropertyName("activity_processors")] public List ActivityProcessors { get; set; } + /// + /// Configuration for activity selectors + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] public AggregationConfig? Aggregation { get; set; } + /// + /// Custom data for the feed group + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("notification")] @@ -16759,6 +23734,9 @@ public class UpdateFeedGroupResponse public class UpdateFeedMembersRequest { + /// + /// Type of update operation to perform. One of: upsert, remove, set + /// [JsonPropertyName("operation")] public string Operation { get; set; } [JsonPropertyName("limit")] @@ -16767,12 +23745,18 @@ public class UpdateFeedMembersRequest public string? Next { get; set; } [JsonPropertyName("prev")] public string? Prev { get; set; } + /// + /// List of members to upsert, remove, or set + /// [JsonPropertyName("members")] public List Members { get; set; } } public class UpdateFeedMembersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("added")] @@ -16785,16 +23769,34 @@ public class UpdateFeedMembersResponse public class UpdateFeedRequest { + /// + /// ID of the new feed creator (owner) + /// [JsonPropertyName("created_by_id")] public string? CreatedByID { get; set; } + /// + /// Description of the feed + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// If true, enriches the feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } + /// + /// Name of the feed + /// [JsonPropertyName("name")] public string? Name { get; set; } + /// + /// Tags used for filtering feeds + /// [JsonPropertyName("filter_tags")] public List FilterTags { get; set; } + /// + /// Custom data for the feed + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -16809,6 +23811,9 @@ public class UpdateFeedResponse public class UpdateFeedViewRequest { + /// + /// Updated configuration for selecting activities + /// [JsonPropertyName("activity_selectors")] public List ActivitySelectors { get; set; } [JsonPropertyName("aggregation")] @@ -16827,6 +23832,9 @@ public class UpdateFeedViewResponse public class UpdateFeedVisibilityRequest { + /// + /// Updated permission grants for each role + /// [JsonPropertyName("grants")] public Dictionary> Grants { get; set; } } @@ -16841,24 +23849,53 @@ public class UpdateFeedVisibilityResponse public class UpdateFollowRequest { + /// + /// Fully qualified ID of the source feed + /// [JsonPropertyName("source")] public string Source { get; set; } + /// + /// Fully qualified ID of the target feed + /// [JsonPropertyName("target")] public string Target { get; set; } + /// + /// Whether to copy custom data to the notification activity (only applies when create_notification_activity is true) Deprecated: use notification_context.trigger.custom and notification_context.target.custom instead + /// Deprecated. + /// + [Obsolete] [JsonPropertyName("copy_custom_to_notification")] public bool? CopyCustomToNotification { get; set; } + /// + /// Whether to create a notification activity for this follow + /// [JsonPropertyName("create_notification_activity")] public bool? CreateNotificationActivity { get; set; } + /// + /// If true, enriches the follow's source_feed and target_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } [JsonPropertyName("follower_role")] public string? FollowerRole { get; set; } + /// + /// Push preference for the follow relationship + /// [JsonPropertyName("push_preference")] public string? PushPreference { get; set; } + /// + /// Whether to skip push for this follow + /// [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } + /// + /// Status of the follow relationship. One of: accepted, pending, rejected + /// [JsonPropertyName("status")] public string? Status { get; set; } + /// + /// Custom data for the follow relationship + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -16873,12 +23910,24 @@ public class UpdateFollowResponse public class UpdateLiveLocationRequest { + /// + /// Live location ID + /// [JsonPropertyName("message_id")] public string MessageID { get; set; } + /// + /// Time when the live location expires + /// [JsonPropertyName("end_at")] public DateTime? EndAt { get; set; } + /// + /// Latitude coordinate + /// [JsonPropertyName("latitude")] public double? Latitude { get; set; } + /// + /// Longitude coordinate + /// [JsonPropertyName("longitude")] public double? Longitude { get; set; } } @@ -16893,6 +23942,9 @@ public class UpdateMemberPartialRequest public class UpdateMemberPartialResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("channel_member")] @@ -16901,14 +23953,29 @@ public class UpdateMemberPartialResponse public class UpdateMembershipLevelRequest { + /// + /// Optional description of the membership level + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// Display name for the membership level + /// [JsonPropertyName("name")] public string? Name { get; set; } + /// + /// Priority level (higher numbers = higher priority) + /// [JsonPropertyName("priority")] public int? Priority { get; set; } + /// + /// Activity tags this membership level gives access to + /// [JsonPropertyName("tags")] public List Tags { get; set; } + /// + /// Custom data for the membership level + /// [JsonPropertyName("custom")] public object Custom { get; set; } } @@ -16923,14 +23990,23 @@ public class UpdateMembershipLevelResponse public class UpdateMessagePartialRequest { + /// + /// Skip enriching the URL in the message + /// [JsonPropertyName("skip_enrich_url")] public bool? SkipEnrichUrl { get; set; } [JsonPropertyName("skip_push")] public bool? SkipPush { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of field names to unset + /// [JsonPropertyName("unset")] public List Unset { get; set; } + /// + /// Sets new field values + /// [JsonPropertyName("set")] public object Set { get; set; } [JsonPropertyName("user")] @@ -16939,10 +24015,16 @@ public class UpdateMessagePartialRequest public class UpdateMessagePartialResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] public MessageResponse? Message { get; set; } + /// + /// Pending message metadata + /// [JsonPropertyName("pending_message_metadata")] public Dictionary PendingMessageMetadata { get; set; } } @@ -16951,6 +24033,9 @@ public class UpdateMessageRequest { [JsonPropertyName("message")] public MessageRequest Message { get; set; } + /// + /// Skip enrich URL + /// [JsonPropertyName("skip_enrich_url")] public bool? SkipEnrichUrl { get; set; } [JsonPropertyName("skip_push")] @@ -16959,6 +24044,9 @@ public class UpdateMessageRequest public class UpdateMessageResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("message")] @@ -16969,8 +24057,14 @@ public class UpdateMessageResponse public class UpdatePollOptionRequest { + /// + /// Option ID + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Option text + /// [JsonPropertyName("text")] public string Text { get; set; } [JsonPropertyName("user_id")] @@ -16985,8 +24079,14 @@ public class UpdatePollPartialRequest { [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of field names to unset + /// [JsonPropertyName("unset")] public List Unset { get; set; } + /// + /// Sets new field values + /// [JsonPropertyName("set")] public object Set { get; set; } [JsonPropertyName("user")] @@ -16995,26 +24095,56 @@ public class UpdatePollPartialRequest public class UpdatePollRequest { + /// + /// Poll ID + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// Poll name + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Allow answers + /// [JsonPropertyName("allow_answers")] public bool? AllowAnswers { get; set; } + /// + /// Allow user suggested options + /// [JsonPropertyName("allow_user_suggested_options")] public bool? AllowUserSuggestedOptions { get; set; } + /// + /// Poll description + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// Enforce unique vote + /// [JsonPropertyName("enforce_unique_vote")] public bool? EnforceUniqueVote { get; set; } + /// + /// Is closed + /// [JsonPropertyName("is_closed")] public bool? IsClosed { get; set; } + /// + /// Max votes allowed + /// [JsonPropertyName("max_votes_allowed")] public int? MaxVotesAllowed { get; set; } [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Voting visibility + /// [JsonPropertyName("voting_visibility")] public string? VotingVisibility { get; set; } + /// + /// Poll options + /// [JsonPropertyName("options")] public List Options { get; set; } [JsonPropertyName("Custom")] @@ -17035,6 +24165,9 @@ public class UpdateReminderRequest public class UpdateReminderResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("reminder")] @@ -17043,14 +24176,26 @@ public class UpdateReminderResponse public class UpdateSIPInboundRoutingRuleRequest { + /// + /// Name of the SIP Inbound Routing Rule + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// List of SIP trunk IDs + /// [JsonPropertyName("trunk_ids")] public List TrunkIds { get; set; } [JsonPropertyName("caller_configs")] public SIPCallerConfigsRequest CallerConfigs { get; set; } + /// + /// List of called numbers + /// [JsonPropertyName("called_numbers")] public List CalledNumbers { get; set; } + /// + /// List of caller numbers (optional) + /// [JsonPropertyName("caller_numbers")] public List CallerNumbers { get; set; } [JsonPropertyName("call_configs")] @@ -17073,12 +24218,24 @@ public class UpdateSIPInboundRoutingRuleResponse public class UpdateSIPTrunkRequest { + /// + /// Name of the SIP trunk + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// Phone numbers associated with this SIP trunk + /// [JsonPropertyName("numbers")] public List Numbers { get; set; } + /// + /// Optional password for SIP trunk authentication + /// [JsonPropertyName("password")] public string? Password { get; set; } + /// + /// Optional list of allowed IPv4/IPv6 addresses or CIDR blocks + /// [JsonPropertyName("allowed_ips")] public List AllowedIps { get; set; } } @@ -17095,8 +24252,14 @@ public class UpdateThreadPartialRequest { [JsonPropertyName("user_id")] public string? UserID { get; set; } + /// + /// Array of field names to unset + /// [JsonPropertyName("unset")] public List Unset { get; set; } + /// + /// Sets new field values + /// [JsonPropertyName("set")] public object Set { get; set; } [JsonPropertyName("user")] @@ -17105,6 +24268,9 @@ public class UpdateThreadPartialRequest public class UpdateThreadPartialResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("thread")] @@ -17113,8 +24279,14 @@ public class UpdateThreadPartialResponse public class UpdateUserGroupRequest { + /// + /// The new description for the group + /// [JsonPropertyName("description")] public string? Description { get; set; } + /// + /// The new name of the user group + /// [JsonPropertyName("name")] public string? Name { get; set; } [JsonPropertyName("team_id")] @@ -17131,6 +24303,9 @@ public class UpdateUserGroupResponse public class UpdateUserPartialRequest { + /// + /// User ID to update + /// [JsonPropertyName("id")] public string ID { get; set; } [JsonPropertyName("unset")] @@ -17151,6 +24326,9 @@ public class UpdateUserPermissionsRequest public class UpdateUserPermissionsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } } @@ -17163,16 +24341,25 @@ public class UpdateUsersPartialRequest public class UpdateUsersRequest { + /// + /// Object containing users + /// [JsonPropertyName("users")] public Dictionary Users { get; set; } } public class UpdateUsersResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("membership_deletion_task_id")] public string MembershipDeletionTaskID { get; set; } + /// + /// Object containing users + /// [JsonPropertyName("users")] public Dictionary Users { get; set; } } @@ -17183,16 +24370,25 @@ public class UpdatedCallPermissionsEvent public string CallCid { get; set; } [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The capabilities of the current user + /// [JsonPropertyName("own_capabilities")] public List OwnCapabilities { get; set; } [JsonPropertyName("user")] public UserResponse User { get; set; } + /// + /// The type of event: "call.permissions_updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } } public class UploadChannelFileRequest { + /// + /// file field + /// [JsonPropertyName("file")] public string? File { get; set; } [JsonPropertyName("user")] @@ -17201,12 +24397,21 @@ public class UploadChannelFileRequest public class UploadChannelFileResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// URL to the uploaded asset. Should be used to put to `asset_url` attachment field + /// [JsonPropertyName("file")] public string? File { get; set; } [JsonPropertyName("moderation_action")] public string? ModerationAction { get; set; } + /// + /// URL of the file thumbnail for supported file formats. Should be put to `thumb_url` attachment field + /// [JsonPropertyName("thumb_url")] public string? ThumbUrl { get; set; } } @@ -17215,6 +24420,9 @@ public class UploadChannelRequest { [JsonPropertyName("file")] public string? File { get; set; } + /// + /// field with JSON-encoded array of image size configurations + /// [JsonPropertyName("upload_sizes")] public List UploadSizes { get; set; } [JsonPropertyName("user")] @@ -17223,6 +24431,9 @@ public class UploadChannelRequest public class UploadChannelResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("file")] @@ -17231,14 +24442,23 @@ public class UploadChannelResponse public string? ModerationAction { get; set; } [JsonPropertyName("thumb_url")] public string? ThumbUrl { get; set; } + /// + /// Array of image size configurations + /// [JsonPropertyName("upload_sizes")] public List UploadSizes { get; set; } } public class UpsertActivitiesRequest { + /// + /// List of activities to create or update + /// [JsonPropertyName("activities")] public List Activities { get; set; } + /// + /// If true, enriches the activities' current_feed with own_* fields (own_follows, own_followings, own_capabilities, own_membership). Defaults to false for performance. + /// [JsonPropertyName("enrich_own_fields")] public bool? EnrichOwnFields { get; set; } } @@ -17247,14 +24467,23 @@ public class UpsertActivitiesResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of created or updated activities + /// [JsonPropertyName("activities")] public List Activities { get; set; } + /// + /// Total number of mention notification activities created for mentioned users across all activities + /// [JsonPropertyName("mention_notifications_created")] public int? MentionNotificationsCreated { get; set; } } public class UpsertCollectionsRequest { + /// + /// List of collections to upsert (insert if new, update if existing) + /// [JsonPropertyName("collections")] public List Collections { get; set; } } @@ -17263,16 +24492,28 @@ public class UpsertCollectionsResponse { [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// List of upserted collections + /// [JsonPropertyName("collections")] public List Collections { get; set; } } public class UpsertConfigRequest { + /// + /// Unique identifier for the moderation configuration + /// [JsonPropertyName("key")] public string Key { get; set; } + /// + /// Whether moderation should be performed asynchronously + /// [JsonPropertyName("async")] public bool? Async { get; set; } + /// + /// Team associated with the configuration + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("user_id")] @@ -17317,6 +24558,35 @@ public class UpsertConfigResponse public ConfigResponse? Config { get; set; } } + public class UpsertExternalStorageAWSS3Request + { + [JsonPropertyName("bucket")] + public string Bucket { get; set; } + [JsonPropertyName("region")] + public string Region { get; set; } + [JsonPropertyName("role_arn")] + public string RoleArn { get; set; } + [JsonPropertyName("path_prefix")] + public string? PathPrefix { get; set; } + } + + public class UpsertExternalStorageRequest + { + [JsonPropertyName("type")] + public string Type { get; set; } + [JsonPropertyName("aws_s3")] + public UpsertExternalStorageAWSS3Request? AWSS3 { get; set; } + } + + public class UpsertExternalStorageResponse + { + /// + /// Duration of the request in milliseconds + /// + [JsonPropertyName("duration")] + public string Duration { get; set; } + } + public class UpsertModerationRuleRequest { [JsonPropertyName("name")] @@ -17347,6 +24617,9 @@ public class UpsertModerationRuleRequest public class UpsertModerationRuleResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("rule")] @@ -17355,6 +24628,9 @@ public class UpsertModerationRuleResponse public class UpsertModerationTemplateRequest { + /// + /// Name of the moderation template + /// [JsonPropertyName("name")] public string Name { get; set; } [JsonPropertyName("config")] @@ -17363,12 +24639,21 @@ public class UpsertModerationTemplateRequest public class UpsertModerationTemplateResponse { + /// + /// When the template was created + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// Name of the moderation template + /// [JsonPropertyName("name")] public string Name { get; set; } + /// + /// When the template was last updated + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("config")] @@ -17377,16 +24662,28 @@ public class UpsertModerationTemplateResponse public class UpsertPushPreferencesRequest { + /// + /// A list of push preferences for channels, calls, or the user. + /// [JsonPropertyName("preferences")] public List Preferences { get; set; } } public class UpsertPushPreferencesResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } + /// + /// The channel specific push notification preferences, only returned for channels you've edited. + /// [JsonPropertyName("user_channel_preferences")] public Dictionary> UserChannelPreferences { get; set; } + /// + /// The user preferences, always returned regardless if you edited it + /// [JsonPropertyName("user_preferences")] public Dictionary UserPreferences { get; set; } } @@ -17399,6 +24696,9 @@ public class UpsertPushProviderRequest public class UpsertPushProviderResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("push_provider")] @@ -17407,20 +24707,38 @@ public class UpsertPushProviderResponse public class UpsertPushTemplateRequest { + /// + /// Event type. One of: message.new, message.updated, reaction.new, notification.reminder_due, feeds.activity.added, feeds.comment.added, feeds.activity.reaction.added, feeds.comment.reaction.added, feeds.follow.created, feeds.notification_feed.updated + /// [JsonPropertyName("event_type")] public string EventType { get; set; } + /// + /// Push provider type. One of: firebase, apn, huawei, xiaomi + /// [JsonPropertyName("push_provider_type")] public string PushProviderType { get; set; } + /// + /// Whether to send push notification for this event + /// [JsonPropertyName("enable_push")] public bool? EnablePush { get; set; } + /// + /// Push provider name + /// [JsonPropertyName("push_provider_name")] public string? PushProviderName { get; set; } + /// + /// Push template + /// [JsonPropertyName("template")] public string? Template { get; set; } } public class UpsertPushTemplateResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("template")] @@ -17437,32 +24755,59 @@ public class User public class UserBannedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.banned" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the target user was banned + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the target user was banned + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the target user was banned + /// [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// The expiration date of the ban + /// [JsonPropertyName("expiration")] public DateTime? Expiration { get; set; } + /// + /// The reason for the ban + /// [JsonPropertyName("reason")] public string? Reason { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// Whether the user was shadow banned + /// [JsonPropertyName("shadow")] public bool? Shadow { get; set; } + /// + /// The team of the channel where the target user was banned + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("total_bans")] @@ -17497,12 +24842,18 @@ public class UserCustomPropertyParameters public class UserDeactivatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.deactivated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17513,24 +24864,48 @@ public class UserDeactivatedEvent public class UserDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The type of deletion that was used for the user's conversations. One of: hard, soft, pruning, (empty string) + /// [JsonPropertyName("delete_conversation")] public string DeleteConversation { get; set; } + /// + /// Whether the user's conversation channels were deleted + /// [JsonPropertyName("delete_conversation_channels")] public bool DeleteConversationChannels { get; set; } + /// + /// The type of deletion that was used for the user's messages. One of: hard, soft, pruning, (empty string) + /// [JsonPropertyName("delete_messages")] public string DeleteMessages { get; set; } + /// + /// The type of deletion that was used for the user. One of: hard, soft, pruning, (empty string) + /// [JsonPropertyName("delete_user")] public string DeleteUser { get; set; } + /// + /// Whether the user was hard deleted + /// [JsonPropertyName("hard_delete")] public bool HardDelete { get; set; } + /// + /// Whether the user's messages were marked as deleted + /// [JsonPropertyName("mark_messages_deleted")] public bool MarkMessagesDeleted { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17575,18 +24950,33 @@ public class UserFeedbackResponse public class UserFlaggedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The reason for the flag + /// [JsonPropertyName("reason")] public string Reason { get; set; } + /// + /// The total number of flags for the user + /// [JsonPropertyName("total_flags")] public int TotalFlags { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.flagged" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// Custom data + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("target_user")] @@ -17617,10 +25007,16 @@ public class UserGroup public class UserGroupCreatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "user_group.created" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17633,10 +25029,16 @@ public class UserGroupCreatedEvent public class UserGroupDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "user_group.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17663,12 +25065,21 @@ public class UserGroupMember public class UserGroupMemberAddedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The user IDs that were added + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "user_group.member_added" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17681,12 +25092,21 @@ public class UserGroupMemberAddedEvent public class UserGroupMemberRemovedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The user IDs that were removed + /// [JsonPropertyName("members")] public List Members { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "user_group.member_removed" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17719,10 +25139,16 @@ public class UserGroupResponse public class UserGroupUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } + /// + /// The type of event: "user_group.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17743,28 +25169,49 @@ public class UserIdenticalContentCountParameters public class UserMessagesDeletedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.messages.deleted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the target user's messages were deleted + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the target user's messages were deleted + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the target user's messages were deleted + /// [JsonPropertyName("cid")] public string? Cid { get; set; } + /// + /// Whether Messages were hard deleted + /// [JsonPropertyName("hard_delete")] public bool? HardDelete { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The team of the channel where the target user's messages were deleted + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -17787,16 +25234,25 @@ public class UserMuteResponse public class UserMutedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.muted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The target users that were muted + /// [JsonPropertyName("target_users")] public List TargetUsers { get; set; } [JsonPropertyName("target_user")] @@ -17813,12 +25269,18 @@ public class UserRatingReportResponse public class UserReactivatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.reactivated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -17829,70 +25291,142 @@ public class UserReactivatedEvent public class UserRequest { + /// + /// User ID + /// [JsonPropertyName("id")] public string ID { get; set; } + /// + /// User's profile image URL + /// [JsonPropertyName("image")] public string? Image { get; set; } [JsonPropertyName("invisible")] public bool? Invisible { get; set; } [JsonPropertyName("language")] public string? Language { get; set; } + /// + /// Optional name of user + /// [JsonPropertyName("name")] public string? Name { get; set; } + /// + /// User's global role + /// [JsonPropertyName("role")] public string? Role { get; set; } + /// + /// List of teams the user belongs to + /// [JsonPropertyName("teams")] public List Teams { get; set; } + /// + /// Custom user data + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("privacy_settings")] public PrivacySettingsResponse? PrivacySettings { get; set; } + /// + /// Map of team-specific roles for the user + /// [JsonPropertyName("teams_role")] public Dictionary TeamsRole { get; set; } } public class UserResponse { + /// + /// Whether a user is banned or not + /// [JsonPropertyName("banned")] public bool Banned { get; set; } + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// Unique user identifier + /// [JsonPropertyName("id")] public string ID { get; set; } [JsonPropertyName("invisible")] public bool Invisible { get; set; } + /// + /// Preferred language of a user + /// [JsonPropertyName("language")] public string Language { get; set; } + /// + /// Whether a user online or not + /// [JsonPropertyName("online")] public bool Online { get; set; } + /// + /// Determines the set of user permissions + /// [JsonPropertyName("role")] public string Role { get; set; } + /// + /// Whether a user is shadow banned + /// [JsonPropertyName("shadow_banned")] public bool ShadowBanned { get; set; } + /// + /// Date/time of the last update + /// [JsonPropertyName("updated_at")] public DateTime UpdatedAt { get; set; } [JsonPropertyName("blocked_user_ids")] public List BlockedUserIds { get; set; } + /// + /// List of teams user is a part of + /// [JsonPropertyName("teams")] public List Teams { get; set; } + /// + /// Custom data for this object + /// [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("avg_response_time")] public int? AvgResponseTime { get; set; } + /// + /// Date when ban expires + /// [JsonPropertyName("ban_expires")] public DateTime? BanExpires { get; set; } + /// + /// Date of deactivation + /// [JsonPropertyName("deactivated_at")] public DateTime? DeactivatedAt { get; set; } + /// + /// Date/time of deletion + /// [JsonPropertyName("deleted_at")] public DateTime? DeletedAt { get; set; } [JsonPropertyName("image")] public string? Image { get; set; } + /// + /// Date of last activity + /// [JsonPropertyName("last_active")] public DateTime? LastActive { get; set; } + /// + /// Optional name of user + /// [JsonPropertyName("name")] public string? Name { get; set; } + /// + /// Revocation date for tokens + /// [JsonPropertyName("revoke_tokens_issued_before")] public DateTime? RevokeTokensIssuedBefore { get; set; } + /// + /// List of devices user is using + /// [JsonPropertyName("devices")] public List Devices { get; set; } [JsonPropertyName("privacy_settings")] @@ -18003,28 +25537,49 @@ public class UserRuleParameters public class UserUnbannedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.unbanned" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } + /// + /// The ID of the channel where the target user was unbanned + /// [JsonPropertyName("channel_id")] public string? ChannelID { get; set; } [JsonPropertyName("channel_member_count")] public int? ChannelMemberCount { get; set; } [JsonPropertyName("channel_message_count")] public int? ChannelMessageCount { get; set; } + /// + /// The type of the channel where the target user was unbanned + /// [JsonPropertyName("channel_type")] public string? ChannelType { get; set; } + /// + /// The CID of the channel where the target user was unbanned + /// [JsonPropertyName("cid")] public string? Cid { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// Whether the target user was shadow unbanned + /// [JsonPropertyName("shadow")] public bool? Shadow { get; set; } + /// + /// The team of the channel where the target user was unbanned + /// [JsonPropertyName("team")] public string? Team { get; set; } [JsonPropertyName("channel_custom")] @@ -18035,16 +25590,25 @@ public class UserUnbannedEvent public class UserUnmutedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.unmuted" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } + /// + /// The target users that were unmuted + /// [JsonPropertyName("target_users")] public List TargetUsers { get; set; } [JsonPropertyName("target_user")] @@ -18053,14 +25617,23 @@ public class UserUnmutedEvent public class UserUnreadReminderEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } + /// + /// The channels with unread messages + /// [JsonPropertyName("channels")] public Dictionary Channels { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponseCommonFields User { get; set; } + /// + /// The type of event: "user.unread_message_reminder" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] @@ -18069,18 +25642,33 @@ public class UserUnreadReminderEvent public class UserUpdatedEvent { + /// + /// Date/time of creation + /// [JsonPropertyName("created_at")] public DateTime CreatedAt { get; set; } [JsonPropertyName("custom")] public object Custom { get; set; } [JsonPropertyName("user")] public UserResponsePrivacyFields User { get; set; } + /// + /// The type of event: "user.updated" in this case + /// [JsonPropertyName("type")] public string Type { get; set; } [JsonPropertyName("received_at")] public DateTime? ReceivedAt { get; set; } } + public class ValidateExternalStorageResponse + { + /// + /// Duration of the request in milliseconds + /// + [JsonPropertyName("duration")] + public string Duration { get; set; } + } + public class VelocityFilterConfig { [JsonPropertyName("advanced_filters")] @@ -18143,6 +25731,8 @@ public class VideoCallRuleConfig public class VideoContentParameters { + [JsonPropertyName("label_operator")] + public string? LabelOperator { get; set; } [JsonPropertyName("harm_labels")] public List HarmLabels { get; set; } } @@ -18249,6 +25839,9 @@ public class WHEvent public class WHIPIngress { + /// + /// URL for a new whip input, every time a new link is created + /// [JsonPropertyName("address")] public string Address { get; set; } } @@ -18313,6 +25906,9 @@ public class WSEvent public class WrappedUnreadCountsResponse { + /// + /// Duration of the request in milliseconds + /// [JsonPropertyName("duration")] public string Duration { get; set; } [JsonPropertyName("total_unread_count")] @@ -18349,4 +25945,4 @@ public class XiaomiConfigFields public string? Secret { get; set; } } -} +} diff --git a/tests/ChatMiscIntegrationTests.cs b/tests/ChatMiscIntegrationTests.cs index 5ae79c5..a583be2 100644 --- a/tests/ChatMiscIntegrationTests.cs +++ b/tests/ChatMiscIntegrationTests.cs @@ -825,34 +825,14 @@ public async Task QueryTeamUsageStats() } [Test, Order(21)] - public async Task GetRetentionPolicy() - { - try - { - var resp = await _chatClient.GetRetentionPolicyAsync(); - - Assert.That(resp.Data, Is.Not.Null); - Assert.That(resp.Data!.Duration, Is.Not.Empty); - Assert.That(resp.Data!.Policies, Is.Not.Null); - } - catch (Exception e) when ( - e.Message.Contains("not available") || - e.Message.Contains("not enabled") || - e.Message.Contains("not found") || - e.Message.Contains("Not Found") || - e.Message.Contains("retention") || - e.Message.Contains("feature")) - { - Assert.Ignore("Retention policy feature not available on this app"); - } - } - - [Test, Order(22)] public async Task GetRetentionPolicyRuns() { try { - var resp = await _chatClient.GetRetentionPolicyRunsAsync(); + var resp = await _chatClient.GetRetentionPolicyRunsAsync(new GetRetentionPolicyRunsRequest + { + Limit = 10 + }); Assert.That(resp.Data, Is.Not.Null); Assert.That(resp.Data!.Duration, Is.Not.Empty); diff --git a/tests/FeedTests.cs b/tests/FeedTests.cs index ae0a3b1..f5c5e43 100644 --- a/tests/FeedTests.cs +++ b/tests/FeedTests.cs @@ -252,7 +252,7 @@ public async Task DeleteBookmarkAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteBookmarkAsync(activityID, null!); + var result = await _client.DeleteBookmarkAsync(activityID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -288,7 +288,7 @@ public async Task UpdateBookmarkAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateBookmarkAsync(activityID, request); + var result = await _client.UpdateBookmarkAsync(activityID,request); // Assert Assert.That(result, Is.Not.Null); @@ -324,7 +324,7 @@ public async Task AddBookmarkAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.AddBookmarkAsync(activityID, request); + var result = await _client.AddBookmarkAsync(activityID,request); // Assert Assert.That(result, Is.Not.Null); @@ -360,7 +360,7 @@ public async Task ActivityFeedbackAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.ActivityFeedbackAsync(activityID, request); + var result = await _client.ActivityFeedbackAsync(activityID,request); // Assert Assert.That(result, Is.Not.Null); @@ -397,7 +397,7 @@ public async Task CastPollVoteAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.CastPollVoteAsync(activityID, pollID, request); + var result = await _client.CastPollVoteAsync(activityID, pollID,request); // Assert Assert.That(result, Is.Not.Null); @@ -435,7 +435,7 @@ public async Task DeletePollVoteAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeletePollVoteAsync(activityID, pollID, voteID, null!); + var result = await _client.DeletePollVoteAsync(activityID, pollID, voteID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -471,7 +471,7 @@ public async Task AddActivityReactionAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.AddActivityReactionAsync(activityID, request); + var result = await _client.AddActivityReactionAsync(activityID,request); // Assert Assert.That(result, Is.Not.Null); @@ -507,7 +507,7 @@ public async Task QueryActivityReactionsAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.QueryActivityReactionsAsync(activityID, request); + var result = await _client.QueryActivityReactionsAsync(activityID,request); // Assert Assert.That(result, Is.Not.Null); @@ -544,7 +544,7 @@ public async Task DeleteActivityReactionAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteActivityReactionAsync(activityID, type, null!); + var result = await _client.DeleteActivityReactionAsync(activityID, type,null!); // Assert Assert.That(result, Is.Not.Null); @@ -580,7 +580,7 @@ public async Task DeleteActivityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteActivityAsync(id, null!); + var result = await _client.DeleteActivityAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -616,7 +616,7 @@ public async Task GetActivityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetActivityAsync(id, null!); + var result = await _client.GetActivityAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -652,7 +652,7 @@ public async Task UpdateActivityPartialAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateActivityPartialAsync(id, request); + var result = await _client.UpdateActivityPartialAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -688,7 +688,7 @@ public async Task UpdateActivityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateActivityAsync(id, request); + var result = await _client.UpdateActivityAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -724,7 +724,7 @@ public async Task RestoreActivityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.RestoreActivityAsync(id, request); + var result = await _client.RestoreActivityAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -795,7 +795,7 @@ public async Task DeleteBookmarkFolderAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteBookmarkFolderAsync(folderID, null!); + var result = await _client.DeleteBookmarkFolderAsync(folderID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -831,7 +831,7 @@ public async Task UpdateBookmarkFolderAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateBookmarkFolderAsync(folderID, request); + var result = await _client.UpdateBookmarkFolderAsync(folderID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1252,7 +1252,7 @@ public async Task DeleteCommentAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteCommentAsync(id, null!); + var result = await _client.DeleteCommentAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -1288,7 +1288,7 @@ public async Task GetCommentAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetCommentAsync(id, null!); + var result = await _client.GetCommentAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -1324,7 +1324,7 @@ public async Task UpdateCommentAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateCommentAsync(id, request); + var result = await _client.UpdateCommentAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -1339,6 +1339,42 @@ public async Task UpdateCommentAsync_ShouldCallCorrectEndpoint() It.IsAny()), Times.Once); } [Test] + public async Task UpdateCommentPartialAsync_ShouldCallCorrectEndpoint() + { + // Arrange + var request = new UpdateCommentPartialRequest(); + var id = "test-id"; + + var expectedResponse = new StreamResponse + { + Data = new UpdateCommentPartialResponse() + }; + + _mockClient.Setup(x => x.MakeRequestAsync( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny(), + It.IsAny>(), + It.IsAny())) + .ReturnsAsync(expectedResponse); + + // Act + var result = await _client.UpdateCommentPartialAsync(id,request); + + // Assert + Assert.That(result, Is.Not.Null); + Assert.That(result, Is.EqualTo(expectedResponse)); + + _mockClient.Verify(x => x.MakeRequestAsync( + "POST", + "/api/v2/feeds/comments/{id}/partial", + It.IsAny>(), + It.IsAny(), + It.IsAny>(), + It.IsAny()), Times.Once); + } + [Test] public async Task AddCommentReactionAsync_ShouldCallCorrectEndpoint() { // Arrange @@ -1360,7 +1396,7 @@ public async Task AddCommentReactionAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.AddCommentReactionAsync(id, request); + var result = await _client.AddCommentReactionAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -1396,7 +1432,7 @@ public async Task QueryCommentReactionsAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.QueryCommentReactionsAsync(id, request); + var result = await _client.QueryCommentReactionsAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -1433,7 +1469,7 @@ public async Task DeleteCommentReactionAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteCommentReactionAsync(id, type, null!); + var result = await _client.DeleteCommentReactionAsync(id, type,null!); // Assert Assert.That(result, Is.Not.Null); @@ -1469,7 +1505,7 @@ public async Task GetCommentRepliesAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetCommentRepliesAsync(id, null!); + var result = await _client.GetCommentRepliesAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -1484,6 +1520,42 @@ public async Task GetCommentRepliesAsync_ShouldCallCorrectEndpoint() It.IsAny()), Times.Once); } [Test] + public async Task RestoreCommentAsync_ShouldCallCorrectEndpoint() + { + // Arrange + var request = new RestoreCommentRequest(); + var id = "test-id"; + + var expectedResponse = new StreamResponse + { + Data = new RestoreCommentResponse() + }; + + _mockClient.Setup(x => x.MakeRequestAsync( + It.IsAny(), + It.IsAny(), + It.IsAny>(), + It.IsAny(), + It.IsAny>(), + It.IsAny())) + .ReturnsAsync(expectedResponse); + + // Act + var result = await _client.RestoreCommentAsync(id,request); + + // Assert + Assert.That(result, Is.Not.Null); + Assert.That(result, Is.EqualTo(expectedResponse)); + + _mockClient.Verify(x => x.MakeRequestAsync( + "POST", + "/api/v2/feeds/comments/{id}/restore", + It.IsAny>(), + It.IsAny(), + It.IsAny>(), + It.IsAny()), Times.Once); + } + [Test] public async Task ListFeedGroupsAsync_ShouldCallCorrectEndpoint() { // Arrange @@ -1576,7 +1648,7 @@ public async Task DeleteFeedAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteFeedAsync(feedGroupID, feedID, null!); + var result = await _client.DeleteFeedAsync(feedGroupID, feedID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -1613,7 +1685,7 @@ public async Task GetOrCreateFeedAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetOrCreateFeedAsync(feedGroupID, feedID, request); + var result = await _client.GetOrCreateFeedAsync(feedGroupID, feedID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1650,7 +1722,7 @@ public async Task UpdateFeedAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateFeedAsync(feedGroupID, feedID, request); + var result = await _client.UpdateFeedAsync(feedGroupID, feedID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1687,7 +1759,7 @@ public async Task MarkActivityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.MarkActivityAsync(feedGroupID, feedID, request); + var result = await _client.MarkActivityAsync(feedGroupID, feedID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1725,7 +1797,7 @@ public async Task UnpinActivityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UnpinActivityAsync(feedGroupID, feedID, activityID, null!); + var result = await _client.UnpinActivityAsync(feedGroupID, feedID, activityID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -1763,7 +1835,7 @@ public async Task PinActivityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.PinActivityAsync(feedGroupID, feedID, activityID, request); + var result = await _client.PinActivityAsync(feedGroupID, feedID, activityID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1800,7 +1872,7 @@ public async Task UpdateFeedMembersAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateFeedMembersAsync(feedGroupID, feedID, request); + var result = await _client.UpdateFeedMembersAsync(feedGroupID, feedID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1837,7 +1909,7 @@ public async Task AcceptFeedMemberInviteAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.AcceptFeedMemberInviteAsync(feedID, feedGroupID, request); + var result = await _client.AcceptFeedMemberInviteAsync(feedID, feedGroupID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1874,7 +1946,7 @@ public async Task QueryFeedMembersAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.QueryFeedMembersAsync(feedGroupID, feedID, request); + var result = await _client.QueryFeedMembersAsync(feedGroupID, feedID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1911,7 +1983,7 @@ public async Task RejectFeedMemberInviteAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.RejectFeedMemberInviteAsync(feedGroupID, feedID, request); + var result = await _client.RejectFeedMemberInviteAsync(feedGroupID, feedID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1948,7 +2020,7 @@ public async Task QueryPinnedActivitiesAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.QueryPinnedActivitiesAsync(feedGroupID, feedID, request); + var result = await _client.QueryPinnedActivitiesAsync(feedGroupID, feedID,request); // Assert Assert.That(result, Is.Not.Null); @@ -1984,7 +2056,7 @@ public async Task GetFollowSuggestionsAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetFollowSuggestionsAsync(feedGroupID, null!); + var result = await _client.GetFollowSuggestionsAsync(feedGroupID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -2020,7 +2092,7 @@ public async Task RestoreFeedGroupAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.RestoreFeedGroupAsync(feedGroupID, null!); + var result = await _client.RestoreFeedGroupAsync(feedGroupID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -2056,7 +2128,7 @@ public async Task DeleteFeedGroupAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteFeedGroupAsync(id, null!); + var result = await _client.DeleteFeedGroupAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -2092,7 +2164,7 @@ public async Task GetFeedGroupAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetFeedGroupAsync(id, null!); + var result = await _client.GetFeedGroupAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -2128,7 +2200,7 @@ public async Task GetOrCreateFeedGroupAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetOrCreateFeedGroupAsync(id, request); + var result = await _client.GetOrCreateFeedGroupAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -2164,7 +2236,7 @@ public async Task UpdateFeedGroupAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateFeedGroupAsync(id, request); + var result = await _client.UpdateFeedGroupAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -2270,7 +2342,7 @@ public async Task DeleteFeedViewAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteFeedViewAsync(id, null!); + var result = await _client.DeleteFeedViewAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -2306,7 +2378,7 @@ public async Task GetFeedViewAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetFeedViewAsync(id, null!); + var result = await _client.GetFeedViewAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -2342,7 +2414,7 @@ public async Task GetOrCreateFeedViewAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetOrCreateFeedViewAsync(id, request); + var result = await _client.GetOrCreateFeedViewAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -2378,7 +2450,7 @@ public async Task UpdateFeedViewAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateFeedViewAsync(id, request); + var result = await _client.UpdateFeedViewAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -2449,7 +2521,7 @@ public async Task GetFeedVisibilityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.GetFeedVisibilityAsync(name, null!); + var result = await _client.GetFeedVisibilityAsync(name,null!); // Assert Assert.That(result, Is.Not.Null); @@ -2485,7 +2557,7 @@ public async Task UpdateFeedVisibilityAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateFeedVisibilityAsync(name, request); + var result = await _client.UpdateFeedVisibilityAsync(name,request); // Assert Assert.That(result, Is.Not.Null); @@ -2942,7 +3014,7 @@ public async Task UnfollowAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UnfollowAsync(source, target, null!); + var result = await _client.UnfollowAsync(source, target,null!); // Assert Assert.That(result, Is.Not.Null); @@ -3048,7 +3120,7 @@ public async Task DeleteMembershipLevelAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteMembershipLevelAsync(id, null!); + var result = await _client.DeleteMembershipLevelAsync(id,null!); // Assert Assert.That(result, Is.Not.Null); @@ -3084,7 +3156,7 @@ public async Task UpdateMembershipLevelAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.UpdateMembershipLevelAsync(id, request); + var result = await _client.UpdateMembershipLevelAsync(id,request); // Assert Assert.That(result, Is.Not.Null); @@ -3225,7 +3297,7 @@ public async Task DeleteFeedUserDataAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.DeleteFeedUserDataAsync(userID, request); + var result = await _client.DeleteFeedUserDataAsync(userID,request); // Assert Assert.That(result, Is.Not.Null); @@ -3261,7 +3333,7 @@ public async Task ExportFeedUserDataAsync_ShouldCallCorrectEndpoint() .ReturnsAsync(expectedResponse); // Act - var result = await _client.ExportFeedUserDataAsync(userID, null!); + var result = await _client.ExportFeedUserDataAsync(userID,null!); // Assert Assert.That(result, Is.Not.Null); @@ -3275,5 +3347,5 @@ public async Task ExportFeedUserDataAsync_ShouldCallCorrectEndpoint() It.IsAny>(), It.IsAny()), Times.Once); } - } -} \ No newline at end of file + } + } \ No newline at end of file diff --git a/tests/WebhookTests.cs b/tests/WebhookTests.cs index ac3a47d..46d6c26 100644 --- a/tests/WebhookTests.cs +++ b/tests/WebhookTests.cs @@ -902,6 +902,14 @@ public void ParseWebhookEvent_FeedsCommentReactionUpdated_ReturnsCorrectType() Assert.That(result, Is.InstanceOf()); } + [Test] + public void ParseWebhookEvent_FeedsCommentRestored_ReturnsCorrectType() + { + var payload = "{\"type\":\"feeds.comment.restored\"}"; + var result = Webhook.ParseWebhookEvent(payload); + Assert.That(result, Is.InstanceOf()); + } + [Test] public void ParseWebhookEvent_FeedsCommentUpdated_ReturnsCorrectType() {