openapi: 3.2.0
info:
title: Analytics - Historical Data v1 Reports API
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: 1.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/v1
- 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: []
tags:
- name: Reports
description: A Report is a collection of contact center measurements related to a particular dimension.
paths:
/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 fixed list of report data for a Report name. The list of fixed measures is not updated when new measures are introduced.
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:
examples:
ReportNames:
value:
- AgentInterval
- AgentDaily
- AgentByChannelInterval
- AgentByChannelDaily
- QueueInterval
- QueueDaily
- QueueByChannelInterval
- QueueByChannelDaily
- AgentByQueueInterval
- AgentByQueueDaily
- EngagementDetail
- AgentLoginLogout
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.
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
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.
ReportPage:
value:
columnHeaders:
- name: agent_sk
type: number
- name: day_sk
type: number
- name: last_changed
type: string
- name: rollup_seq_id
type: number
- 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: comp_active_duration
type: number
- name: completed
type: number
- name: comp_logon_duration
type: number
- name: comp_nr_reason_duration
type: number
- name: comp_total_time_not_ready
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: conference_to_external
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: consulting_external_duration
type: number
- name: consult_initiated_to_queue
type: number
- name: consult_initiated_to_user
type: number
- name: consult_to_external
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: 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: warm_transfer_to_external
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'
- '20210903'
- '2021-09-03 14:31:00.967772+00'
- '1767'
- Australia/Sydney
- '0'
- '154936'
- '0'
- '0'
- '44943'
- '9'
- '5'
- '0'
- '0'
- '0'
- '0'
- '0'
- '0'
- '0'
- '0'
- '9'
- '1'
- '3'
- '4'
- '3'
- '0'
- '0'
- '0'
- '0'
- '0'
- '0'
- '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'
- '-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/v1/accounts/{accountId}/reports/AgentDaily?interval=202109031000&nextPageToken=123e4567-e89b-12d3-a456-556642440000&pageSize=20
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
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.
parameters:
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
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
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
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
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
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
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
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'
NotFound:
description: Not Found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
examples:
default:
$ref: '#/components/examples/ErrorNotFound'
Forbidden:
description: Forbidden
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
examples:
default:
$ref: '#/components/examples/ErrorForbidden'
schemas:
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.
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
- 'null'
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
status:
type:
- integer
- 'null'
format: int32
description: 'The HTTP status code generated by the origin server for this occurrence of the problem.
'
minimum: 100
example: 503
exclusiveMaximum: 600
detail:
type:
- string
- 'null'
description: 'A human readable explanation specific to this occurrence of the problem.
'
example: Connection to database timed out
instance:
type:
- string
- 'null'
format: uri
description: 'An absolute URI that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.
'
violations:
type:
- array
- 'null'
description: 'A list of violations that occurred as a result of invalid data provided as part of a request.
'
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
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.
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'
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
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.
x-explorer-enabled: false
x-samples-languages:
- curl
- node
- java
- javascript
- python
- go