openapi: 3.2.0
info:
title: Reporting Evaluations 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 | evaluation_forms | \n List | \n List of evaluation forms. | \n
\n \n | evaluation_forms.template | \n Object | \n Template of each evaluation form | \n
\n \n | template.id | \n String | \n ID of the template/evaluation form. | \n
\n \n | template.name | \n String | \n Name of the template/evaluation form. | \n
\n \n | template.max_score | \n double | \n Max score of the template/evaluation form. | \n
\n \n | template.sections | \n List | \n List of sections for each template/evaluation form | \n
\n \n | sections.section_id | \n String | \n Section id. | \n
\n \n | sections.section_name | \n String | \n Section name. | \n
\n \n | sections.max_score | \n double | \n Max score for a section. | \n
\n \n | sections.questions | \n List | \n List of questions for each section. | \n
\n \n | questions.id | \n String | \n ID of the question. | \n
\n \n | questions.max_score | \n double | \n Max score of the question. | \n
\n \n | questions.phrase | \n String | \n Question description. | \n
\n \n | evaluation_forms.evaluations | \n List | \n List of evaluations for each evaluation form. | \n
\n \n | evaluations.channel_meta | \n Object | \n Channel metadata. | \n
\n \n | evaluations.evaluation_list | \n List | \n List of evaluations for a template. | \n
\n \n | evaluation_list.evaluation_meta | \n Object | \n Evaluation metadata. | \n
\n \n | evaluation_meta.id | \n String | \n ID of the evaluation. | \n
\n \n | evaluation_meta.evaluation_type | \n String | \n Type of evaluation (Manual/Auto QA) | \n
\n \n | evaluation_meta.evaluator_id | \n String | \n ID of the evaluator. \"NA\" for Auto QA evaluations. | \n
\n \n | evaluation_meta.evaluator_name | \n String | \n Name of the evaluator. \"Observe.AI\" for Auto QA evaluations. | \n
\n \n | evaluation_meta.partner_evaluator_id | \n String | \n ID of the evaluator in client's system . \"NA\" for Auto QA evaluations. | \n
\n \n | evaluation_meta.evaluator_email | \n String | \n Email ID of the evaluator. \"NA\" for Auto QA evaluations. | \n
\n \n | evaluation_meta.evaluator_status | \n String | \n Evaluator status on the system: ACTIVE or IN_ACTIVE. \"NA\" for Auto QA evaluations. | \n
\n \n | evaluation_meta.evaluation_purpose | \n String | \n Evaluation Purpose on the system: \n \n - AGENT_PERFORMANCE - Evaluation done for the purpose of grading Agent performance
\n - CALIBRATION - Evaluation completed by Quality Analysts for Calibration purpose
\n - FINAL_CALIBRATION - Final Evaluation typically done by Quality Manager or evaluators group based on discussion for Calibration purpose
\n - null - evaluation_purpose is applicable only for evaluations with evaluation_type= Manual.
\n \n | \n
\n \n | evaluation_meta.agent_id | \n String | \n ID of the agent. | \n
\n \n | evaluation_meta.partner_agent_id | \n String | \n ID of the agent in client system. | \n
\n \n | evaluation_meta.ack_info.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 | evaluation_meta.ack_info.ack_init_time | \n Date | \n Acknowledgement Initiated timestamp | \n
\n \n | evaluation_meta.ack_info.ack_time | \n Date | \n Acknowledgement confirmation timestamp | \n
\n \n | evaluation_meta.ack_info.dispute_raised_at | \n Date | \n Disputed initiated timestamp | \n
\n \n | evaluation_meta.ack_info.dispute_raised_by_email | \n String | \n Email ID of the User(typically Agent/Supervisor) who raises dispute | \n
\n \n | evaluation_meta.ack_info.dispute_resolved_at | \n Date | \n Disputed resolved timestamp | \n
\n \n | evaluation_meta.ack_info.dispute_resolved_by_email | \n String | \n Email ID of the User(typically QA Analyst/QA Manager) who resolves the dispute | \n
\n \n | evaluation_meta.agent_name | \n String | \n Name of the agent. | \n
\n \n | evaluation_meta.agent_email | \n String | \n Email ID of the agent | \n
\n \n | evaluation_meta.agent_status | \n String | \n Agent status on the system: ACTIVE or IN_ACTIVE. | \n
\n \n | evaluation_meta.created_at | \n Date | \n Evaluation creation time. | \n
\n \n | evaluation_meta.modified_at | \n Date | \n Evaluation modification time | \n
\n \n | evaluation_meta.status | \n String | \n Status of the evaluation - whether submitted, edited, or deleted. | \n
\n \n | evaluation_list.response | \n Object | \n Response object for a evaluation. | \n
\n \n | response.comment | \n String | \n Comment | \n
\n \n | response.sections | \n List | \n List of response sections. | \n
\n \n | response.sections.id | \n String | \n Section ID | \n
\n \n | response.sections.score_obtained | \n double | \n Score obtained for the section. | \n
\n \n | response.sections.questions | \n List | \n List of questions for each section. | \n
\n \n | response.sections.questions.id | \n String | \n Question ID. | \n
\n \n | response.sections.questions.score_obtained | \n double | \n Score obtained for each question. | \n
\n \n | response.sections.questions.comment | \n String | \n Comment for a question response. | \n
\n \n | response.sections.questions.fail | \n boolean | \n If the agent has failed that question or not. | \n
\n \n | response.sections.questions.value | \n String | \n Answer value for the question | \n
\n \n | evaluation_list.scores_obtained | \n Object | \n Score object for each evaluation | \n
\n \n | scores_obtained.final_score | \n double | \n Final score for the evaluation | \n
\n \n | scores_obtained.total_points | \n double | \n Total points for the evaluation | \n
\n \n | scores_obtained.percent_score | \n double | \n Percent score for the evaluation | \n
\n \n | scores_obtained.total_bonus | \n double | \n Total bonus for the evaluation | \n
\n \n | scores_obtained.total_penalties | \n double | \n Total penalties for the evaluation | \n
\n \n | scores_obtained.grade_assigned | \n String | \n Assigned grade | \n
\n \n | scores_obtained.auto_fail | \n boolean | \n Is auto fail | \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/interactions/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 EVALUATION 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/evaluation/3058bc09-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/evaluations/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.
EvaluationType:
in: query
name: evaluationType
schema:
type: enum
default: MANUAL
example: AUTOQA
description: Choose from MANUAL, AUTOQA or ALL types of evaluation forms. All manual evaluations are fetched if evaluationType is not specified.
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
GetJobResponse:
type: object
properties:
start_date:
type: string
format: date-time
end_date:
type: string
format: date-time
status:
type: string
enum:
- QUEUED
- INPROGRESS
- COMPLETED
- EXPIRED
- FAILED
url:
type: string
ErrorMessage:
type: object
properties:
error_code:
type: string
error_description:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
DsrDeleteRequest:
type: object
required:
- entity_type
- rules
properties:
entity_type:
type: string
description: Entity type to delete
enum:
- AUDIO_TRANSCRIPT
- AUDIO
- TRANSCRIPT
- SCREEN_RECORDING
rules:
type: array
items:
$ref: '#/components/schemas/DsrRule'
DsrRule:
type: object
required:
- type
- name
properties:
type:
type: string
enum:
- OAI_METADATA
- CUSTOMER_METADATA
name:
type: string
description: For OAI_METADATA use DURATION, ENTITYTYPE, or STATUS
values:
type: array
items:
type: string
DsrDeleteResponse:
type: object
properties:
job_id:
type: string
status:
type: string
enum:
- QUEUED
- CREATED
- PROGRESS
- COMPLETED
- STOPPED
- FAILED
message:
type: string
requested_at:
type: string
format: date-time
expected_completion_by:
type: string
format: date-time
DsrStatusResponse:
type: object
properties:
request_id:
type: string
status:
type: string
enum:
- QUEUED
- CREATED
- PROGRESS
- COMPLETED
- STOPPED
- FAILED
status_message:
type: string
x-tagGroups:
- name: Reporting APIs
tags:
- ReportingService-Overview
- Authentication
- Interactions
- Summary
- Evaluations
- Coachings
- Ack Dispute Flow
- CallsReportVsInteractions
- ReleaseNotes
- name: DSR APIs
tags:
- DSR-Overview
- DSR
- DSR Release Notes
- name: Bulk Export
tags:
- Bulk-Export-Overview
- Bulk-Export-Data-Definitions