From 4350f9900ec0893e15b211748de93a608510a261 Mon Sep 17 00:00:00 2001 From: Macgyver Hoferkamp Date: Wed, 7 Jan 2026 12:59:45 -0600 Subject: [PATCH 1/3] Add support for Zoom Phone operation logs report Introduced models for operation logs and their report, including OperationLog, OperationsLogReport, and ReportPhoneOperationsLogType. Added GetOperationLogsReportAsync to IReports and implemented it in Reports to allow retrieval of Zoom Phone admin operation logs. --- Source/ZoomNet/Models/OperationLog.cs | 35 ++++ Source/ZoomNet/Models/OperationsLogReport.cs | 36 ++++ .../Models/ReportPhoneOperationsLogType.cs | 189 ++++++++++++++++++ Source/ZoomNet/Resources/IReports.cs | 21 ++ Source/ZoomNet/Resources/Reports.cs | 16 ++ 5 files changed, 297 insertions(+) create mode 100644 Source/ZoomNet/Models/OperationLog.cs create mode 100644 Source/ZoomNet/Models/OperationsLogReport.cs create mode 100644 Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs diff --git a/Source/ZoomNet/Models/OperationLog.cs b/Source/ZoomNet/Models/OperationLog.cs new file mode 100644 index 000000000..731ece511 --- /dev/null +++ b/Source/ZoomNet/Models/OperationLog.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json.Serialization; +using System.Threading.Tasks; + +namespace ZoomNet.Models +{ + /// + /// Represents a log entry for an operation performed in Zoom. + /// + public class OperationLog + { + /// Gets or sets the action. + [JsonPropertyName("action")] + public string Action { get; set; } + + /// Gets or sets the operation type. + [JsonPropertyName("category_type")] + public string CategoryType { get; set; } + + /// Gets or sets the operation detail. + [JsonPropertyName("operation_detail")] + public string OperationDetail { get; set; } + + /// Gets or sets the Operator. + [JsonPropertyName("operator")] + public string Operator { get; set; } + + /// Gets or sets the timestamp. + [JsonPropertyName("time")] + public DateTime Time { get; set; } + } +} diff --git a/Source/ZoomNet/Models/OperationsLogReport.cs b/Source/ZoomNet/Models/OperationsLogReport.cs new file mode 100644 index 000000000..00d2f45a1 --- /dev/null +++ b/Source/ZoomNet/Models/OperationsLogReport.cs @@ -0,0 +1,36 @@ +using System; +using System.Text.Json.Serialization; + +namespace ZoomNet.Models +{ + /// + /// Daily Usage Report. + /// + public class OperationsLogReport + { + /// + /// Gets or sets the start date for this report. + /// + /// The start date for this report. + [JsonPropertyName("from")] + public DateTime From { get; set; } + + /// + /// Gets or sets the end date for this report. + /// + /// The end date for this report. + [JsonPropertyName("to")] + public DateTime To { get; set; } + + /// + /// Gets or sets the number of all records available across pages. + /// + /// The number of all records available across pages. + [JsonPropertyName("total_records")] + public int TotalRecords { get; set; } + + /// Gets or sets the daily usage summaries. + [JsonPropertyName("operation_logs")] + public OperationLog[] OperationLogs { get; set; } + } +} diff --git a/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs b/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs new file mode 100644 index 000000000..0bb329586 --- /dev/null +++ b/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs @@ -0,0 +1,189 @@ +using System.Runtime.Serialization; + +namespace ZoomNet.Models; + +/// +/// Phone operation categories and their descriptions from Zoom Phone API. +/// +public enum ReportPhoneOperationsLogType +{ + /// All Operation Types + [EnumMember(Value = "all")] + All, + + /// Approved account + [EnumMember(Value = "account_allow_list")] + AccountAllowList, + + /// Blocked account + [EnumMember(Value = "account_blocked")] + AccountBlocked, + + /// Auto receptionist + [EnumMember(Value = "auto_receptionist")] + AutoReceptionist, + + /// Directory backup routing rules + [EnumMember(Value = "backup_routing_rule")] + BackupRoutingRule, + + /// Call monitoring (barge/monitor/whisper) + [EnumMember(Value = "barge_monitor_whisper")] + BargeMonitorWhisper, + + /// Call forwarding + [EnumMember(Value = "call_forward")] + CallForward, + + /// Call logs + [EnumMember(Value = "call_log")] + CallLog, + + /// Call queues + [EnumMember(Value = "call_queue")] + CallQueue, + + /// Call setting + [EnumMember(Value = "call_setting")] + CallSetting, + + /// Calling plan + [EnumMember(Value = "calling_plan")] + CallingPlan, + + /// Company information + [EnumMember(Value = "company_info")] + CompanyInfo, + + /// Contact center + [EnumMember(Value = "contact_center")] + ContactCenter, + + /// Domain of the contact center + [EnumMember(Value = "contact_center_domain")] + ContactCenterDomain, + + /// CSV file imports + [EnumMember(Value = "csv_import")] + CsvImport, + + /// Custom voicemail greeting + [EnumMember(Value = "custom_vm_greeting")] + CustomVoicemailGreeting, + + /// Call delegation + [EnumMember(Value = "delegation")] + Delegation, + + /// Zoom Phone device + [EnumMember(Value = "device")] + Device, + + /// Dial-by-name directory + [EnumMember(Value = "dial_by_name")] + DialByName, + + /// Emergency address + [EnumMember(Value = "emergency_address")] + EmergencyAddress, + + /// Emergency calling + [EnumMember(Value = "emergency_calling")] + EmergencyCalling, + + /// Emergency service + [EnumMember(Value = "emergency_service")] + EmergencyService, + + /// Extension number + [EnumMember(Value = "extension")] + Extension, + + /// Extension line keys + [EnumMember(Value = "extension_line_keys")] + ExtensionLineKeys, + + /// Extension template + [EnumMember(Value = "extension_template")] + ExtensionTemplate, + + /// External contacts + [EnumMember(Value = "external_contacts")] + ExternalContacts, + + /// Holiday hours + [EnumMember(Value = "holiday_hours")] + HolidayHours, + + /// Location + [EnumMember(Value = "location")] + Location, + + /// Multiple sites + [EnumMember(Value = "multiple_site")] + MultipleSite, + + /// Outbound number + [EnumMember(Value = "outbound_number")] + OutboundNumber, + + /// Phone number + [EnumMember(Value = "phone_number")] + PhoneNumber, + + /// Policy + [EnumMember(Value = "policy")] + Policy, + + /// Provision templates + [EnumMember(Value = "provision_template")] + ProvisionTemplate, + + /// Call recordings + [EnumMember(Value = "recording")] + Recording, + + /// Shared line groups + [EnumMember(Value = "shared_line_group")] + SharedLineGroup, + + /// SIP group + [EnumMember(Value = "sip_group")] + SipGroup, + + /// SIP trunk group + [EnumMember(Value = "sip_trunk_group")] + SipTrunkGroup, + + /// Spam + [EnumMember(Value = "spam")] + Spam, + + /// User + [EnumMember(Value = "user")] + User, + + /// Blocked user + [EnumMember(Value = "user_blocked")] + UserBlocked, + + /// Voicemail + [EnumMember(Value = "voicemail")] + Voicemail, + + /// Emergency number routing rule + [EnumMember(Value = "emergency_number_routing_rule")] + EmergencyNumberRoutingRule, + + /// Account options + [EnumMember(Value = "account_options")] + AccountOptions, + + /// Zoom Phone roles + [EnumMember(Value = "zoom_phone_role")] + ZoomPhoneRole, + + /// Zoom Rooms PBX Support + [EnumMember(Value = "zoom_room")] + ZoomRoom +} diff --git a/Source/ZoomNet/Resources/IReports.cs b/Source/ZoomNet/Resources/IReports.cs index cb7bd2e0f..ffb9334f1 100644 --- a/Source/ZoomNet/Resources/IReports.cs +++ b/Source/ZoomNet/Resources/IReports.cs @@ -99,5 +99,26 @@ public interface IReports /// The object of . /// public Task GetDailyUsageReportAsync(int year, int month, string groupId = null, CancellationToken cancellationToken = default); + + /// + /// Gets the phone system operation logs report. + /// + /// + /// The phone system operation logs report allows account owners and admins to view monthly Zoom phone related admin operation details. + /// + /// Start date. + /// End date. + /// Type of report. + /// The number of records returned within a single API call. + /// + /// The next page token is used to paginate through large result sets. + /// A next page token will be returned whenever the set of available results exceeds the current page size. + /// The expiration period for this token is 15 minutes. + /// + /// The cancellation token. + /// + /// An array of report items. + /// + public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default); } } diff --git a/Source/ZoomNet/Resources/Reports.cs b/Source/ZoomNet/Resources/Reports.cs index 7edb3ba60..8cbb6a04f 100644 --- a/Source/ZoomNet/Resources/Reports.cs +++ b/Source/ZoomNet/Resources/Reports.cs @@ -94,6 +94,22 @@ public Task GetDailyUsageReportAsync(int year, int month, stri .AsObject(); } + /// + public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default) + { + VerifyReportDatesRange(from, to); + Utils.ValidateRecordPerPage(recordsPerPage); + + return _client.GetAsync("report/operation_logs") + .WithArgument("from", from.ToZoomFormat(dateOnly: true)) + .WithArgument("to", to.ToZoomFormat(dateOnly: true)) + .WithArgument("category_type", type.ToEnumString()) + .WithArgument("page_size", recordsPerPage) + .WithArgument("next_page_token", pageToken) + .WithCancellationToken(cancellationToken) + .AsPaginatedResponseWithToken("participants"); + } + private static void VerifyReportDatesRange(DateTime from, DateTime to) { if (to < from) From 5db5f434f39de9ca6eba06d7db7f02020d8fb786 Mon Sep 17 00:00:00 2001 From: Macgyver Hoferkamp Date: Wed, 7 Jan 2026 12:59:45 -0600 Subject: [PATCH 2/3] Add support for Zoom Phone operation logs report * Introduced models for operation logs and their report, including OperationLog, OperationsLogReport, and ReportPhoneOperationsLogType. * Added GetOperationLogsReportAsync to IReports and implemented it in Reports to allow retrieval of Zoom Phone admin operation logs. --- Source/ZoomNet/Models/OperationLog.cs | 35 ++++ Source/ZoomNet/Models/OperationsLogReport.cs | 36 ++++ .../Models/ReportPhoneOperationsLogType.cs | 189 ++++++++++++++++++ Source/ZoomNet/Resources/IReports.cs | 21 ++ Source/ZoomNet/Resources/Reports.cs | 16 ++ 5 files changed, 297 insertions(+) create mode 100644 Source/ZoomNet/Models/OperationLog.cs create mode 100644 Source/ZoomNet/Models/OperationsLogReport.cs create mode 100644 Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs diff --git a/Source/ZoomNet/Models/OperationLog.cs b/Source/ZoomNet/Models/OperationLog.cs new file mode 100644 index 000000000..731ece511 --- /dev/null +++ b/Source/ZoomNet/Models/OperationLog.cs @@ -0,0 +1,35 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.Json.Serialization; +using System.Threading.Tasks; + +namespace ZoomNet.Models +{ + /// + /// Represents a log entry for an operation performed in Zoom. + /// + public class OperationLog + { + /// Gets or sets the action. + [JsonPropertyName("action")] + public string Action { get; set; } + + /// Gets or sets the operation type. + [JsonPropertyName("category_type")] + public string CategoryType { get; set; } + + /// Gets or sets the operation detail. + [JsonPropertyName("operation_detail")] + public string OperationDetail { get; set; } + + /// Gets or sets the Operator. + [JsonPropertyName("operator")] + public string Operator { get; set; } + + /// Gets or sets the timestamp. + [JsonPropertyName("time")] + public DateTime Time { get; set; } + } +} diff --git a/Source/ZoomNet/Models/OperationsLogReport.cs b/Source/ZoomNet/Models/OperationsLogReport.cs new file mode 100644 index 000000000..00d2f45a1 --- /dev/null +++ b/Source/ZoomNet/Models/OperationsLogReport.cs @@ -0,0 +1,36 @@ +using System; +using System.Text.Json.Serialization; + +namespace ZoomNet.Models +{ + /// + /// Daily Usage Report. + /// + public class OperationsLogReport + { + /// + /// Gets or sets the start date for this report. + /// + /// The start date for this report. + [JsonPropertyName("from")] + public DateTime From { get; set; } + + /// + /// Gets or sets the end date for this report. + /// + /// The end date for this report. + [JsonPropertyName("to")] + public DateTime To { get; set; } + + /// + /// Gets or sets the number of all records available across pages. + /// + /// The number of all records available across pages. + [JsonPropertyName("total_records")] + public int TotalRecords { get; set; } + + /// Gets or sets the daily usage summaries. + [JsonPropertyName("operation_logs")] + public OperationLog[] OperationLogs { get; set; } + } +} diff --git a/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs b/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs new file mode 100644 index 000000000..4cc1f47c8 --- /dev/null +++ b/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs @@ -0,0 +1,189 @@ +using System.Runtime.Serialization; + +namespace ZoomNet.Models; + +/// +/// Phone operation categories and their descriptions from Zoom Phone API. +/// . +public enum ReportPhoneOperationsLogType +{ + /// All Operation Types. + [EnumMember(Value = "all")] + All, + + /// Approved account. + [EnumMember(Value = "account_allow_list")] + AccountAllowList, + + /// Blocked account. + [EnumMember(Value = "account_blocked")] + AccountBlocked, + + /// Auto receptionist. + [EnumMember(Value = "auto_receptionist")] + AutoReceptionist, + + /// Directory backup routing rules. + [EnumMember(Value = "backup_routing_rule")] + BackupRoutingRule, + + /// Call monitoring (barge/monitor/whisper). + [EnumMember(Value = "barge_monitor_whisper")] + BargeMonitorWhisper, + + /// Call forwarding. + [EnumMember(Value = "call_forward")] + CallForward, + + /// Call logs. + [EnumMember(Value = "call_log")] + CallLog, + + /// Call queues. + [EnumMember(Value = "call_queue")] + CallQueue, + + /// Call setting. + [EnumMember(Value = "call_setting")] + CallSetting, + + /// Calling plan. + [EnumMember(Value = "calling_plan")] + CallingPlan, + + /// Company information. + [EnumMember(Value = "company_info")] + CompanyInfo, + + /// Contact center. + [EnumMember(Value = "contact_center")] + ContactCenter, + + /// Domain of the contact center. + [EnumMember(Value = "contact_center_domain")] + ContactCenterDomain, + + /// CSV file imports. + [EnumMember(Value = "csv_import")] + CsvImport, + + /// Custom voicemail greeting. + [EnumMember(Value = "custom_vm_greeting")] + CustomVoicemailGreeting, + + /// Call delegation. + [EnumMember(Value = "delegation")] + Delegation, + + /// Zoom Phone device. + [EnumMember(Value = "device")] + Device, + + /// Dial-by-name directory. + [EnumMember(Value = "dial_by_name")] + DialByName, + + /// Emergency address. + [EnumMember(Value = "emergency_address")] + EmergencyAddress, + + /// Emergency calling. + [EnumMember(Value = "emergency_calling")] + EmergencyCalling, + + /// Emergency service. + [EnumMember(Value = "emergency_service")] + EmergencyService, + + /// Extension number. + [EnumMember(Value = "extension")] + Extension, + + /// Extension line keys. + [EnumMember(Value = "extension_line_keys")] + ExtensionLineKeys, + + /// Extension template. + [EnumMember(Value = "extension_template")] + ExtensionTemplate, + + /// External contacts. + [EnumMember(Value = "external_contacts")] + ExternalContacts, + + /// Holiday hours. + [EnumMember(Value = "holiday_hours")] + HolidayHours, + + /// Location. + [EnumMember(Value = "location")] + Location, + + /// Multiple sites. + [EnumMember(Value = "multiple_site")] + MultipleSite, + + /// Outbound number. + [EnumMember(Value = "outbound_number")] + OutboundNumber, + + /// Phone number. + [EnumMember(Value = "phone_number")] + PhoneNumber, + + /// Policy. + [EnumMember(Value = "policy")] + Policy, + + /// Provision templates. + [EnumMember(Value = "provision_template")] + ProvisionTemplate, + + /// Call recordings. + [EnumMember(Value = "recording")] + Recording, + + /// Shared line groups. + [EnumMember(Value = "shared_line_group")] + SharedLineGroup, + + /// SIP group. + [EnumMember(Value = "sip_group")] + SipGroup, + + /// SIP trunk group. + [EnumMember(Value = "sip_trunk_group")] + SipTrunkGroup, + + /// Spam. + [EnumMember(Value = "spam")] + Spam, + + /// User. + [EnumMember(Value = "user")] + User, + + /// Blocked user. + [EnumMember(Value = "user_blocked")] + UserBlocked, + + /// Voicemail. + [EnumMember(Value = "voicemail")] + Voicemail, + + /// Emergency number routing rule. + [EnumMember(Value = "emergency_number_routing_rule")] + EmergencyNumberRoutingRule, + + /// Account options. + [EnumMember(Value = "account_options")] + AccountOptions, + + /// Zoom Phone roles. + [EnumMember(Value = "zoom_phone_role")] + ZoomPhoneRole, + + /// Zoom Rooms PBX Support. + [EnumMember(Value = "zoom_room")] + ZoomRoom +} diff --git a/Source/ZoomNet/Resources/IReports.cs b/Source/ZoomNet/Resources/IReports.cs index cb7bd2e0f..ffb9334f1 100644 --- a/Source/ZoomNet/Resources/IReports.cs +++ b/Source/ZoomNet/Resources/IReports.cs @@ -99,5 +99,26 @@ public interface IReports /// The object of . /// public Task GetDailyUsageReportAsync(int year, int month, string groupId = null, CancellationToken cancellationToken = default); + + /// + /// Gets the phone system operation logs report. + /// + /// + /// The phone system operation logs report allows account owners and admins to view monthly Zoom phone related admin operation details. + /// + /// Start date. + /// End date. + /// Type of report. + /// The number of records returned within a single API call. + /// + /// The next page token is used to paginate through large result sets. + /// A next page token will be returned whenever the set of available results exceeds the current page size. + /// The expiration period for this token is 15 minutes. + /// + /// The cancellation token. + /// + /// An array of report items. + /// + public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default); } } diff --git a/Source/ZoomNet/Resources/Reports.cs b/Source/ZoomNet/Resources/Reports.cs index 7edb3ba60..8cbb6a04f 100644 --- a/Source/ZoomNet/Resources/Reports.cs +++ b/Source/ZoomNet/Resources/Reports.cs @@ -94,6 +94,22 @@ public Task GetDailyUsageReportAsync(int year, int month, stri .AsObject(); } + /// + public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default) + { + VerifyReportDatesRange(from, to); + Utils.ValidateRecordPerPage(recordsPerPage); + + return _client.GetAsync("report/operation_logs") + .WithArgument("from", from.ToZoomFormat(dateOnly: true)) + .WithArgument("to", to.ToZoomFormat(dateOnly: true)) + .WithArgument("category_type", type.ToEnumString()) + .WithArgument("page_size", recordsPerPage) + .WithArgument("next_page_token", pageToken) + .WithCancellationToken(cancellationToken) + .AsPaginatedResponseWithToken("participants"); + } + private static void VerifyReportDatesRange(DateTime from, DateTime to) { if (to < from) From 1ef1c4677968a4937619e0589f56febdca7707f9 Mon Sep 17 00:00:00 2001 From: Macgyver Hoferkamp Date: Wed, 7 Jan 2026 15:30:06 -0600 Subject: [PATCH 3/3] Fix a few items with the Phone Operations Log Reporting. * Added a trailing comma to the ZoomRoom enum value in ReportPhoneOperationsLogType for consistency. * Corrected the API endpoint for Phone Operation Logs * Corrected the response key from 'participants' to 'operation_logs'. * Removed OperationLogReport entry as it is not needed. * Updated JSON serialization context --- .../Json/ZoomNetJsonSerializerContext.cs | 2 ++ Source/ZoomNet/Models/OperationsLogReport.cs | 36 ------------------- .../Models/ReportPhoneOperationsLogType.cs | 2 +- Source/ZoomNet/Resources/IReports.cs | 2 +- Source/ZoomNet/Resources/Reports.cs | 6 ++-- 5 files changed, 7 insertions(+), 41 deletions(-) delete mode 100644 Source/ZoomNet/Models/OperationsLogReport.cs diff --git a/Source/ZoomNet/Json/ZoomNetJsonSerializerContext.cs b/Source/ZoomNet/Json/ZoomNetJsonSerializerContext.cs index ed767869f..4868ee95b 100644 --- a/Source/ZoomNet/Json/ZoomNetJsonSerializerContext.cs +++ b/Source/ZoomNet/Json/ZoomNetJsonSerializerContext.cs @@ -254,6 +254,8 @@ namespace ZoomNet.Json [JsonSerializable(typeof(ZoomNet.Models.NoiseSuppressionType))] [JsonSerializable(typeof(ZoomNet.Models.NumberOfEmployees))] [JsonSerializable(typeof(ZoomNet.Models.OAuthGrantType))] + [JsonSerializable(typeof(ZoomNet.Models.OperationLog[]))] + [JsonSerializable(typeof(ZoomNet.Models.ReportPhoneOperationsLogType))] [JsonSerializable(typeof(ZoomNet.Models.Panelist))] [JsonSerializable(typeof(ZoomNet.Models.Participant))] [JsonSerializable(typeof(ZoomNet.Models.ParticipantChatSaveType))] diff --git a/Source/ZoomNet/Models/OperationsLogReport.cs b/Source/ZoomNet/Models/OperationsLogReport.cs deleted file mode 100644 index 00d2f45a1..000000000 --- a/Source/ZoomNet/Models/OperationsLogReport.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Text.Json.Serialization; - -namespace ZoomNet.Models -{ - /// - /// Daily Usage Report. - /// - public class OperationsLogReport - { - /// - /// Gets or sets the start date for this report. - /// - /// The start date for this report. - [JsonPropertyName("from")] - public DateTime From { get; set; } - - /// - /// Gets or sets the end date for this report. - /// - /// The end date for this report. - [JsonPropertyName("to")] - public DateTime To { get; set; } - - /// - /// Gets or sets the number of all records available across pages. - /// - /// The number of all records available across pages. - [JsonPropertyName("total_records")] - public int TotalRecords { get; set; } - - /// Gets or sets the daily usage summaries. - [JsonPropertyName("operation_logs")] - public OperationLog[] OperationLogs { get; set; } - } -} diff --git a/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs b/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs index 53794d161..0aa264705 100644 --- a/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs +++ b/Source/ZoomNet/Models/ReportPhoneOperationsLogType.cs @@ -185,5 +185,5 @@ public enum ReportPhoneOperationsLogType /// Zoom Rooms PBX Support. [EnumMember(Value = "zoom_room")] - ZoomRoom + ZoomRoom, } diff --git a/Source/ZoomNet/Resources/IReports.cs b/Source/ZoomNet/Resources/IReports.cs index ffb9334f1..5d30df619 100644 --- a/Source/ZoomNet/Resources/IReports.cs +++ b/Source/ZoomNet/Resources/IReports.cs @@ -119,6 +119,6 @@ public interface IReports /// /// An array of report items. /// - public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default); + public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default); } } diff --git a/Source/ZoomNet/Resources/Reports.cs b/Source/ZoomNet/Resources/Reports.cs index 8cbb6a04f..460342d33 100644 --- a/Source/ZoomNet/Resources/Reports.cs +++ b/Source/ZoomNet/Resources/Reports.cs @@ -95,19 +95,19 @@ public Task GetDailyUsageReportAsync(int year, int month, stri } /// - public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default) + public Task> GetOperationLogsReportAsync(DateTime from, DateTime to, ReportPhoneOperationsLogType type = ReportPhoneOperationsLogType.All, int recordsPerPage = 30, string pageToken = null, CancellationToken cancellationToken = default) { VerifyReportDatesRange(from, to); Utils.ValidateRecordPerPage(recordsPerPage); - return _client.GetAsync("report/operation_logs") + return _client.GetAsync("phone/reports/operationlogs") .WithArgument("from", from.ToZoomFormat(dateOnly: true)) .WithArgument("to", to.ToZoomFormat(dateOnly: true)) .WithArgument("category_type", type.ToEnumString()) .WithArgument("page_size", recordsPerPage) .WithArgument("next_page_token", pageToken) .WithCancellationToken(cancellationToken) - .AsPaginatedResponseWithToken("participants"); + .AsPaginatedResponseWithToken("operation_logs"); } private static void VerifyReportDatesRange(DateTime from, DateTime to)