RingCentral Business Analytics API
The Business Analytics API from RingCentral — 2 operation(s) for business analytics.
The Business Analytics API from RingCentral — 2 operation(s) for business analytics.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/ringcentral-business-analytics-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: RingCentral Adaptive Cards Business Analytics API
description: RingCentral API specification
version: 1.0.58-20240529-47eda8bd
contact:
name: RingCentral Developers Support
url: https://developers.ringcentral.com/support
termsOfService: https://www.ringcentral.com/legal/apilitos.html
license:
name: RingCentral API License Agreement
url: https://www.ringcentral.com/legal/apilitos.html
servers:
- url: https://platform.ringcentral.com
description: Production API entry point
- url: https://media.ringcentral.com
description: Production Media entry point
- url: https://platform.devtest.ringcentral.com
description: Developer sandbox API entry point
- url: https://platform.devtest.ringcentral.com
description: Developer sandbox Media entry point
security:
- OAuth2: []
tags:
- name: Business Analytics
paths:
/analytics/calls/v1/accounts/{accountId}/aggregation/fetch:
post:
tags:
- Business Analytics
summary: Calls Aggregation Data
description: Returns call aggregations filtered by parameters specified
operationId: analyticsCallsAggregationFetch
parameters:
- $ref: '#/components/parameters/AccountId'
- name: page
in: query
description: The current page number (positive numbers only)
required: false
schema:
type: integer
format: int32
minimum: 1
- name: perPage
in: query
description: Number of records displayed on a page (positive numbers only, max value of 200)
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 200
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AggregationRequest'
required: true
responses:
'200':
description: Calls Aggregation
content:
application/json:
schema:
$ref: '#/components/schemas/AggregationResponse'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalError'
x-throttling-group: Light
x-app-permission: Analytics
/analytics/calls/v1/accounts/{accountId}/timeline/fetch:
post:
tags:
- Business Analytics
summary: Calls Timeline Data
description: Returns time-value data aggregations filtered by parameters specified
operationId: analyticsCallsTimelineFetch
parameters:
- $ref: '#/components/parameters/AccountId'
- name: interval
in: query
description: Aggregation interval
required: true
schema:
$ref: '#/components/schemas/Interval'
- name: page
in: query
description: The current page number (positive numbers only)
required: false
schema:
type: integer
format: int32
minimum: 1
- name: perPage
in: query
description: Number of records displayed on a page (positive numbers only, max value of 20)
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 20
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TimelineRequest'
required: true
responses:
'200':
description: Calls Timeline
content:
application/json:
schema:
$ref: '#/components/schemas/TimelineResponse'
'400':
$ref: '#/components/responses/InvalidRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalError'
x-throttling-group: Light
x-app-permission: Analytics
components:
schemas:
TimelineResponseOptionsTimers:
type: object
properties:
allCallsDuration:
type: boolean
description: Include data for all calls duration
callsDurationByDirection:
type: boolean
description: Include breakdown of calls duration by direction (Inbound, Outbound)
callsDurationByOrigin:
type: boolean
description: Include breakdown of calls duration by origin (Internal, External)
callsDurationByResponse:
type: boolean
description: Include breakdown of calls duration by response (Answered, NotAnswered, Connected, NotConnected)
callsSegmentsDuration:
type: boolean
description: Include breakdown of calls duration by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)
callsDurationByResult:
type: boolean
description: Include breakdown of calls duration by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)
callsDurationByCompanyHours:
type: boolean
description: Include breakdown of calls duration by company hours (BusinessHours, AfterHours)
callsDurationByQueueSla:
type: boolean
description: Include breakdown of calls duration by queue SLA (InSLA, OutSLA). This timer is only applicable to Queues grouping
callsDurationByType:
type: boolean
description: Include breakdown of calls duration by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound)
description: Options for selecting breakdown for calls duration
TimeSpentFilter:
type: object
properties:
minSeconds:
type: integer
description: Minimum duration in seconds
format: int64
maxSeconds:
type: integer
description: Maximum duration in seconds
format: int64
description: Filtering of calls based on the time spent by specified mailbox(es) on call
MembersGroupingOptions:
type: string
description: The selected data scope
enum:
- Department
- UserGroup
- Queue
- Site
CallsBySegments:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsBySegmentsBreakdown'
description: Data for calls with breakdown by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)
AggregationResponse:
required:
- paging
- data
type: object
properties:
paging:
$ref: '#/components/schemas/ResponsePaging'
data:
$ref: '#/components/schemas/AggregationResponseData'
AllCalls:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
type: number
description: Value for all calls
format: double
description: Data for all calls
CallsByDirection:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsByDirectionBreakdown'
description: Data for calls with breakdown by direction (Inbound, Outbound)
CallAction:
type: string
enum:
- HoldOff
- HoldOn
- ParkOn
- ParkOff
- BlindTransfer
- WarmTransfer
- DTMFTransfer
AggregationInterval:
type: string
description: Time interval which will be used for aggregation. Can be `Hour`, `Day`, `Week` or `Month`
enum:
- Hour
- Day
- Week
- Month
ValueType:
type: string
description: Unit of the result value
enum:
- Percent
- Seconds
- Instances
CallsByCompanyHoursBreakdown:
required:
- businessHours
- afterHours
type: object
properties:
businessHours:
type: number
description: Value for BusinessHours company hours
format: double
afterHours:
type: number
description: Value for AfterHours company hours
format: double
description: Result breakdown by company hours
CallResponse:
type: string
enum:
- Answered
- NotAnswered
- Connected
- NotConnected
CallsByType:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsByTypeBreakdown'
description: Data for calls with breakdown by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound, Overflow)
CallsCounters:
type: object
properties:
allCalls:
$ref: '#/components/schemas/AllCalls'
callsByDirection:
$ref: '#/components/schemas/CallsByDirection'
callsByOrigin:
$ref: '#/components/schemas/CallsByOrigin'
callsByResponse:
$ref: '#/components/schemas/CallsByResponse'
callsSegments:
$ref: '#/components/schemas/CallsBySegments'
callsByResult:
$ref: '#/components/schemas/CallsByResult'
callsActions:
$ref: '#/components/schemas/CallsByActions'
callsByCompanyHours:
$ref: '#/components/schemas/CallsByCompanyHours'
callsByQueueSla:
$ref: '#/components/schemas/CallsByQueueSla'
callsByType:
$ref: '#/components/schemas/CallsByType'
queueOpportunities:
$ref: '#/components/schemas/QueueOpportunities'
description: Call volume data for the specified grouping
TimelineResponse:
required:
- paging
- data
type: object
properties:
paging:
$ref: '#/components/schemas/ResponsePaging'
data:
$ref: '#/components/schemas/TimelineResponseData'
AdvancedTimeSettings:
type: object
properties:
includeDays:
type: array
items:
$ref: '#/components/schemas/DayOfWeek'
description: Days of the week for which the report is calculated
includeHours:
type: array
items:
$ref: '#/components/schemas/HoursInterval'
description: Hours of the day for which the report is calculated
description: Allows more granular control over time included in the report
DirectGrouping:
required:
- groupBy
type: object
properties:
groupBy:
$ref: '#/components/schemas/GroupingOptions'
keys:
type: array
items:
type: string
description: This field can be used to specify unique identifiers of entities selected in `groupBy` field. The response data will be limited to these entities only
description: This grouping allows to specify the `groupBy` option by which the data in the response will be grouped
CallsByTypeBreakdown:
required:
- direct
- fromQueue
- parkRetrieval
- transferred
- outbound
- overflow
type: object
properties:
direct:
type: number
description: Value for Direct type
format: double
fromQueue:
type: number
description: Value for FromQueue type
format: double
parkRetrieval:
type: number
description: Value for ParkRetrieval type
format: double
transferred:
type: number
description: Value for Transferred type
format: double
outbound:
type: number
description: Value for Outbound type
format: double
overflow:
type: number
description: Value for Overflow type
format: double
description: Result breakdown by type
AggregationType:
type: string
description: Counter aggregation type. Can be `Sum`, `Average`, `Min`, `Max` or `Percent`
enum:
- Sum
- Average
- Max
- Min
- Percent
CallSegmentOptions:
type: string
description: Call segment for filtering
enum:
- Ringing
- LiveTalk
- Hold
- Park
- Transfer
- IvrPrompt
- Voicemail
- VmGreeting
- Setup
CallsBySegmentsBreakdown:
required:
- ringing
- liveTalk
- hold
- park
- transfer
- ivrPrompt
- voicemail
- vmGreeting
- setup
type: object
properties:
ringing:
type: number
description: Value for Ringing segment
format: double
liveTalk:
type: number
description: Value for LiveTalk segment
format: double
hold:
type: number
description: Value for Hold segment
format: double
park:
type: number
description: Value for Park segment
format: double
transfer:
type: number
description: Value for Transfer segment
format: double
ivrPrompt:
type: number
description: Value for IVRPrompt segment
format: double
voicemail:
type: number
description: Value for Voicemail segment
format: double
vmGreeting:
type: number
description: Value for VMGreeting segment
format: double
setup:
type: number
description: Value for Setup segment
format: double
description: Result breakdown by segments
CompanyHoursOptions:
type: string
enum:
- BusinessHours
- AfterHours
CallsByOrigin:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsByOriginBreakdown'
description: Data for calls with breakdown by origin (Internal, External)
CallsByResult:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsByResultBreakdown'
description: Data for calls with breakdown by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)
ApiError:
type: object
description: Generalized API error structure suitable for any error type
required:
- errorCode
- message
properties:
errorCode:
type: string
description: Logical error code (typically, 3 letters followed with number, dash separated)
example: XXX-123
message:
type: string
description: User-friendly error message
example: Something went wrong
additionalProperties: true
Grouping:
description: This field specifies the dimensions by which the response should be grouped and specific keys to narrow the response. See also [Call Aggregate reports](https://developers.ringcentral.com/guide/analytics/aggregate) or [Call Timeline reports](https://developers.ringcentral.com/guide/analytics/timeline) pages in the developer guide for more information
oneOf:
- $ref: '#/components/schemas/DirectGrouping'
- $ref: '#/components/schemas/GroupingByMembers'
Interval:
type: string
enum:
- Hour
- Day
- Week
- Month
KeyInfo:
type: object
properties:
extensionNumber:
type: string
description: Extension's number
name:
type: string
description: Extension's name
description: Additional info about the key
Origin:
type: string
enum:
- Internal
- External
QueueSlaOptions:
type: string
enum:
- InSla
- OutSla
ApiErrorResponseModel:
type: object
description: Standard error response model which is returned in case of any unsuccessful operation
required:
- errors
properties:
errors:
type: array
description: The array of errors (there will be just one in the most of the cases)
minItems: 1
items:
$ref: '#/components/schemas/ApiError'
TimelineResponsePoint:
required:
- time
type: object
properties:
time:
type: string
description: Time point in RFC 3339 format
format: date-time
timers:
$ref: '#/components/schemas/CallsTimers'
counters:
$ref: '#/components/schemas/CallsCounters'
ExtensionFilters:
type: object
properties:
fromIds:
type: array
items:
type: string
description: List of extension ids to match against incoming calls, joined via OR condition. Only applicable for `groupByMembers` options and Users, IVRs, SharedLines and Queues in `groupBy`
toIds:
type: array
items:
type: string
description: List of extension ids to match against outgoing calls, joined via OR condition. Limited to the extension id that first accepted the call. Only applicable for `groupByMembers` options and Users, IVRs and SharedLines in `groupBy`
description: Specifies filtering based on extension ids
TimelineResponseOptionsCounters:
type: object
properties:
allCalls:
type: boolean
description: Include data for total calls count
callsByDirection:
type: boolean
description: Include breakdown of calls count by direction (Inbound, Outbound)
callsByOrigin:
type: boolean
description: Include breakdown of calls count by origin (Internal, External)
callsByResponse:
type: boolean
description: Include breakdown of calls count by response (Answered, NotAnswered, Connected, NotConnected)
callsSegments:
type: boolean
description: Include breakdown of calls count by segments (Ringing, LiveTalk, Hold, Park, Transfer, IvrPrompt, Voicemail, VmGreeting, Setup)
callsByResult:
type: boolean
description: Include breakdown of calls count by result (Completed, Abandoned, Voicemail, Unknown, Missed, Accepted)
callsByCompanyHours:
type: boolean
description: Include breakdown of calls count by company hours (BusinessHours, AfterHours)
callsByQueueSla:
type: boolean
description: Include breakdown of calls count by queue SLA (InSLA, OutSLA). This counter is only applicable to Queues grouping
callsByActions:
type: boolean
description: Include breakdown of calls count by action (HoldOff, HoldOn, ParkOn, ParkOff, BlindTransfer, WarmTransfer, DTMFTransfer)
callsByType:
type: boolean
description: Include breakdown of calls count by type (Direct, FromQueue, ParkRetrieval, Transferred, Outbound)
queueOpportunities:
type: boolean
description: 'Include breakdown of calls count by the total number of times a Queue call was presented to the user. It is limited to `groupBy` Users and `groupByMembers` (Department, Queue, Site, UserGroup) grouping. Only the listed below options for call filters are applicable to `queueOpportunities` and provide meaningful results: `queues` (selected queue extension ids), `callResults` (Missed, Abandoned), `callResponses` (Answered, NotAnswered), `origins` (Internal, External)'
description: Options for selecting breakdown for calls count
CallsByActions:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsByActionsBreakdown'
description: Data for calls with breakdown by action (HoldOff, HoldOn, ParkOn, ParkOff, BlindTransfer, WarmTransfer, DTMFTransfer)
ApiErrorWithParameter:
description: 'The error model with additional attributes which can be used for HTTP 400/409
This is a deprecated model: "ApiError" model can be used instead with arbitrary additional parameters
'
allOf:
- $ref: '#/components/schemas/ApiError'
- type: object
properties:
parameterName:
type: string
description: The name of the API parameter/attribute which caused the error
parameterValue:
type: string
description: The value of the API parameter/attribute which caused the error
AggregationResponseRecord:
required:
- key
type: object
properties:
key:
type: string
description: Grouping key
info:
$ref: '#/components/schemas/KeyInfo'
timers:
$ref: '#/components/schemas/CallsTimers'
counters:
$ref: '#/components/schemas/CallsCounters'
GroupingOptions:
type: string
description: The selected grouping option
enum:
- Company
- CompanyNumbers
- Users
- Queues
- IVRs
- SharedLines
- UserGroups
- Sites
- Departments
CallsByQueueSlaBreakdown:
required:
- inSla
- outOfSla
type: object
properties:
inSla:
type: number
description: Value for InSla queue SLA
format: double
outOfSla:
type: number
description: Value for OutSla queue SLA
format: double
description: Result breakdown by queue SLA
CallsByResultBreakdown:
required:
- completed
- abandoned
- voicemail
- missed
- accepted
- unknown
type: object
properties:
completed:
type: number
description: Value for Completed result
format: double
abandoned:
type: number
description: Value for Abandoned result
format: double
voicemail:
type: number
description: Value for Voicemail result
format: double
missed:
type: number
description: Value for Missed result
format: double
accepted:
type: number
description: Value for Accepted result
format: double
unknown:
type: number
description: Value for Unknown result
format: double
description: Result breakdown by call result
CallsByResponseBreakdown:
required:
- answered
- notAnswered
- connected
- notConnected
type: object
properties:
answered:
type: number
description: Value for Answered response
format: double
notAnswered:
type: number
description: Value for NotAnswered response
format: double
connected:
type: number
description: Value for Connected response
format: double
notConnected:
type: number
description: Value for NotConnected response
format: double
description: Result breakdown by response
CallResult:
type: string
enum:
- Completed
- Abandoned
- Voicemail
- Unknown
- Missed
- Accepted
AggregationResponseData:
required:
- groupedBy
type: object
properties:
groupedBy:
$ref: '#/components/schemas/GroupingOptions'
records:
type: array
items:
$ref: '#/components/schemas/AggregationResponseRecord'
description: A list of call aggregations as per the grouping and filtering options specified in the request
description: Aggregation result
TimelineResponseOptions:
type: object
properties:
counters:
$ref: '#/components/schemas/TimelineResponseOptionsCounters'
timers:
$ref: '#/components/schemas/TimelineResponseOptionsTimers'
description: Counters and timers options for calls breakdown
ParameterizedErrorResponseModel:
type: object
description: Standard error response which may include parameterized errors
required:
- errors
properties:
errors:
type: array
description: The array of errors (there will be just one in the most of the cases)
minItems: 1
items:
$ref: '#/components/schemas/ApiErrorWithParameter'
Direction:
type: string
enum:
- Inbound
- Outbound
AggregationRequest:
required:
- grouping
- timeSettings
- responseOptions
type: object
properties:
grouping:
$ref: '#/components/schemas/Grouping'
timeSettings:
$ref: '#/components/schemas/TimeSettings'
callFilters:
$ref: '#/components/schemas/CallFilters'
responseOptions:
$ref: '#/components/schemas/AggregationResponseOptions'
TimeRange:
required:
- timeFrom
- timeTo
type: object
properties:
timeFrom:
type: string
description: The start date-time for resulting records in RFC 3339 format including offset between local time and UTC, for example 2016-03-15T18:07:52.534Z
format: date-time
timeTo:
type: string
description: The end date-time for resulting records in RFC 3339 format including offset between local time and UTC, for example 2016-03-15T18:07:52.534Z
format: date-time
description: Time range for the request
QueueOpportunitiesAggregationType:
type: string
description: Counter aggregation type for queue opportunities, limited to `Sum` only.
enum:
- Sum
TimelineRequest:
required:
- grouping
- timeSettings
- responseOptions
type: object
properties:
grouping:
$ref: '#/components/schemas/Grouping'
timeSettings:
$ref: '#/components/schemas/TimeSettings'
callFilters:
$ref: '#/components/schemas/CallFilters'
responseOptions:
$ref: '#/components/schemas/TimelineResponseOptions'
CallsByResponse:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsByResponseBreakdown'
description: Data for calls with breakdown by response (Answered, NotAnswered, Connected, NotConnected)
DayOfWeek:
type: string
enum:
- Sunday
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
- Saturday
TimelineResponseRecord:
required:
- key
type: object
properties:
key:
type: string
description: Grouping key
info:
$ref: '#/components/schemas/KeyInfo'
points:
type: array
items:
$ref: '#/components/schemas/TimelineResponsePoint'
description: List of requested call data time-value points
TimelineResponseData:
required:
- groupedBy
type: object
properties:
groupedBy:
$ref: '#/components/schemas/GroupingOptions'
records:
type: array
items:
$ref: '#/components/schemas/TimelineResponseRecord'
description: List of call data as per the grouping and filtering options specified in the request
description: A list of time-value points of call data as per the grouping and filtering options specified in the request
QueueOpportunities:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
type: number
description: Value for queue opportunities
format: double
description: Queue opportunities data for the specified grouping
CallSegmentLengthFilter:
type: object
properties:
minSeconds:
type: integer
description: Minimum duration of segment in seconds
format: int64
maxSeconds:
type: integer
description: Maximum duration of segment in seconds
format: int64
description: Duration bounds for the segment
HoursInterval:
required:
- from
- to
type: object
properties:
from:
type: string
description: Time in format hh:mm
to:
type: string
description: Time in format hh:mm
CallsByCompanyHours:
required:
- valueType
- values
type: object
properties:
valueType:
$ref: '#/components/schemas/ValueType'
values:
$ref: '#/components/schemas/CallsByCompanyHoursBreakdown'
description: Data for calls with breakdown by company hours (BusinessHours, AfterHours)
ResponsePaging:
required:
- page
- perPage
- totalPages
- totalElements
type: object
properties:
page:
type: integer
description: The current page number
format: int64
perPage:
type: integer
description: How many items are displayed on the page
format: int64
totalPages:
type: integer
description: The total number of pages
format: int64
totalElements:
type: integer
description: The total number of items in the dataset
format: int64
description: Paging information
CallsByOriginBreakdown:
required:
- internal
- external
type: object
properties:
internal:
type: number
description: Value for Internal origin
format: double
external:
type: number
description: Value for External origin
format: double
description: Result breakdown by origin
AggregationResponseOptionsCounters:
type: object
properties:
allCalls:
required:
- aggregationType
type: object
properties:
aggregationType:
$ref: '#/components/schemas/AggregationType'
aggregationInterval:
$ref: '#/components/schemas/AggregationInterval'
description: Aggregation of all calls count
callsByDirection:
required:
- aggregationType
type: object
properties:
aggregationType:
$ref: '#/components/schemas/AggregationType'
aggregationInterval:
$ref: '#/components/schemas/AggregationInterval'
description: Aggregation of calls count by direction (Inbound, Outbound)
callsByOrigin:
required:
- aggregationType
type: object
properties:
aggregationType:
$ref: '#/components/schemas/AggregationType'
aggregationInterval:
$ref: '#/components/schemas/AggregationInterval'
description: Aggregation of calls count by origin (Internal, External)
callsByResponse:
required:
- aggregationType
type: object
properties:
aggregationType:
$ref: '#/components/schemas/AggregationType'
aggregationInterval:
$ref: '#/components/schemas/AggregationInterval'
description: Aggregation of calls count by response (Answered, NotAnswered, Connected, NotConnected)
callsSegments:
required:
- aggregationType
type: object
properties:
aggregationType:
$ref: '#/components/schemas/AggregationType'
aggregationInterval:
$ref: '#/components/schemas/AggregationInterval'
# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ringcentral/refs/heads/main/openapi/ringcentral-business-analytics-api-openapi.yml