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
  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: Ack Dispute Flow x-displayName: Evaluations/Ack Dispute API tags: - Ack Dispute Flow description: "Ack Dispute API can be used to pull all evaluation related data which are sent for acknowledgment or dispute.\n\nPlease note -\n
    \n
  1. Allow 24 hrs to pass before pulling Ack Dispute Data. 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 Ack Dispute 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 Ack Dispuet Data. You can go back to the first ever evaluation on the platform unless data retention limits have been set.
  6. \n
  7. The S3 URL obtained in the API response (with the evaluations) is valid for 24 hours.\n
  8. \n
  9. 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.
  10. \n
\n" paths: /v1/data/reports/evaluation/ackdisputedetails: post: tags: - Ack Dispute Flow operationId: Create Ack Dispute Request parameters: - $ref: '#/components/parameters/Page' - $ref: '#/components/parameters/Size' 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/evaluation/ackdisputedetails/{request_id}: get: tags: - Ack Dispute Flow operationId: Get Ack Dispute Details parameters: - name: request_id in: path required: true schema: type: string responses: '200': description: "Report 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
Param NameTypeDescription
pageintegerThe current page number of the response from the total response present between the given date range
sizeintegerNumber of interactions present in the current page
total_pagesintegerTotal number of pages present for the given date range.
total_sizeintegerTotal number of interactions present for the given date range.
ack_dispute_detailsListList of all the Evaluations with Ack Dispute Details.
evaluation_idStringID of the evaluation.
evaluation_form_idStringID of the template/evaluation form.
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
timelineListList of timelines in the given time range for this particular evaluation id.
timeline.timeStringTimestamp of the timeline.
timeline.commentStringComment.
timeline.score_infoObjectStatus of the Evaluation Form in this timeline.
timeline.disputed_questionsObjectDisputed Questions of the Evaluation Form in this timeline.
timeline.dispute_resolved_questionsObjectDispute Resolved Questions of the Evaluation Form in this timeline.
timeline.dispute_partial_resolved_questionsObjectDispute Partial Resolved Questions of the Evaluation Form in this timeline.
timeline.dispute_shared_withListList of users to whome Dispute was shared.
scoreinfo.prebonus_scoredoublePrebonus Score for the Evaluation.
scoreinfo.bonusdoubleBonus for the Evaluation.
scoreinfo.penaltydoublePenalty for the Evaluation.
scoreinfo.obtained_scoredoubleObtained Score for the Evaluation.
scoreinfo.total_scoredoubleTotal Score for the Evaluation.
scoreinfo.resultObjectResult for the Evaluation.
scoreinfo.calculated_scoreObjectCalculated Score for the Evaluation.
qaquestionresponse.question_idStringQuestion ID.
qaquestionresponse.selected_optionListSelected options for each question.
qaquestionresponse.obtained_scoreListScore obtained for each question.
qaquestionresponse.commentStringComment.
qaquestionresponse.is_failintegerIf that Agent has failed that question or not.
qaquestionresponse.is_auto_failintegerIs autofail
qaquestionresponse.visibility_logic_appliedintegerIs visibility logic applied.
\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 \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \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
pageintegerThe current page number of the response from the total response present between the given date range
sizeintegerNumber of interactions present in the current page
total_pagesintegerTotal number of pages present for the given date range.
total_sizeintegerTotal number of interactions present for the given date range.
ack_dispute_detailsListList of all the Evaluations with Ack Dispute Details.
evaluation_idStringID of the evaluation.
evaluation_form_idStringID of the template/evaluation form.
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
timelineListList of timelines in the given time range for this particular evaluation id.
timeline.timeStringTimestamp of the timeline.
timeline.commentStringComment.
timeline.score_infoObjectStatus of the Evaluation Form in this timeline.
timeline.disputed_questionsObjectDisputed Questions of the Evaluation Form in this timeline.
timeline.dispute_resolved_questionsObjectDispute Resolved Questions of the Evaluation Form in this timeline.
timeline.dispute_partial_resolved_questionsObjectDispute Partial Resolved Questions of the Evaluation Form in this timeline.
timeline.dispute_shared_withListList of users to whome Dispute was shared.
scoreinfo.prebonus_scoredoublePrebonus Score for the Evaluation.
scoreinfo.bonusdoubleBonus for the Evaluation.
scoreinfo.penaltydoublePenalty for the Evaluation.
scoreinfo.obtained_scoredoubleObtained Score for the Evaluation.
scoreinfo.total_scoredoubleTotal Score for the Evaluation.
scoreinfo.resultObjectResult for the Evaluation.
scoreinfo.calculated_scoreObjectCalculated Score for the Evaluation.
qaquestionresponse.question_idStringQuestion ID.
qaquestionresponse.selected_optionListSelected options for each question.
qaquestionresponse.obtained_scoreListScore obtained for each question.
qaquestionresponse.commentStringComment.
qaquestionresponse.is_failintegerIf that Agent has failed that question or not.
qaquestionresponse.is_auto_failintegerIs autofail
qaquestionresponse.visibility_logic_appliedintegerIs visibility logic applied.
\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 example: - 5e178d4246a3ce00010931d2 - 5e73d49ff2d4540001657309 description: Give the list of evaluation_ids to fetch ack dispute details. Max Limit of 100 ids. 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