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
  1. Interactions API- To fetch Moments, Transcripts and Interactions(Voice calls, Webchat, Email) metadata
  2. \n
  3. Evaluations API - To fetch Evaluation forms and submitted Evaluations along with question-wise scores and aggregate scores.
  4. \n
  5. Coachings API - To fetch Coaching sessions with mapped Evaluations and related Notes.
  6. \n
  7. Ack Dispute API - To fetch Ack/Dispute state changes for Evaluations.
  8. \n
  9. Summarization AI API - To fetch GenAI-based Summaries along with Moments, Transcripts and metadata for all Interactions(Voice calls, Webchat).
  10. \n
\n" x-logo: url: https://cdn.observe.ai/observeaiLogo.png servers: - url: https://{base_url} description: Generated server url, where `{base_url}` corresponds to the specific cluster's base URL. tags: - name: Evaluations x-displayName: Evaluations API description: "Evaluations API can be used to pull all the Evaluations(Manual and Auto QA) done on Observe AI platform.\n\nPlease note -\n
    \n
  1. Allow 24 hrs to pass before pulling Evaluations. ie., For Evaluations completed on 14-Jan by 12:00AM PST, they would be available via APIs by 15-Jan by 12:00AM PST.
  2. \n
  3. You can pull Evaluations for 90 days at a time i.e., the duration between the end_date and the start_date should not exceed 90 days.
  4. \n
  5. There is no limit as to how far back in the past you want to go for pulling Evaluations. You can go back to the first ever evaluation on the platform unless data retention limits have been set.
  6. \n
  7. All the Evaluations that were Submitted, Edited and Deleted in the date-range will be available in the API response.
  8. \n \n
  9. The S3 URL obtained in the API response (with the evaluations) is valid for 24 hours.\n
  10. \n
  11. If you have been using Basic Auth for the APIs, we request you to switch to OAuth2.0 based Auth for the APIs by 31-Dec-2022. Detailed instructions to create API Credentials and make the switch to OAuth are documented here. Please reach out to your CSM for more details.
  12. \n
\n" paths: /v1/data/reports/evaluations: post: tags: - Evaluations operationId: Create Evaluation Request parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Size' - $ref: '#/components/parameters/EvaluationType' requestBody: content: application/json: schema: $ref: '#/components/schemas/RawJobRequest' responses: '200': description: Ok content: '*/*': schema: $ref: '#/components/schemas/PostJobResponse' examples: '0': value: '{"request_id":"3058bc09-f9fc-4586-bc7c-498b95a63ec2","start_date":"2022-03-03T00:00:12.000+00:00","end_date":"2022-04-04T00:16:00.000+00:00","status":"INPROGRESS"}' '400': description: Bad Request content: '*/*': schema: $ref: '#/components/schemas/ErrorMessage' examples: '0': value: '{"error_code":"bad_request","error_description":"similar job already exists with request id 3058bc09-b974-4468-ae1f-f7b9b28067f1"}' '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: Request Not found content: '*/*': schema: $ref: '#/components/schemas/ErrorMessage' examples: '0': value: '{"timestamp":"2022-05-12T06:27:39.587+00:00","status":404,"error":"Not Found","message":"No message available","path":"/v1/data/reports/evaluation"}' '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 ''GET'' not supported", "path": "/v1/data/reports/evaluations"}' '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/evaluations/{request_id}: get: tags: - Evaluations operationId: Get Evaluations parameters: - name: request_id in: path required: true schema: type: string responses: '200': description: "\nReport field Description:\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Param NameTypeDescription
evaluation_formsListList of evaluation forms.
evaluation_forms.templateObjectTemplate of each evaluation form
template.idStringID of the template/evaluation form.
template.nameStringName of the template/evaluation form.
template.max_scoredoubleMax score of the template/evaluation form.
template.sectionsListList of sections for each template/evaluation form
sections.section_idStringSection id.
sections.section_nameStringSection name.
sections.max_scoredoubleMax score for a section.
sections.questionsListList of questions for each section.
questions.idStringID of the question.
questions.max_scoredoubleMax score of the question.
questions.phraseStringQuestion description.
evaluation_forms.evaluationsListList of evaluations for each evaluation form.
evaluations.channel_metaObjectChannel metadata.
evaluations.evaluation_listListList of evaluations for a template.
evaluation_list.evaluation_metaObjectEvaluation metadata.
evaluation_meta.idStringID of the evaluation.
evaluation_meta.evaluation_typeStringType of evaluation (Manual/Auto QA)
evaluation_meta.evaluator_idStringID of the evaluator. \"NA\" for Auto QA evaluations.
evaluation_meta.evaluator_nameStringName of the evaluator. \"Observe.AI\" for Auto QA evaluations.
evaluation_meta.partner_evaluator_idStringID of the evaluator in client's system . \"NA\" for Auto QA evaluations.
evaluation_meta.evaluator_email StringEmail ID of the evaluator. \"NA\" for Auto QA evaluations.
evaluation_meta.evaluator_statusStringEvaluator status on the system: ACTIVE or IN_ACTIVE. \"NA\" for Auto QA evaluations.
evaluation_meta.evaluation_purposeStringEvaluation 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
evaluation_meta.agent_idStringID of the agent.
evaluation_meta.partner_agent_idStringID of the agent in client system.
evaluation_meta.ack_info.ack_statusString\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
evaluation_meta.ack_info.ack_init_timeDateAcknowledgement Initiated timestamp
evaluation_meta.ack_info.ack_timeDateAcknowledgement confirmation timestamp
evaluation_meta.ack_info.dispute_raised_atDateDisputed initiated timestamp
evaluation_meta.ack_info.dispute_raised_by_emailStringEmail ID of the User(typically Agent/Supervisor) who raises dispute
evaluation_meta.ack_info.dispute_resolved_atDateDisputed resolved timestamp
evaluation_meta.ack_info.dispute_resolved_by_emailStringEmail ID of the User(typically QA Analyst/QA Manager) who resolves the dispute
evaluation_meta.agent_nameStringName of the agent.
evaluation_meta.agent_emailStringEmail ID of the agent
evaluation_meta.agent_statusStringAgent status on the system: ACTIVE or IN_ACTIVE.
evaluation_meta.created_atDateEvaluation creation time.
evaluation_meta.modified_atDateEvaluation modification time
evaluation_meta.statusStringStatus of the evaluation - whether submitted, edited, or deleted.
evaluation_list.responseObjectResponse object for a evaluation.
response.commentStringComment
response.sectionsListList of response sections.
response.sections.idStringSection ID
response.sections.score_obtaineddoubleScore obtained for the section.
response.sections.questionsListList of questions for each section.
response.sections.questions.idStringQuestion ID.
response.sections.questions.score_obtaineddoubleScore obtained for each question.
response.sections.questions.commentStringComment for a question response.
response.sections.questions.failbooleanIf the agent has failed that question or not.
response.sections.questions.valueStringAnswer value for the question
evaluation_list.scores_obtainedObjectScore object for each evaluation
scores_obtained.final_scoredoubleFinal score for the evaluation
scores_obtained.total_pointsdoubleTotal points for the evaluation
scores_obtained.percent_scoredoublePercent score for the evaluation
scores_obtained.total_bonusdoubleTotal bonus for the evaluation
scores_obtained.total_penaltiesdoubleTotal penalties for the evaluation
scores_obtained.grade_assignedStringAssigned grade
scores_obtained.auto_failbooleanIs auto fail
\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