/// <summary> /// Retrieve the details of a meeting. /// </summary> /// <param name="meetingId">The meeting ID or meeting UUID. If given the meeting ID it will take the last meeting instance.</param> /// <param name="type">The type of meetings. Allowed values: Past, PastOne, Live.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns> /// The <see cref="DashboardMeetingMetrics" />. /// </returns> public Task <DashboardMeetingMetrics> GetMeetingAsync(string meetingId, DashboardMeetingType type = DashboardMeetingType.Live, CancellationToken cancellationToken = default) { return(_client .GetAsync($"metrics/meetings/{meetingId}") .WithArgument("type", JToken.Parse(JsonConvert.SerializeObject(type)).ToString()) .WithCancellationToken(cancellationToken) .AsObject <DashboardMeetingMetrics>()); }
/// <summary> /// Retrieve the sharing and recording details of participants from live or past webinars. /// </summary> /// <param name="webinarId">The webinar ID or webinar UUID. If given the webinar ID it will take the last webinar instance.</param> /// <param name="type">The type of webinars. Allowed values: Past, PastOne, Live.</param> /// <param name="pageSize">The number of records returned within a single API call.</param> /// <param name="pageToken"> /// 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. /// </param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns> /// The <see cref="ParticipantSharingDetails">sharing details for the webinars participants.</see>. /// </returns> public Task <PaginatedResponseWithToken <ParticipantSharingDetails> > GetAllWebinarParticipantSharingDetailsAsync(string webinarId, DashboardMeetingType type = DashboardMeetingType.Live, int pageSize = 30, string pageToken = null, CancellationToken cancellationToken = default) { if (pageSize < 1 || pageSize > 300) { throw new ArgumentOutOfRangeException(nameof(pageSize), "Page size must be between 1 and 300"); } return(_client .GetAsync($"metrics/webinars/{webinarId}/participants/sharing") .WithArgument("type", JToken.Parse(JsonConvert.SerializeObject(type)).ToString()) .WithArgument("page_size", pageSize) .WithArgument("next_page_token", pageToken) .WithCancellationToken(cancellationToken) .AsPaginatedResponseWithToken <ParticipantSharingDetails>("participants")); }
/// <summary> /// Retrieve data on total live or past meetings that occurred during a specified period of time. /// Only data from within the last 6 months will be returned. /// </summary> /// <param name="from"> /// Date to start searching from. Should be within a month of "to" as only a months worth of data is returned at a time. /// </param> /// <param name="to">Date to end search.</param> /// <param name="type">The type of meetings. Allowed values: Past, PastOne, Live.</param> /// <param name="pageSize">The number of records returned within a single API call.</param> /// <param name="pageToken"> /// 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. /// </param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns> /// An array of <see cref="DashboardMeetingMetrics">meetings</see>. /// </returns> public Task <PaginatedResponseWithTokenAndDateRange <DashboardMeetingMetrics> > GetAllMeetingsAsync(DateTime from, DateTime to, DashboardMeetingType type = DashboardMeetingType.Live, int pageSize = 30, string pageToken = null, CancellationToken cancellationToken = default) { if (pageSize < 1 || pageSize > 300) { throw new ArgumentOutOfRangeException(nameof(pageSize), "Page size must be between 1 and 300"); } return(_client .GetAsync($"metrics/meetings") .WithArgument("type", JToken.Parse(JsonConvert.SerializeObject(type)).ToString()) .WithArgument("from", from.ToString("yyyy-MM-dd")) .WithArgument("to", to.ToString("yyyy-MM-dd")) .WithArgument("page_size", pageSize) .WithArgument("next_page_token", pageToken) .WithCancellationToken(cancellationToken) .AsPaginatedResponseWithTokenAndDateRange <DashboardMeetingMetrics>("meetings")); }
/// <summary> /// Retrieve the quality of service for participants from live or past webinars. /// This data indicates the connection quality for sending/receiving video, audio, and shared content. /// If nothing is being sent or received at that time, no information will be shown in the fields. /// </summary> /// <param name="webinarId">The webinar ID or webinar UUID. If given the webinar ID it will take the last webinar instance.</param> /// <param name="participantId">The participant id.</param> /// <param name="type">The type of webinars. Allowed values: Past, PastOne, Live.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The <see cref="DashboardMeetingParticipantQos"/> quality of service metrics for the participant.</returns> public Task <DashboardMeetingParticipantQos> GetWebinarParticipantQosAsync(string webinarId, string participantId, DashboardMeetingType type = DashboardMeetingType.Live, CancellationToken cancellationToken = default) { return(_client .GetAsync($"metrics/webinars/{webinarId}/participants/{participantId}/qos") .WithArgument("type", JToken.Parse(JsonConvert.SerializeObject(type)).ToString()) .WithCancellationToken(cancellationToken) .AsObject <DashboardMeetingParticipantQos>()); }