openapi: 3.2.0
info:
title: Reporting Ack Dispute Flow API
description: "Reporting APIs are a collection of RESTful APIs that provide a convenient and secure way for integrating reporting data from Observe.AI into external system of your choice. These APIs are asynchronous and render data in a JSON format. Observe.AI uses OAuth 2.0 protocol for authentication of APIs. Please refer to Authentication section to obtain credentials to access Reporting APIs. Below are the 3 APIs that we support -\n
\n \n | Param Name | \n Type | \n Description | \n
\n \n | page | \n integer | \n The current page number of the response from the total response present between the given date range | \n
\n \n | size | \n integer | \n Number of interactions present in the current page | \n
\n \n | total_pages | \n integer | \n Total number of pages present for the given date range. | \n
\n \n | total_size | \n integer | \n Total number of interactions present for the given date range. | \n
\n \n | ack_dispute_details | \n List | \n List of all the Evaluations with Ack Dispute Details. | \n
\n \n | evaluation_id | \n String | \n ID of the evaluation. | \n
\n \n | evaluation_form_id | \n String | \n ID of the template/evaluation form. | \n
\n \n | ack_status | \n String | \n \n Captures current status of Evaluation form in the Acknowledgement-Dispute workflow\n \n - NOT_INITIATED - Evaluation form is submitted without initiating for Acknowledgement
\n - AWAITING_ACK - Agent has been notified of Evaluation. Acknowledgement pending from Agent
\n - ACKED - Agent Acknowledged the Evaluation
\n - IN_DISPUTE - Dispute raised(typically by Agent or Supervisor) on Evaluation form and awaiting resolution
\n - DISPUTE_ACCEPTED - Dispute has been accepted by resolver(typically QA Analyst/QA Manager)
\n - DISPUTE_PARTIAL - Dispute has been partially accepted by resolver(typically QA Analyst/QA Manager)
\n - DISPUTE_REJECTED - Dispute has been rejected by resolver(typically QA Analyst/QA Manager)
\n \n | \n
\n \n | timeline | \n List | \n List of timelines in the given time range for this particular evaluation id. | \n
\n \n | timeline.time | \n String | \n Timestamp of the timeline. | \n
\n \n | timeline.comment | \n String | \n Comment. | \n
\n \n | timeline.score_info | \n Object | \n Status of the Evaluation Form in this timeline. | \n
\n \n | timeline.disputed_questions | \n Object | \n Disputed Questions of the Evaluation Form in this timeline. | \n
\n \n | timeline.dispute_resolved_questions | \n Object | \n Dispute Resolved Questions of the Evaluation Form in this timeline. | \n
\n \n | timeline.dispute_partial_resolved_questions | \n Object | \n Dispute Partial Resolved Questions of the Evaluation Form in this timeline. | \n
\n \n | timeline.dispute_shared_with | \n List | \n List of users to whome Dispute was shared. | \n
\n \n | scoreinfo.prebonus_score | \n double | \n Prebonus Score for the Evaluation. | \n
\n \n | scoreinfo.bonus | \n double | \n Bonus for the Evaluation. | \n
\n \n | scoreinfo.penalty | \n double | \n Penalty for the Evaluation. | \n
\n \n | scoreinfo.obtained_score | \n double | \n Obtained Score for the Evaluation. | \n
\n \n | scoreinfo.total_score | \n double | \n Total Score for the Evaluation. | \n
\n \n | scoreinfo.result | \n Object | \n Result for the Evaluation. | \n
\n \n | scoreinfo.calculated_score | \n Object | \n Calculated Score for the Evaluation. | \n
\n \n | qaquestionresponse.question_id | \n String | \n Question ID. | \n
\n \n | qaquestionresponse.selected_option | \n List | \n Selected options for each question. | \n
\n \n | qaquestionresponse.obtained_score | \n List | \n Score obtained for each question. | \n
\n \n | qaquestionresponse.comment | \n String | \n Comment. | \n
\n \n | qaquestionresponse.is_fail | \n integer | \n If that Agent has failed that question or not. | \n
\n \n | qaquestionresponse.is_auto_fail | \n integer | \n Is autofail | \n
\n \n | qaquestionresponse.visibility_logic_applied | \n integer | \n Is visibility logic applied. | \n
\n
\n"
content:
'*/*':
schema:
$ref: '#/components/schemas/GetJobResponse'
examples:
'0':
value: '{"start_date":"2022-03-03T00:00:12.000+00:00","end_date":"2022-04-04T00:14:00.000+00:00","status":"COMPLETED","url":"https://e2e-data-out.s3.amazonaws.com/reports/ackdispute/3058bc09-6d4d-4f22-9f69-6992f3520e56.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220510T045319Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=YOUR_AWS_ACCESS_KEY_ID%2FYYYYMMDD%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=YOUR_AWS_SIGNATURE_PLACEHOLDER"}'
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
'401':
description: Unauthorized
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"error_code": "auth_token_error", "error_description": "invalid auth token"}'
'403':
description: Access Denied
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"error_code":"access_denied","error_description":"unauthorized_user"}'
'404':
description: Not Found
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"error_code":"resource_not_found","error_description":"jobId 3058bc09-da96-490c-824f-f42646160f0a of type INTERACTION not found or does not belong to the account"}'
'1':
value: '{"timestamp": "2022-05-17T04:23:16.247+00:00", "status": 404, "error": "Not Found", "message": "No message available", "path": "/v1/data/reports/interaction/489690ba-1a58-44f3-9674-b5be9768d313"}'
'405':
description: Method Not Allowed
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"timestamp": "2022-05-17T04:21:37.669+00:00", "status": 405, "error": "Method Not Allowed", "message": "Request method ''POST'' not supported", "path": "/v1/data/reports/interactioms/3058bc09-da96-490c-824f-f42646160f0a"}'
'429':
description: Rate Limit Exceeded
content:
'*/*':
schema:
$ref: '#/components/schemas/RateLimitMessage'
examples:
'0':
value: '{"message": "API rate limit exceeded"}'
'500':
description: Internal Server Error
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
/v1/data/reports/evaluation/ackdisputedetails/ids:
post:
tags:
- Ack Dispute Flow
operationId: Get Ack Dispute Details By Ids
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AckDisputeFlowRequestIds'
responses:
'200':
description: "Report field Description:\n\n \n | Param Name | \n Type | \n Description | \n
\n \n | page | \n integer | \n The current page number of the response from the total response present between the given date range | \n
\n \n | size | \n integer | \n Number of interactions present in the current page | \n
\n \n | total_pages | \n integer | \n Total number of pages present for the given date range. | \n
\n \n | total_size | \n integer | \n Total number of interactions present for the given date range. | \n
\n \n | ack_dispute_details | \n List | \n List of all the Evaluations with Ack Dispute Details. | \n
\n \n | evaluation_id | \n String | \n ID of the evaluation. | \n
\n \n | evaluation_form_id | \n String | \n ID of the template/evaluation form. | \n
\n \n | ack_status | \n String | \n \n Captures current status of Evaluation form in the Acknowledgement-Dispute workflow\n \n - NOT_INITIATED - Evaluation form is submitted without initiating for Acknowledgement
\n - AWAITING_ACK - Agent has been notified of Evaluation. Acknowledgement pending from Agent
\n - ACKED - Agent Acknowledged the Evaluation
\n - IN_DISPUTE - Dispute raised(typically by Agent or Supervisor) on Evaluation form and awaiting resolution
\n - DISPUTE_ACCEPTED - Dispute has been accepted by resolver(typically QA Analyst/QA Manager)
\n - DISPUTE_PARTIAL - Dispute has been partially accepted by resolver(typically QA Analyst/QA Manager)
\n - DISPUTE_REJECTED - Dispute has been rejected by resolver(typically QA Analyst/QA Manager)
\n \n | \n
\n \n | timeline | \n List | \n List of timelines in the given time range for this particular evaluation id. | \n
\n \n | timeline.time | \n String | \n Timestamp of the timeline. | \n
\n \n | timeline.comment | \n String | \n Comment. | \n
\n \n | timeline.score_info | \n Object | \n Status of the Evaluation Form in this timeline. | \n
\n \n | timeline.disputed_questions | \n Object | \n Disputed Questions of the Evaluation Form in this timeline. | \n
\n \n | timeline.dispute_resolved_questions | \n Object | \n Dispute Resolved Questions of the Evaluation Form in this timeline. | \n
\n \n | timeline.dispute_partial_resolved_questions | \n Object | \n Dispute Partial Resolved Questions of the Evaluation Form in this timeline. | \n
\n \n | timeline.dispute_shared_with | \n List | \n List of users to whome Dispute was shared. | \n
\n \n | scoreinfo.prebonus_score | \n double | \n Prebonus Score for the Evaluation. | \n
\n \n | scoreinfo.bonus | \n double | \n Bonus for the Evaluation. | \n
\n \n | scoreinfo.penalty | \n double | \n Penalty for the Evaluation. | \n
\n \n | scoreinfo.obtained_score | \n double | \n Obtained Score for the Evaluation. | \n
\n \n | scoreinfo.total_score | \n double | \n Total Score for the Evaluation. | \n
\n \n | scoreinfo.result | \n Object | \n Result for the Evaluation. | \n
\n \n | scoreinfo.calculated_score | \n Object | \n Calculated Score for the Evaluation. | \n
\n \n | qaquestionresponse.question_id | \n String | \n Question ID. | \n
\n \n | qaquestionresponse.selected_option | \n List | \n Selected options for each question. | \n
\n \n | qaquestionresponse.obtained_score | \n List | \n Score obtained for each question. | \n
\n \n | qaquestionresponse.comment | \n String | \n Comment. | \n
\n \n | qaquestionresponse.is_fail | \n integer | \n If that Agent has failed that question or not. | \n
\n \n | qaquestionresponse.is_auto_fail | \n integer | \n Is autofail | \n
\n \n | qaquestionresponse.visibility_logic_applied | \n integer | \n Is visibility logic applied. | \n
\n
\n"
content:
'*/*':
schema:
$ref: '#/components/schemas/GetJobResponse'
examples:
'0':
value: '{"start_date":"2022-03-03T00:00:12.000+00:00","end_date":"2022-04-04T00:14:00.000+00:00","status":"COMPLETED","url":"https://e2e-data-out.s3.amazonaws.com/reports/ackdispute/3058bc09-6d4d-4f22-9f69-6992f3520e56.json?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20220510T045319Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=YOUR_AWS_ACCESS_KEY_ID%2FYYYYMMDD%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=YOUR_AWS_SIGNATURE_PLACEHOLDER"}'
'400':
description: Bad Request
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
'401':
description: Unauthorized
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"error_code": "auth_token_error", "error_description": "invalid auth token"}'
'403':
description: Access Denied
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"error_code":"access_denied","error_description":"unauthorized_user"}'
'404':
description: Not Found
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"error_code":"resource_not_found","error_description":"jobId 3058bc09-da96-490c-824f-f42646160f0a of type INTERACTION not found or does not belong to the account"}'
'1':
value: '{"timestamp": "2022-05-17T04:23:16.247+00:00", "status": 404, "error": "Not Found", "message": "No message available", "path": "/v1/data/reports/interaction/489690ba-1a58-44f3-9674-b5be9768d313"}'
'405':
description: Method Not Allowed
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
examples:
'0':
value: '{"timestamp": "2022-05-17T04:21:37.669+00:00", "status": 405, "error": "Method Not Allowed", "message": "Request method ''POST'' not supported", "path": "/v1/data/reports/interactioms/3058bc09-da96-490c-824f-f42646160f0a"}'
'429':
description: Rate Limit Exceeded
content:
'*/*':
schema:
$ref: '#/components/schemas/RateLimitMessage'
examples:
'0':
value: '{"message": "API rate limit exceeded"}'
'500':
description: Internal Server Error
content:
'*/*':
schema:
$ref: '#/components/schemas/ErrorMessage'
components:
parameters:
Page:
in: query
name: page
schema:
type: integer
minimum: 1
example: 1
default: 1
description: The page number of the paginated response.
Size:
in: query
name: size
schema:
type: integer
minimum: 10
maximum: 1000
example: 1000
default: 1000
description: Number of evaluations required in a page.
schemas:
RawJobRequest:
required:
- end_date
- start_date
type: object
properties:
start_date:
type: string
example: '2022-03-03T00:00:12.000+00:00'
description: The date should be given in the ISO format.
end_date:
type: string
example: '2022-04-04T00:14:00.000+00:00'
description: The date should be given in the ISO format.
format:
type: string
example: JSON
enum:
- JSON
PostJobResponse:
type: object
properties:
request_id:
type: string
start_date:
type: string
format: date-time
end_date:
type: string
format: date-time
status:
type: string
enum:
- QUEUED
- INPROGRESS
- COMPLETED
- EXPIRED
- FAILED
RateLimitMessage:
type: object
properties:
message:
type: string
description: API rate limit exceeded
AckDisputeFlowRequestIds:
properties:
evaluation_ids:
type: List