openapi: 3.0.3 info: title: Qase TestOps API v1 cases results API description: The Qase TestOps API v1 is a token-authenticated REST API for the Qase test management platform. It exposes the core test management domain over HTTPS - Projects, Test Cases, Test Suites, Test Runs, Test Results, Defects, and Test Plans - so teams can create and manage test cases, launch and complete test runs, publish automated test results from CI pipelines, and track defects programmatically. Authentication uses a personal or application API token passed in the `Token` header. Most collection endpoints are scoped by a project code (a 2-10 character identifier), and support limit/offset pagination. This description grounds a representative subset of the full surface documented at developers.qase.io; the machine-readable source specification is published at github.com/qase-tms/specs. version: '1.0' contact: name: Qase url: https://developers.qase.io license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0.html servers: - url: https://api.qase.io/v1 description: Qase TestOps API v1 security: - TokenAuth: [] tags: - name: results description: Test run results, including bulk publishing from CI/automation. paths: /result/{code}: parameters: - $ref: '#/components/parameters/Code' get: operationId: get-results tags: - results summary: Get all test run results description: Retrieves all test run results stored in the selected project. parameters: - name: status in: query description: 'A single test run result status. Possible values: in_progress, passed, failed, blocked, skipped, invalid.' schema: type: string - name: run in: query description: A list of run IDs separated by comma. schema: type: string - name: case_id in: query description: A list of case IDs separated by comma. schema: type: string - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Offset' responses: '200': description: A list of all test run results. content: application/json: schema: $ref: '#/components/schemas/ResultListResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' /result/{code}/{hash}: parameters: - $ref: '#/components/parameters/Code' - $ref: '#/components/parameters/Hash' get: operationId: get-result tags: - results summary: Get a specific test run result description: Retrieves a specific test run result by hash. responses: '200': description: A test run result. content: application/json: schema: $ref: '#/components/schemas/ResultResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' /result/{code}/{id}: parameters: - $ref: '#/components/parameters/Code' - $ref: '#/components/parameters/Id' post: operationId: create-result tags: - results summary: Create a test run result description: Creates a test run result for the given run id. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ResultCreate' responses: '200': description: The created result hash. content: application/json: schema: $ref: '#/components/schemas/HashResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' /result/{code}/{id}/bulk: parameters: - $ref: '#/components/parameters/Code' - $ref: '#/components/parameters/Id' post: operationId: create-result-bulk tags: - results summary: Bulk create test run results description: Creates multiple test run results for the given run id in a single request. This is the endpoint automation reporters use to publish CI results in bulk. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ResultBulkCreate' responses: '200': description: Bulk create result. content: application/json: schema: $ref: '#/components/schemas/BaseResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' /result/{code}/{id}/{hash}: parameters: - $ref: '#/components/parameters/Code' - $ref: '#/components/parameters/Id' - $ref: '#/components/parameters/Hash' patch: operationId: update-result tags: - results summary: Update a test run result description: Updates an existing test run result identified by run id and hash. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ResultCreate' responses: '200': description: The updated result hash. content: application/json: schema: $ref: '#/components/schemas/HashResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' delete: operationId: delete-result tags: - results summary: Delete a test run result description: Deletes a test run result identified by run id and hash. responses: '200': description: Deletion result. content: application/json: schema: $ref: '#/components/schemas/HashResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' components: schemas: HashResponse: type: object properties: status: type: boolean example: true result: type: object properties: hash: type: string ResultBulkCreate: type: object required: - results properties: results: type: array items: $ref: '#/components/schemas/ResultCreate' ResultCreate: type: object required: - case_id - status properties: case_id: type: integer status: type: string enum: - passed - failed - blocked - skipped - invalid - in_progress time_ms: type: integer format: int64 comment: type: string defect: type: boolean steps: type: array items: type: object additionalProperties: true ResultResponse: type: object properties: status: type: boolean result: $ref: '#/components/schemas/Result' ResultListResponse: type: object properties: status: type: boolean result: type: object properties: total: type: integer filtered: type: integer count: type: integer entities: type: array items: $ref: '#/components/schemas/Result' Result: type: object properties: hash: type: string case_id: type: integer status: type: string time_ms: type: integer format: int64 comment: type: string run_id: type: integer BaseResponse: type: object properties: status: type: boolean example: true Error: type: object properties: status: type: boolean example: false errorMessage: type: string errorFields: type: array items: type: object additionalProperties: true parameters: Code: name: code in: path required: true description: Code of the project, uppercase, 2-10 characters. schema: type: string Hash: name: hash in: path required: true description: Hash of the entity (used for test run results). schema: type: string Id: name: id in: path required: true description: Identifier of the entity. schema: type: integer Limit: name: limit in: query description: A number of entities in result set. Default is 10, max is 100. schema: type: integer default: 10 maximum: 100 Offset: name: offset in: query description: How many entities should be skipped. Default is 0. schema: type: integer default: 0 responses: Unauthorized: description: Unauthorized - missing or invalid API token. content: application/json: schema: $ref: '#/components/schemas/Error' TooManyRequests: description: Too Many Requests - the rate limit has been exceeded. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' UnprocessableEntity: description: The request payload failed validation. content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: TokenAuth: type: apiKey in: header name: Token description: A personal or application API token. Create it in the Qase app under Settings and pass it in the `Token` header on every request. All requests must use HTTPS.