openapi: 3.0.2
x-explorer-enabled: false
x-samples-languages:
- curl
- node
- java
- javascript
- python
- go
info:
title: Admin - Timetable
description: 'Timetable is a configuration of working hours for a specific Contact Center account. Each account can have
multiple
timetables. It is possible to configure a timetable with intervals - days of the week or specific dates with a
range of working hours, as well as holidays, which are non-working days.
'
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
tags:
- name: Audit Records
description: Allows to get the information about admin activities
- name: Holiday
description: Holidays are non-working days where the contact center is not staffed by agents and therefore fall outside
of the operating business hours.
- name: Interval
description: Intervals are specific dates or working days of the week when the contact center is fully operational and staffed
by agents and therefore fall with the operating business hours.
- name: Timetable
description: Timetables are a time zone specific schedule of holidays (non-working days) and intervals (working days).
servers:
- url: '{protocol}://{server}{basePath}'
description: Open API
variables:
protocol:
enum:
- https
default: https
server:
default: HOST-REGION.api.avayacloud.com
basePath:
default: /api/business-hours/v1
- url: '{protocol}://{server}:{port}'
description: Internal API
variables:
protocol:
enum:
- http
- https
default: http
server:
default: timetable-service
port:
enum:
- '80'
- '443'
default: '80'
security:
- {}
- BearerAuth: []
AppKey: []
paths:
/accounts/{accountId}/audit-records:search:
post:
tags:
- Audit Records
summary: Search Audit Records
description: '**This API requires the Account Administrator role.**
Searches the audit records based on the supplied filter.
The value of **searchKeyword** can be used to perform a text search across all fields within an audit record (excluding
date).
'
operationId: searchAuditRecords
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/pageNumber'
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/orderBy'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AuditSearchFilter'
examples:
Search-Audit-Records:
$ref: '#/components/examples/SearchAuditRecordsRequest'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AuditRecords'
examples:
Search-Audit-Records:
$ref: '#/components/examples/SearchAuditRecordsResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
/accounts/{accountId}/audit-records:export:
post:
tags:
- Audit Records
summary: Export Audit Records
description: '**This API requires the Account Administrator role.**
Exports the audit records within the date-time range in CSV format.
A maximum of 1000 records can be exported for a given date-time range per request.
If the number of records within a date-time range exceeds the maximum then this API will
return a _HTTP 400 Bad Request_. This response will contain:
* A human readable message explaining the issue.
* A unique error code that a client can use to identify the issue.
'
operationId: exportAuditRecords
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/orderBy'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AuditSearchFilter'
examples:
Export-Audit-Records:
$ref: '#/components/examples/SearchAuditRecordsRequest'
responses:
'200':
description: OK
content:
text/csv:
schema:
type: string
format: binary
example: 'Account Id,Date,Event,Author,IP Address,Type,Audit Data
ABCDEF,2021-11-14T09:24:05.234Z,CREATED,jsmith@example.com,165.225.72.60,TIMETABLE,"{"timetableId":"5702a5be-51f9-4493-a83e-c09e768059e5","name":"TestTimetable","description":"Test
Timetable","timeZone":"Pacific/Midway","autoDaylightSavingTime":false}"
'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
/accounts/{accountId}/timetables:
parameters:
- $ref: '#/components/parameters/accountId'
get:
tags:
- Timetable
summary: List Timetables
operationId: listTimetables
description: 'Gets the list of Timetables for an Account.
'
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageNumber'
responses:
'200':
$ref: '#/components/responses/TimetablesPageResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'500':
$ref: '#/components/responses/InternalServer'
post:
tags:
- Timetable
summary: Create Timetable
operationId: createTimetable
description: 'Creates a new Timetable.
'
requestBody:
$ref: '#/components/requestBodies/TimetableRequestBody'
responses:
'201':
$ref: '#/components/responses/TimetableResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
$ref: '#/components/responses/Conflict'
'500':
$ref: '#/components/responses/InternalServer'
/accounts/{accountId}/timetables/{timetableId}:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/timetableId'
get:
tags:
- Timetable
summary: Get Timetable
operationId: getTimetable
description: 'Gets a Timetable by ID.
'
responses:
'200':
$ref: '#/components/responses/TimetableResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
put:
tags:
- Timetable
summary: Update Timetable
operationId: updateTimetable
description: 'Updates a Timetable.
'
requestBody:
$ref: '#/components/requestBodies/TimetableRequestBody'
responses:
'200':
$ref: '#/components/responses/TimetableResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'500':
$ref: '#/components/responses/InternalServer'
delete:
tags:
- Timetable
summary: Delete Timetable
operationId: deleteTimetable
description: 'Deletes a Timetable.
'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
/accounts/{accountId}/timetables/{timetableId}/intervals:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/timetableId'
get:
tags:
- Interval
summary: List Intervals
operationId: listIntervals
description: 'Gets the list of Intervals for a Timetable.
'
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageNumber'
- $ref: '#/components/parameters/intervalType'
responses:
'200':
$ref: '#/components/responses/IntervalsPageResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
post:
tags:
- Interval
summary: Create Interval
operationId: createInterval
description: 'Creates a new Interval.
'
requestBody:
$ref: '#/components/requestBodies/IntervalRequestBody'
responses:
'201':
$ref: '#/components/responses/IntervalResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
/accounts/{accountId}/timetables/{timetableId}/intervals/{intervalId}:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/timetableId'
- $ref: '#/components/parameters/intervalId'
get:
tags:
- Interval
summary: Get Interval
operationId: getInterval
description: 'Gets an Interval by ID.
'
responses:
'200':
$ref: '#/components/responses/IntervalResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
put:
tags:
- Interval
summary: Update Interval
operationId: updateInterval
description: 'Updates an Interval.
'
requestBody:
$ref: '#/components/requestBodies/IntervalRequestBody'
responses:
'200':
$ref: '#/components/responses/IntervalResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
delete:
tags:
- Interval
summary: Delete Interval
operationId: deleteInterval
description: 'Deletes an Interval.
'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
/accounts/{accountId}/timetables/{timetableId}/holidays:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/timetableId'
get:
tags:
- Holiday
summary: List Holidays
operationId: listHolidays
description: 'Gets the list of Holidays for a Timetable.
'
parameters:
- $ref: '#/components/parameters/pageSize'
- $ref: '#/components/parameters/pageNumber'
responses:
'200':
$ref: '#/components/responses/HolidaysPageResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
post:
tags:
- Holiday
summary: Create Holiday
operationId: createHoliday
description: 'Creates a new Holiday.
'
requestBody:
$ref: '#/components/requestBodies/HolidayRequestBody'
responses:
'201':
$ref: '#/components/responses/HolidayResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
/accounts/{accountId}/timetables/{timetableId}/holidays/{holidayId}:
parameters:
- $ref: '#/components/parameters/accountId'
- $ref: '#/components/parameters/timetableId'
- $ref: '#/components/parameters/holidayId'
get:
tags:
- Holiday
summary: Get Holiday
operationId: getHoliday
description: 'Gets a Holiday by ID.
'
responses:
'200':
$ref: '#/components/responses/HolidayResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
put:
tags:
- Holiday
summary: Update Holiday
operationId: updateHoliday
description: 'Updates a Holiday.
'
requestBody:
$ref: '#/components/requestBodies/HolidayRequestBody'
responses:
'200':
$ref: '#/components/responses/HolidayResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
delete:
tags:
- Holiday
summary: Delete Holiday
operationId: deleteHoliday
description: 'Deletes a Holiday.
'
responses:
'204':
description: No Content
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'500':
$ref: '#/components/responses/InternalServer'
components:
parameters:
accountId:
name: accountId
description: The unique 6 character internal id that represents the customer account.
required: true
in: path
schema:
type: string
minLength: 6
maxLength: 6
pattern: ^[a-zA-Z]{6}$
example: ABCDEF
timetableId:
name: timetableId
in: path
required: true
description: The unique 36 character internal id that represents the timetable.
schema:
type: string
minLength: 36
maxLength: 36
pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
example: 8c872648-2b50-11ec-8d3d-0242ac130003
intervalId:
name: intervalId
in: path
required: true
description: The unique 36 character internal id that represents the interval.
schema:
type: string
minLength: 36
maxLength: 36
pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
example: b2fb1032-2b50-11ec-8d3d-0242ac130003
holidayId:
name: holidayId
in: path
required: true
description: The unique 36 character internal id that represents the holiday.
schema:
type: string
minLength: 36
maxLength: 36
pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
example: 72f456b0-2b50-11ec-8d3d-0242ac130003
pageSize:
name: pageSize
description: The maximum number of results per page.
required: false
in: query
schema:
type: integer
format: int32
default: 5
minimum: 5
maximum: 50
example: 5
pageNumber:
name: pageNumber
description: The target page of results.
required: false
in: query
schema:
type: integer
format: int32
default: 1
minimum: 1
example: 1
intervalType:
name: intervalType
in: query
required: false
description: The type of interval
schema:
$ref: '#/components/schemas/IntervalType'
orderBy:
name: orderBy
in: query
description: 'Field name on which sorting needs to be performed.
The possible fields you ordered on are **date (date of audit record)** and **author**.
Field Names are case-sensitive (should be written as it is in description).
The default sorting order is descending. To specify ascending order, a suffix "asc" should be added.
For example, "date asc" for ascending or "date desc" for descending".
'
schema:
type: string
minLength: 4
maxLength: 23
example: date desc
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
requestBodies:
TimetableRequestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Timetable'
examples:
CreateOrUpdate-Timetable:
$ref: '#/components/examples/TimetableCreate'
required: true
description: Create/Update Timetable request
IntervalRequestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Interval'
examples:
CreateOrUpdate-Days-Intervals:
$ref: '#/components/examples/IntervalDaysCreate'
CreateOrUpdate-Dates-Intervals:
$ref: '#/components/examples/IntervalDatesCreate'
required: true
description: Create/Update Interval request
HolidayRequestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/Holiday'
examples:
CreateOrUpdate-Holiday:
$ref: '#/components/examples/HolidayCreate'
required: true
description: Create/Update Holiday request
responses:
TimetablesPageResponse:
description: Timetable Page Response
content:
application/json:
schema:
$ref: '#/components/schemas/TimetablesPage'
examples:
Timetable-Page-Response:
$ref: '#/components/examples/TimetablePageResponse'
TimetableResponse:
description: Timetable Response
content:
application/json:
schema:
$ref: '#/components/schemas/Timetable'
examples:
Timetable-Response:
$ref: '#/components/examples/TimetableResponse'
IntervalsPageResponse:
description: Interval Page Response
content:
application/json:
schema:
$ref: '#/components/schemas/IntervalsPage'
examples:
Interval-Page-Response:
$ref: '#/components/examples/IntervalPageResponse'
IntervalResponse:
description: Interval Response
content:
application/json:
schema:
$ref: '#/components/schemas/Interval'
examples:
Interval-with-Days-Response:
$ref: '#/components/examples/IntervalDaysResponse'
Interval-with-Dates-Response:
$ref: '#/components/examples/IntervalDatesResponse'
HolidaysPageResponse:
description: Holiday Page Response
content:
application/json:
schema:
$ref: '#/components/schemas/HolidaysPage'
examples:
Holiday-Page-Response:
$ref: '#/components/examples/HolidayPageResponse'
HolidayResponse:
description: Holiday Response
content:
application/json:
schema:
$ref: '#/components/schemas/Holiday'
examples:
Holiday-Response:
$ref: '#/components/examples/HolidayResponse'
BadRequest:
description: BadRequest
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
examples:
default:
$ref: '#/components/examples/ErrorConstraintViolation'
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'
Conflict:
description: Conflict
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
examples:
default:
$ref: '#/components/examples/ErrorConflict'
schemas:
Pagination:
type: object
properties:
pageNumber:
type: integer
description: The current page number.
pageSize:
type: integer
description: The max number of records that can be retrieved on this page.
total:
type: integer
description: The total number 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.
Timetable:
type: object
required:
- name
- description
- timeZone
properties:
timetableId:
type: string
readOnly: true
description: The unique 36 character internal id that represents the timetable.
minLength: 36
maxLength: 36
pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
name:
type: string
description: The name of the timetable. Timetable names are not unique.
maxLength: 256
description:
type: string
description: The description of the timetable
maxLength: 1024
timeZone:
type: string
description: The time zone of the timetable. Formatted as an IANA Time Zone Database name, e.g. 'Europe/Zurich'
maxLength: 50
autoDaylightSavingTime:
type: boolean
default: false
description: When true auto daylight saving time will be enabled. Default value is false.
TimetablesPage:
description: A paginated list of timetables
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
timetables:
type: array
description: List of timetables
items:
$ref: '#/components/schemas/Timetable'
links:
$ref: '#/components/schemas/Links'
Interval:
type: object
required:
- name
- description
- timeFrom
- timeTo
- type
- appliesTo
properties:
intervalId:
type: string
readOnly: true
description: The unique 36 character internal id that represents the interval.
minLength: 36
maxLength: 36
pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
name:
type: string
description: The name of the interval. Interval names are not unique.
maxLength: 256
description:
type: string
description: The description of the interval
maxLength: 1024
timeFrom:
type: string
pattern: ^(\d){2}:(\d){2}:(\d){2}$
description: The start time of the interval in 24 hour format = ' HH:mm:ss' i.e. 08:00:00
minLength: 8
maxLength: 8
example: 08:00:00
timeTo:
type: string
pattern: ^(\d){2}:(\d){2}:(\d){2}$
description: The end time of the interval in 24 hour format = 'HH:mm:ss' i.e. 17:00:00
minLength: 8
maxLength: 8
example: '17:00:00'
type:
$ref: '#/components/schemas/IntervalType'
appliesTo:
type: array
description: List of specific dates (when type is DATES) or days (when type is DAYS) for which the time interval
will be applied. When type is DATES then list must contain dates in the format 'YYYY-MM-dd' containing no more
than 366 days, when type is DAY the list must contain days of the week in the format 'dddd', it has to be no more
than 7 days.
minItems: 1
maxItems: 366
items:
type: string
maxLength: 10
description: Specific date or day of the week
example: '2021-01-03'
IntervalsPage:
description: A paginated list of intervals
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
intervals:
type: array
description: List of intervals
items:
$ref: '#/components/schemas/Interval'
links:
$ref: '#/components/schemas/Links'
IntervalType:
type: string
description: The type of interval
enum:
- DAYS
- DATES
example: DAYS
Holiday:
type: object
required:
- name
- dates
properties:
holidayId:
type: string
readOnly: true
description: The unique 36 character internal id that represents the holiday.
minLength: 36
maxLength: 36
pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
name:
type: string
description: The name of the holiday. Holiday names are not unique.
maxLength: 256
description:
type: string
description: The description of the holiday
maxLength: 1024
dates:
type: array
description: List of specific dates the holiday applies to.
minItems: 1
maxItems: 356
items:
type: string
format: date
maxLength: 10
description: Date of holiday in ISO 8601 format. Format is 'YYYY-MM-dd' i.e. 2021-03-17
example: '2021-01-03'
example:
- '2021-01-01'
- '2021-01-02'
- '2021-01-03'
- '2021-01-04'
HolidaysPage:
description: A paginated list of holidays
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
holidays:
type: array
description: List of holidays
items:
$ref: '#/components/schemas/Holiday'
links:
$ref: '#/components/schemas/Links'
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
AuditSearchFilter:
type: object
description: The filter to be applied when searching for audit records.
properties:
startDate:
type: string
format: date-time
description: The starting datetime to use when searching for audit records (in ISO 8601 format including timezone,
'yyyy-MM-dd'T'HH:mm:ss[.SSS]Z').
example: '2021-11-13T20:25:39.534Z'
endDate:
type: string
format: date-time
description: The ending datetime to use when searching for audit records (in ISO 8601 format including timezone,
'yyyy-MM-dd'T'HH:mm:ss[.SSS]Z').
example: '2021-11-15T16:07:12.723Z'
author:
type: string
description: The ID of the author who changed the auditable object. This can be a user within the system or an automated
app.
maxLength: 255
pattern: ^[a-zA-Z0-9@._-]+$
example: jsmith@example.com
event:
type: string
description: "This field indicates the type of event that occurred on the auditable object.\n\nAn explanation of\
\ the values is listed below:\n * CREATED - A new auditable object was created.\n * UPDATED - An existing auditable\
\ object was updated.\n * DELETED - An existing auditable object was deleted.\n"
enum:
- CREATED
- UPDATED
- DELETED
type:
type: string
enum:
- TIMETABLE
description: 'The type of auditable object.
Accepted values:
* TIMETABLE
'
example: TIMETABLE
ipAddress:
description: The originating IP Address of the author who changed the auditable object.
type: string
maxLength: 50
example: 165.225.72.60
searchKeyword:
description: Keyword to search for across all the audit records.
type: string
maxLength: 255
required:
- startDate
- endDate
- type
AuditRecords:
description: A collection of audit records.
type: object
properties:
pagination:
$ref: '#/components/schemas/Pagination'
auditRecords:
type: array
items:
$ref: '#/components/schemas/AuditRecord'
links:
$ref: '#/components/schemas/Links'
AuditRecord:
type: object
description: An audit record. Captures who, what, and when an auditable object changed within the system.
required:
- date
- event
- author
- type
- ipAddress
- auditData
properties:
date:
type: string
description: The date and time of when the audit record was created.
example: '2021-06-24T19:03:01.463Z'
event:
type: string
description: "This field indicates the type of event that occurred on the auditable object.\n\nAn explanation of\
\ the values is listed below:\n * CREATED - A new auditable object was created.\n * UPDATED - An existing auditable\
\ object was updated.\n * DELETED - An existing auditable object was deleted.\n"
enum:
- CREATED
- UPDATED
- DELETED
author:
type: string
description: The ID of the author who changed the auditable object. This can be a user within the system or an automated
app.
example: jsmith@example.com
type:
type: string
enum:
- TIMETABLE
description: 'The type of auditable object.
Accepted values:
* TIMETABLE
'
maxLength: 20
example: TIMETABLE
ipAddress:
description: The originating IP Address of the author who changed the auditable object.
type: string
maxLength: 50
pattern: (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
example: 165.225.72.60
auditData:
$ref: '#/components/schemas/JsonNode'
JsonNode:
type: object
title: JsonNode
description: 'Contains the state of the auditable object at the time the audit record was created.
'
examples:
TimetableCreate:
value:
name: Timetable 2021
description: A timetable for 2021 that contains a five-day working week without interruptions
timeZone: Europe/Dublin
autoDaylightSavingTime: true
TimetableResponse:
value:
timetableId: 8c872648-2b50-11ec-8d3d-0242ac130003
name: Timetable 2021
description: A timetable for 2021 that contains a five-day working week without interruptions
timeZone: Europe/Dublin
autoDaylightSavingTime: true
TimetablePageResponse:
value:
pagination:
pageNumber: 2
pageSize: 10
total: 11
timetables:
- timetableId: 8c872648-2b50-11ec-8d3d-0242ac130003
name: Timetable 2021
description: A timetable for 2021 that contains a five-day working week without interruptions
timeZone: Europe/Dublin
autoDaylightSavingTime: true
links:
prev: /api/business-hours/v1/accounts/JDBUTC/timetables?pageNumber=2&pageSize=10
next: ''
IntervalDatesCreate:
value:
name: New Year's support
description: Reduced opening hours during the New Year holidays.
timeFrom: '10:00:00'
timeTo: '15:00:00'
type: DATES
appliesTo:
- '2021-01-03'
- '2021-01-04'
- '2021-01-05'
- '2021-01-06'
IntervalDaysCreate:
value:
name: New Year's support
description: Standard opening hours
timeFrom: 09:00:00
timeTo: '17:00:00'
type: DAYS
appliesTo:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
IntervalDaysResponse:
value:
intervalId: b2fb1032-2b50-11ec-8d3d-0242ac130003
name: New Year's support
description: Standard opening hours
timeFrom: 09:00:00
timeTo: '17:00:00'
type: DAYS
appliesTo:
- MONDAY
- TUESDAY
- WEDNESDAY
- THURSDAY
- FRIDAY
- SATURDAY
- SUNDAY
IntervalDatesResponse:
value:
intervalId: b2fb1032-2b50-11ec-8d3d-0242ac130003
name: New Year's support
description: Reduced opening hours during the New Year holidays.
timeFrom: '10:00:00'
timeTo: '15:00:00'
type: DATES
appliesTo:
- '2021-01-03'
- '2021-01-04'
- '2021-01-05'
- '2021-01-06'
IntervalPageResponse:
value:
pagination:
pageNumber: 2
pageSize: 10
total: 11
intervals:
- intervalId: b2fb1032-2b50-11ec-8d3d-0242ac130003
name: New Year's support
description: Reduced opening hours during the New Year holidays.
timeFrom: '10:00:00'
timeTo: '15:00:00'
type: DATES
appliesTo:
- '2021-01-03'
- '2021-01-04'
- '2021-01-05'
- '2021-01-06'
links:
prev: /api/business-hours/v1/accounts/JDBUTC/timetables/8c872648-2b50-11ec-8d3d-0242ac130003/intervals?pageNumber=2&pageSize=10
next: ''
HolidayCreate:
value:
name: Christmas Holidays
description: Christmas holidays
dates:
- '2021-12-24'
- '2021-12-25'
- '2021-12-26'
HolidayResponse:
value:
holidayId: 72f456b0-2b50-11ec-8d3d-0242ac130003
name: Christmas Holidays
description: Christmas holidays
dates:
- '2021-12-24'
- '2021-12-25'
- '2021-12-26'
HolidayPageResponse:
value:
pagination:
pageNumber: 2
pageSize: 10
total: 12
holidays:
- holidayId: 72f456b0-2b50-11ec-8d3d-0242ac130003
name: Christmas Holidays
description: Christmas holidays
dates:
- '2021-12-24'
- '2021-12-25'
- '2021-12-26'
- holidayId: fef7047e-2b72-11ec-8d3d-0242ac130003
name: Saint Patrick's Day
description: Saint Patrick's Day
dates:
- '2022-03-17'
- '2022-03-17'
- '2023-03-17'
links:
prev: /api/business-hours/v1/accounts/JDBUTC/timetables/8c872648-2b50-11ec-8d3d-0242ac130003/holidays?pageNumber=2&pageSize=10
next: ''
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.
ErrorConflict:
description: Conflict
value:
type: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#conflict
title: Conflict
status: 409
detail: Conflict data.
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.
SearchAuditRecordsRequest:
value:
startDate: '2021-11-13T20:25:39.534Z'
endDate: '2021-11-15T16:07:12.723Z'
event: CREATED
author: jsmith@example.com
type: TIMETABLE
ipAddress: 165.225.72.60
searchKeyword: timetable
SearchAuditRecordsResponse:
value:
pagination:
pageNumber: 2
pageSize: 5
total: 20
auditRecords:
- date: '2021-11-14T09:24:05.234Z'
event: CREATED
author: jsmith@example.com
ipAddress: 165.225.72.60
type: TIMETABLE
auditData:
autoDaylightSavingTime: false
description: Test Timetable
name: TestTimetable
timeZone: Pacific/Midway
timetableId: 5702a5be-51f9-4493-a83e-c09e768059e5
links:
next: /api/business-hours/v1/accounts/ASDJGE/audit-records:search?pageNumber=3&pageSize=5
prev: /api/business-hours/v1/accounts/ASDJGE/audit-records:search?pageNumber=1&pageSize=5