openapi: 3.2.0 info: title: Digital - Custom Chat Sessions API description: This API facilitates session-based communication. Only "Chat" channel is supported now. 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/digital/channel/v1 - url: '{protocol}://{server}:{port}' description: Internal API variables: protocol: enum: - http - https default: http server: default: msg-web-gateway port: enum: - '80' - '443' default: '80' security: - {} - BearerAuth: [] AppKey: [] tags: - name: Sessions description: Sessions are used to hold context information about the customer and the clients used by the customer. A customer can have multiple active sessions at the same time. Sessions can be passed on any explicit requests made on engagements so that all the activities can be correlated back to sessions that caused it. paths: /accounts/{accountId}/sessions: post: tags: - Sessions summary: Create Session description: Creates a new client session for the customer. A single customer can have multiple active sessions concurrently. For example, if a customer is logged-in through a mobile device and a computer, activities from both the devices can be represented using two separate sessions. operationId: createDigitalSession parameters: - $ref: '#/components/parameters/accountId' requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateSession' examples: Create-Session: $ref: '#/components/examples/CreateSession' description: request required: true responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/SessionCreated' examples: Session-Created: $ref: '#/components/examples/GetSession' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '500': $ref: '#/components/responses/InternalServerError' deprecated: false /accounts/{accountId}/sessions/{sessionId}: get: tags: - Sessions summary: Get Session description: Gets the details of an existing session by sessionId. operationId: getDigitalSession parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/sessionId' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Session' examples: Get-Session: $ref: '#/components/examples/GetSession' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' deprecated: false delete: tags: - Sessions summary: Delete Session description: Deletes the specified session. operationId: deleteDigitalSession parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/sessionId' - name: reason in: query description: The reason for deleting the customers client session required: true schema: type: string enum: - USER_CLOSED - USER_INACTIVE - SYSTEM_CLOSED - UNKNOWN default: USER_CLOSED example: USER_CLOSED 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/InternalServerError' deprecated: false /accounts/{accountId}/sessions/{sessionId}:appendIdentifiers: post: tags: - Sessions summary: Append Customer Identifiers description: Appends customer identifiers to an existing session. If the key of the identifier already exists, the new value will be appended to the existing list. operationId: appendIdentifiersInDigitalSession parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/sessionId' requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomerIdentifiers' examples: Append-Identifiers: $ref: '#/components/examples/AppendIdentifiers' description: request required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Session' examples: Append-Identifiers-Response: $ref: '#/components/examples/AppendIdentifiersSessionResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' deprecated: false /accounts/{accountId}/sessions/{sessionId}:updateSessionParameters: post: tags: - Sessions summary: Update Session Parameters description: Updates the session parameters of an existing session. If the key of the parameter already exists, it will be updated with the new value else both the key and the value will be added to existing parameters. operationId: updateSessionParametersInDigitalSession parameters: - $ref: '#/components/parameters/accountId' - $ref: '#/components/parameters/sessionId' requestBody: content: application/json: schema: $ref: '#/components/schemas/SessionParameters' examples: Update-Session-Parameters: $ref: '#/components/examples/UpdateSessionParameters' description: request required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Session' examples: Update-Session-Parameters-Response: $ref: '#/components/examples/UpdateSessionParametersSessionResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' '500': $ref: '#/components/responses/InternalServerError' deprecated: false components: schemas: Session: description: Client session of a customer type: object required: - sessionId - accountId - channelProviderId - sessionStatus - createdAt - lastUpdatedAt - url properties: sessionId: type: string description: The unique 36 character id (uuid) that represents the users session. accountId: type: string description: The unique 6 character internal id that represents the customer account channelProviderId: type: string description: The unique id that represents the channel provider displayName: type: string description: The display name of the session customerIdentifiers: $ref: '#/components/schemas/CustomerIdentifiers' sessionParameters: type: object description: Additional parameter of the created session additionalProperties: type: string sessionStatus: $ref: '#/components/schemas/SessionStatus' providerCustomerId: type: string description: The provider side identifier for the customer createdAt: type: string format: date-time description: The datetime when the session was created (in ISO 8601 format including timezone, 'yyyy-MM-dd'T'HH:mm:ss[.SSS]Z') lastUpdatedAt: type: string format: date-time description: The datetime when the session was last updated (in ISO 8601 format including timezone, 'yyyy-MM-dd'T'HH:mm:ss[.SSS]Z') url: type: string example: /api/digital/channel/v1/sessions/e0f70943-dc9f-4be3-966f-fa41d4e1b7d4 description: The Get Session API URL for the session SessionCreated: allOf: - $ref: '#/components/schemas/Session' - type: object additionalProperties: true properties: correlationId: type: string description: The correlation id is used to uniquely identify the client request. This is an optional field but when specified can be used to correlate the callback event with the original API request. If the client does not pass any value for the correlation id in the request, a unique value will be generated automatically and sent back in the response. participantId: type: string SessionStatus: description: Status of the session type: string enum: - ACTIVE - TERMINATING - TERMINATED 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 CustomerIdentifiers: type: object description: Unique identifiers for identifying the customer during an Engagement such as phoneNumbers or emailAddresses. minProperties: 1 maxProperties: 10 additionalProperties: type: array description: 'Identifiers related to the Customer. The maximum length of an identifer key is 50 characters and must be a valid "name" of a pre-configured identifier in Customer Journey. ' maxItems: 5 items: type: string minLength: 1 maxLength: 256 CreateSession: type: object required: - accountId - channelProviderId - customerIdentifiers properties: channelProviderId: type: string description: The unique id that represents the channel provider minLength: 3 maxLength: 256 customerIdentifiers: $ref: '#/components/schemas/CustomerIdentifiers' displayName: type: string maxLength: 70 description: The display name of the session sessionParameters: $ref: '#/components/schemas/SessionParameters' providerCustomerId: type: string maxLength: 256 description: The provider side identifier for the user correlationId: type: string maxLength: 256 description: The correlation id is used to uniquely identify the client request. This is an optional field but when specified can be used to correlate the callback event with the original API request. If the client does not pass any value for the correlation id in the request, a unique value will be generated automatically and sent back in the response. SessionParameters: type: object description: Optional key/value session parameters for capturing properties of the user and the user's client device. Key is limited to 64 characters maxProperties: 20 additionalProperties: type: string maxLength: 256 responses: InternalServerError: description: Internal Server Error content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorInternalServerError' Unauthorized: description: Unauthorized. content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorUnauthorized' NotFound: description: Not Found. content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorNotFound' BadRequest: description: Bad Request content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorConstraintViolation' Forbidden: description: Forbidden. content: application/problem+json: schema: $ref: '#/components/schemas/Problem' examples: default: $ref: '#/components/examples/ErrorForbidden' examples: AppendIdentifiersSessionResponse: value: sessionId: 10494b78-710c-11eb-9439-0242ac130002 accountId: ABCDEF channelProviderId: ChatConnector01 displayName: John Doe customerIdentifiers: emailAddresses: - john@example.com - dave@example.com phoneNumbers: - +91 20 4101 8003 - +31 20 5101 9005 sessionParameters: language: english device: mobile app: chrome-mobile sessionStatus: ACTIVE providerCustomerId: '55' createdAt: '2018-11-13T20:25:39.534Z' lastUpdatedAt: '2018-11-13T20:25:39.734Z' url: /api/digital/channel/v1/sessions/10494b78-710c-11eb-9439-0242ac130002 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. UpdateSessionParameters: value: country: Ireland CreateSession: value: accountId: ABCDEF channelProviderId: ChatConnector01 customerIdentifiers: emailAddresses: - john@example.com phoneNumbers: - +91 20 4101 8003 displayName: John Doe sessionParameters: language: english device: mobile app: chrome-mobile providerCustomerId: '55' correlationId: zc38400d-c44f-4451-8316-e75c4efbt779 ErrorNotFound: description: Not Found value: type: https://developers.avayacloud.com/onecloud-ccaas/docs/error-handling#not-found title: Not Found status: 404 detail: Either there is no API method associated with the URL path of the request, or the request refers to one or more resources that were not found. 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: channelId message: must not be null 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 UpdateSessionParametersSessionResponse: value: sessionId: 10494b78-710c-11eb-9439-0242ac130002 accountId: ABCDEF channelProviderId: ChatConnector01 displayName: John Doe customerIdentifiers: emailAddresses: - john@example.com phoneNumbers: - +91 20 4101 8003 sessionParameters: language: english device: mobile app: chrome-mobile country: Ireland sessionStatus: ACTIVE providerCustomerId: '55' createdAt: '2018-11-13T20:25:39.534Z' lastUpdatedAt: '2018-11-13T20:25:39.734Z' url: /api/digital/channel/v1/sessions/10494b78-710c-11eb-9439-0242ac130002 AppendIdentifiers: value: emailAddresses: - dave@example.com phoneNumbers: - +31 20 5101 9005 GetSession: value: sessionId: 10494b78-710c-11eb-9439-0242ac130002 accountId: ABCDEF channelProviderId: ChatConnector01 displayName: John Doe customerIdentifiers: emailAddresses: - john@example.com phoneNumbers: - +91 20 4101 8003 sessionParameters: language: english device: mobile app: chrome-mobile sessionStatus: ACTIVE providerCustomerId: '55' createdAt: '2018-11-13T20:25:39.534Z' lastUpdatedAt: '2018-11-13T20:25:39.734Z' url: /api/digital/channel/v1/sessions/10494b78-710c-11eb-9439-0242ac130002 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: 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 sessionId: name: sessionId description: The unique 36 character internal id that represents the session. required: true in: path 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: 10494b78-710c-11eb-9439-0242ac130002 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