openapi: 3.0.2 x-explorer-enabled: false x-samples-languages: - curl - node - java - javascript - python - go tags: - name: Dimensions description: A Dimension is a collection of related contact center objects used to provide a view of measurement data. - name: Reports description: A Report is a collection of contact center measurements related to a particular dimension. info: title: Analytics - Historical Data v2 description: 'The Analytics Historical API exposes the following functionality: - Listing the Dimension names for an Account. - Retrieving the content of a specified Dimension. - Listing the Report names for an Account. - Retrieving the content of a specific Report. ' contact: name: Avaya API Team url: https://developers.avayacloud.com/onecloud-ccaas email: apiteam@avaya.com license: name: Avaya Software Development Kit (SDK) Software License Terms url: http://support.avaya.com/css/P8/documents/101038288 version: 2.0.1 servers: - url: '{protocol}://{server}{basePath}' description: Open API variables: protocol: enum: - https default: https server: default: HOST-REGION.api.avayacloud.com basePath: default: /api/analytics/historical/v2 - url: '{protocol}://{server}:{port}' description: Internal API variables: protocol: enum: - http - https default: http server: default: analytics-historical-api port: enum: - '80' - '443' default: '80' security: - {} - BearerAuth: [] AppKey: [] paths: /accounts/{accountId}/dimensions:getNames: get: tags: - Dimensions summary: List Dimension Names description: Gets the list of dimensions for an Account. operationId: listDimensionNames parameters: - $ref: '#/components/parameters/accountId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DimensionNames' examples: default: $ref: '#/components/examples/DimensionNames' '400': description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorConstraintViolation' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServer' /accounts/{accountId}/dimensions/{dimensionName}: get: tags: - Dimensions summary: Get Dimension description: Gets the list of dimension data for a Dimension name. operationId: getDimension parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/dimensionName' - $ref: '#/components/parameters/pageSize' - $ref: '#/components/parameters/prevPageToken' - $ref: '#/components/parameters/nextPageToken' - $ref: '#/components/parameters/filter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/DimensionPage' examples: default: $ref: '#/components/examples/DimensionPage' '400': description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorConstraintViolation' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServer' /accounts/{accountId}/reports:getNames: get: tags: - Reports summary: List Report Names description: Gets the list of report names for an Account. operationId: listHistoricalReportNames parameters: - $ref: '#/components/parameters/accountId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReportNames' examples: default: $ref: '#/components/examples/ReportNames' '400': description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorConstraintViolation' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServer' /accounts/{accountId}/reports/{reportName}: get: tags: - Reports summary: Get Report description: Gets the dynamic list of report data for a Report name. All new measures are automatically added to the report. operationId: getHistoricalReport parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/reportName' - $ref: '#/components/parameters/pageSize' - $ref: '#/components/parameters/prevPageToken' - $ref: '#/components/parameters/nextPageToken' - $ref: '#/components/parameters/interval' - $ref: '#/components/parameters/filter' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ReportPage' examples: default: $ref: '#/components/examples/ReportPage' '400': description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorConstraintViolation' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServer' components: responses: Unauthorized: description: Unauthorized content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorUnauthorized' InternalServer: description: Internal Server Error content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorInternalServerError' Forbidden: description: Forbidden content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorForbidden' NotFound: description: Not Found content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorNotFound' schemas: Problem: type: object description: 'Problem Detail as a way to carry machine-readable details of errors in a HTTP response to avoid the need to define new error response formats for HTTP APIs RFC 7807 ' properties: type: type: string format: uri description: 'An absolute URI that identifies the problem type. When dereferenced, it SHOULD provide human-readable documentation for the problem type (e.g., using HTML). ' default: about:blank example: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#constraint-violation title: type: string description: 'A short, summary of the problem type. Written in english and readable for engineers (usually not suited for non technical stakeholders and not localized). ' example: Service Unavailable nullable: true status: type: integer format: int32 description: 'The HTTP status code generated by the origin server for this occurrence of the problem. ' minimum: 100 maximum: 600 exclusiveMaximum: true example: 503 nullable: true detail: type: string description: 'A human readable explanation specific to this occurrence of the problem. ' example: Connection to database timed out nullable: true instance: type: string format: uri description: 'An absolute URI that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. ' nullable: true violations: type: array description: 'A list of violations that occurred as a result of invalid data provided as part of a request. ' nullable: true items: type: object properties: field: type: string description: 'The name of the field in the request that caused the violation. This can be the name of a path parameter, query parameter, or a field within the request body. ' example: accountId message: type: string description: 'A human readable explanation specific to this occurrence of the violation. ' example: must match "^[a-zA-Z]{6}$" code: type: integer format: int32 description: 'The violation code generated by the server for this occurrence of the violation. Use this code when implementing any error handling logic instead of the message, as the message can change. ' example: 20006 example: - field: emailAddress message: must not be null code: 20002 - field: accountId message: must match "^[a-zA-Z]{6}$" code: 20006 ReportNames: description: List of report names type: array items: type: string ColumnHeader: type: object description: Name and data type of the column header properties: name: type: string description: Name of the header field example: agentFirstName type: type: string description: Data type of the header field example: string ReportPage: type: object description: Root response object for report http requests. properties: columnHeaders: type: array items: $ref: '#/components/schemas/ColumnHeader' records: type: array items: type: array items: type: string pagination: $ref: '#/components/schemas/CursorPagination' links: $ref: '#/components/schemas/Links' DimensionNames: type: array description: List of dimension names items: type: string DimensionPage: type: object description: Root response object for dimension http requests. properties: columnHeaders: type: array items: $ref: '#/components/schemas/ColumnHeader' records: type: array items: type: array items: type: string pagination: $ref: '#/components/schemas/CursorPagination' links: $ref: '#/components/schemas/Links' CursorPagination: type: object properties: pageSize: type: integer description: The max number of records that can be retrieved on this page. prevPageToken: type: string description: The Token to retrieve the prev page of records. nextPageToken: type: string description: The Token to retrieve the next page of records. Links: type: object properties: prev: type: string description: URL of the previous page. Blank if currently on the first page. next: type: string description: URL of the next page. Blank if currently on the last page. securitySchemes: BearerAuth: type: http scheme: bearer description: This API uses Bearer Token Authorization Flow bearerFormat: JWT AppKey: type: apiKey in: header name: appkey description: This API needs an appKey as header. parameters: accountId: name: accountId in: path description: The unique 6 character internal id that represents the customer account. required: true schema: type: string minLength: 6 maxLength: 6 pattern: ^[a-zA-Z]{6}$ example: ABCDEF dimensionName: name: dimensionName in: path description: The unique name of the dimension required: true schema: type: string minLength: 1 maxLength: 50 example: queues reportName: name: reportName in: path description: The unique name of the report required: true schema: type: string minLength: 1 maxLength: 50 examples: AgentDaily: value: AgentDaily AgentInterval: value: AgentInterval AgentByChannelDaily: value: AgentByChannelDaily AgentByChannelInterval: value: AgentByChannelInterval AgentByQueueDaily: value: AgentByQueueDaily AgentByQueueInterval: value: AgentByQueueInterval pageSize: name: pageSize in: query description: The maximum number of results per page. required: false schema: type: integer format: int32 default: 20 minimum: 1 maximum: 50 example: 20 nextPageToken: name: nextPageToken in: query description: The page token of the next set of records to retrieve, represented as unique 36 characters(uuid). required: false schema: type: string minLength: 36 maxLength: 36 example: 123e4567-e89b-12d3-a456-556642440000 prevPageToken: name: prevPageToken in: query description: The page token of the previous set of records to retrieve, represented as unique 36 characters(uuid). required: false schema: type: string minLength: 36 maxLength: 36 example: 123e4567-e89b-12d3-a456-556642440000 interval: name: interval in: query description: "Specify the interval range to be used.\nMust contain either a single datetime value or both 'starting'\ \ and 'ending' datetimes. The datetime format is dependent on the type of report selected which can derived from the\ \ 'reportName'.\n\nFor **daily reports** (reportName always ends with 'Daily' for example 'AgentDaily')\n - datetime\ \ implies specific day(s).\n - all datetime expressions should use YYYYMMDD format.\n - 'HHmm' values should be\ \ either omitted or replaced with 0000 – The API will return an error when other 'HHmm' values are specified.\n -\ \ Example values:\n - 20201201\n - starting:20201201\n - ending:20201225\n - starting:20201201,ending:20201225\n\ \nFor **interval reports** (reportName always ends with 'Interval' for example 'AgentInterval')\n - all datetime\ \ expressions should use YYYYMMDDHHmm format.\n 'mm' part can be used to indicate the 15 min interval such as '00',\ \ '15', '30' or '45' - The API will return an error when other 'mm' values are specified.\n - interval=YYYYMMDDHHmm\n\ \ - YYYYMMDDHH00 corresponds to >= 00 mins and < 15 mins interval\n - YYYYMMDDHH15 corresponds to >= 15 mins\ \ and < 30 mins interval\n - YYYYMMDDHH30 corresponds to >= 30 mins and < 45 mins interval\n - YYYYMMDDHH45\ \ corresponds to >= 45 mins and < 00 mins interval\n - interval=starting:YYYYMMDDHHmm\n - corresponds to >= YYYYMMDDHHmm\n\ \ - interval=ending:YYYYMMDDHHmm\n - corresponds to < YYYYMMDDHHmm\n - interval=starting:YYYYMMDDHHmm,ending:YYYYMMDDHHmm\n\ \ - starting:YYYYMMDDHH00,ending:YYYYMMDDHH30 corresponds to >= 00 mins and < 30 mins\n - starting:YYYYMMDDHH30,ending:YYYYMMDDHH30\ \ doesn't return data\n - Example values:\n - 202012010400\n - starting:202012010415\n - ending:202012251530\n\ \ - starting:202012010415,ending:202012251545\n\nFor **EngagementDetail** report\n - Every engagement is mapped\ \ to a 15 min interval according to its start time. For example, if engagement start time is 2024-08-15 06:23:10.422+00\ \ it will be reflected in the interval 202408150615\n - all datetime expressions should use YYYYMMDDHHmm format.\n\ \ 'mm' part can be used to indicate the 15 min interval such as '00', '15', '30' or '45' - The API will return\ \ an error when other 'mm' values are specified.\n - interval=YYYYMMDDHHmm\n - YYYYMMDDHH00 corresponds to >=\ \ 00 mins and < 15 mins interval\n - YYYYMMDDHH15 corresponds to >= 15 mins and < 30 mins interval\n - YYYYMMDDHH30\ \ corresponds to >= 30 mins and < 45 mins interval\n - YYYYMMDDHH45 corresponds to >= 45 mins and < 00 mins interval\n\ \ - interval=starting:YYYYMMDDHHmm\n - corresponds to >= YYYYMMDDHHmm\n - interval=ending:YYYYMMDDHHmm\n -\ \ corresponds to < YYYYMMDDHHmm\n - interval=starting:YYYYMMDDHHmm,ending:YYYYMMDDHHmm\n - ending interval is\ \ included in the report\n - starting:YYYYMMDDHH00,ending:YYYYMMDDHH30 corresponds to >= 00 mins and < 45 mins\n\ \ - starting:YYYYMMDDHH30,ending:YYYYMMDDHH30 corresponds to >= 30 mins and < 45 mins\n - Example values:\n\ \ - 202012010400\n - starting:202012010415\n - ending:202012251530\n - starting:202012010415,ending:202012251545\n\ \nFor **AgentLoginLogout** report\n - All datetime expressions for login/logout report should use the format YYYYMMDD\ \ or YYYYMMDDHHmm\n - interval=starting:YYYYMMDDHHmm\n - corresponds to >= YYYYMMDDHHmm\n - interval=starting:YYYYMMDD\n\ \ - corresponds to >= YYYYMMDD0000\n - interval=ending:YYYYMMDDHHmm\n - corresponds to < YYYYMMDDHHmm\n -\ \ interval=ending:YYYYMMDD\n - corresponds to < YYYYMMDD0000\n - interval=starting:YYYYMMDDHHmm,ending:YYYYMMDDHHmm\n\ \ - starting:YYYYMMDDHH00,ending:YYYYMMDDHH30 corresponds to >= 00 mins and < 30 mins\n - starting:YYYYMMDDHH12,ending:YYYYMMDDHH25\ \ corresponds to >= 12 mins and < 25 mins\n - starting:YYYYMMDDHH30,ending:YYYYMMDDHH30 doesn't return data\n \ \ - interval=starting:YYYYMMDD,ending:YYYYMMDD\n - corresponds to >= YYYYMMDD0000 (starting) and < YYYYMMDD0000\ \ (ending)\n - Example values:\n - starting:20201201\n - starting:202012010417\n - ending:20201225\n \ \ - ending:202012251533\n - starting:20201201,ending:20201225\n - starting:202012010417,ending:202012251533\n" required: false schema: type: string minLength: 8 maxLength: 41 examples: singleQuarter: value: '202012250400' summary: Interval reports. Data filtering by certain date singleDay: value: '20201225' summary: Daily reports. Data filtering by certain date startingQuarter: value: starting:202012250400 summary: Interval reports. Data filtering from specified starting date till ending of data rows startingDay: value: starting:20201201 summary: Daily reports. Data filtering from specified starting date till ending of data rows endingQuarter: value: ending:202012251500 summary: Interval reports. Data filtering from beginning of data rows till specified ending date endingDay: value: ending:20201225 summary: Daily reports. Data filtering from beginning of data rows till specified ending date bothQuarter: value: starting:202012250400,ending:202012251500 summary: Interval reports. Data filtering from specified starting date till specified ending date bothDay: value: starting:20201201,ending:20201225 summary: Daily reports. Data filtering from specified starting date till specified ending date filter: name: filter in: query description: "Specifies details of a row filter. The allowed format:\n - Begins with the column name to be filtered,\ \ followed by a colon, then:\n - Either an exact string to match, or\n - A string expression including the * wildcard\ \ character\n" required: false schema: type: string minLength: 3 maxLength: 256 examples: equals: value: agentLastName:agentKaren summary: Exact string to match like: value: agentLastName:agentK* summary: Expression including the * wildcard character examples: ReportNames: value: - AgentInterval - AgentDaily - AgentByChannelInterval - AgentByChannelDaily - QueueInterval - QueueDaily - QueueByChannelInterval - QueueByChannelDaily - AgentByQueueInterval - AgentByQueueDaily - EngagementDetail - AgentLoginLogout ReportPage: value: columnHeaders: - name: agent_sk type: number - name: day_sk type: number - name: last_changed type: string - name: timezone_name type: string - name: abandoned_from_alerting type: number - name: active_duration type: number - name: acw_count type: number - name: acw_duration type: number - name: ad_hoc_email_initiated type: number - name: ad_hoc_email_sent type: number - name: agent_logon_duration type: number - name: agent_nr_reason_code_duration type: number - name: alert_duration type: number - name: answered type: number - name: barged type: number - name: barged_duration type: number - name: barging type: number - name: barging_duration type: number - name: coached type: number - name: coached_duration type: number - name: coaching type: number - name: coaching_duration type: number - name: completed type: number - name: conference_accepted_from_queue type: number - name: conference_accepted_from_user type: number - name: conference_initiated_to_queue type: number - name: conference_initiated_to_user type: number - name: consult_accepted_from_queue type: number - name: consult_accepted_from_user type: number - name: consulted_duration type: number - name: consulting_duration type: number - name: consult_initiated_to_queue type: number - name: consult_initiated_to_user type: number - name: external_calls_duration type: number - name: external_voice_calls type: number - name: forwarded type: number - name: hold type: number - name: hold_duration type: number - name: idle_time_duration type: number - name: not_answered type: number - name: observed type: number - name: observed_duration type: number - name: observing type: number - name: observing_duration type: number - name: offered type: number - name: total_engagements_in_acw type: number - name: total_time_not_ready type: number - name: transfer_accepted_from_queue type: number - name: transfer_accepted_from_user type: number - name: transfer_initiated_to_queue type: number - name: transfer_initiated_to_user type: number - name: transfer_to_external_cancelled type: number - name: transfer_to_external_failed type: number - name: transfer_to_external_initiated type: number - name: transfer_to_queue_cancelled type: number - name: transfer_to_queue_failed type: number - name: transfer_to_user_cancelled type: number - name: transfer_to_user_failed type: number - name: conference_to_external type: number - name: consulting_external_duration type: number - name: consult_to_external type: number - name: warm_transfer_to_external type: number - name: warm_transfer_accepted_from_queue type: number - name: warm_transfer_accepted_from_user type: number - name: warm_transfer_initiated_to_queue type: number - name: warm_transfer_initiated_to_user type: number - name: rollup_seq_id type: number - name: comp_active_duration type: number - name: comp_logon_duration type: number - name: comp_nr_reason_duration type: number - name: comp_total_time_not_ready type: number - name: transfer_initiated_to_queue_with_draft type: number - name: transfer_initiated_to_user_with_draft type: number - name: supervisor_sk type: string - name: agent_id type: string - name: agent_login_id type: string - name: agent_first_name type: string - name: agent_last_name type: string - name: agent_display_name type: string - name: agent_user_handle type: string - name: agent_type type: string - name: attributes type: string - name: row_active_date type: string - name: row_inactive_date type: string - name: active_record type: boolean - name: is_unknown type: boolean - name: entity_deleted type: boolean - name: redacted type: boolean records: - - '28147' - '20240722' - '2024-07-22 14:32:31.356334+00' - Australia/Sydney - '0' - '8783' - '0' - '0' - '1' - '0' - '27573703' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '1' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '27564837' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '0' - '1767' - '8783' - '0' - '0' - '0' - '0' - '0' - '-1' - ecd42fec-f48b-4492-99e4-91ec2561eee5 - emailchatagent1@email.com - emailchatagent1 - '03' - emailchatagent1,03 - ecd42fec-f48b-4492-99e4-91ec2561eee5 - Supervisor - '[{"value": "English", "category": "Language"}]' - '2021-09-03 10:15:00+00' - '2021-09-28 07:21:14.046617+00' - f - f - f - f pagination: pageSize: 20 prevPageToken: '' nextPageToken: 123e4567-e89b-12d3-a456-556642440000 links: prev: '' next: /api/analytics/historical/v2/accounts/{accountId}/reports/AgentDaily?interval=202109031000&nextPageToken=123e4567-e89b-12d3-a456-556642440000&pageSize=20 DimensionNames: value: - agents - queues DimensionPage: value: columnHeaders: - name: agent_sk type: string - name: supervisor_sk type: string - name: agent_id type: string - name: agent_login_id type: string - name: agent_first_name type: string - name: agent_last_name type: string - name: agent_display_name type: string - name: agent_user_handle type: string - name: agent_type type: string - name: attributes type: string - name: row_active_date type: string - name: row_inactive_date type: string - name: active_record type: boolean - name: is_unknown type: boolean - name: entity_deleted type: boolean - name: last_changed type: string - name: redacted type: boolean records: - - '2' - '-1' - '123456' - agent@email.com - agent - '03' - agent,03 - '123456' - Supervisor - '[{"value": "English", "category": "Language"}]' - '2021-09-03 10:15:00+00' - '9999-12-31 00:00:00+00' - t - f - f - '2021-09-03 10:31:13.066584+00' - f pagination: pageSize: 20 prevPageToken: '' nextPageToken: 123e4567-e89b-12d3-a456-556642440000 links: prev: '' next: /api/analytics/historical/v2/accounts/{accountId}/dimensions/agents?filter=agent_id:123456&nextPageToken=123e4567-e89b-12d3-a456-556642440000&pageSize=20 ErrorConstraintViolation: description: Constraint Violation value: type: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#constraint-violation title: Constraint Violation status: 400 detail: A problem that indicates a syntactically correct, yet semantically illegal request. The Server can not process this request until the client resolves the semantic errors described in the violations section. violations: - field: accountId message: must match "^[a-zA-Z]{6}$" code: 20006 ErrorUnauthorized: description: Unauthorized value: type: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#unauthorized title: Unauthorized status: 401 detail: This operation requires authentication. See https://developers.avayacloud.com/onecloud-ccaas/docs/how-to-authenticate-with-ccaas-apis ErrorForbidden: description: Forbidden value: type: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#forbidden title: Forbidden status: 403 detail: According to the access control policy the current user and/or accountId does not have permission to access this resource. ErrorNotFound: description: Not Found value: type: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#resource-not-found title: Resource Not Found status: 404 detail: Resource not found. ErrorInternalServerError: description: Server Error value: type: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#server-error title: Server Error status: 500 detail: An internal server error was encountered.