openapi: 3.0.3 info: title: Qase TestOps API v1 cases defects 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: defects description: Defects raised against failed test results. paths: /defect/{code}: parameters: - $ref: '#/components/parameters/Code' get: operationId: get-defects tags: - defects summary: Get all defects description: Retrieves all defects stored in the selected project. parameters: - name: status in: query description: 'Possible values: open, resolved, in_progress, invalid.' schema: type: string - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Offset' responses: '200': description: A list of defects. content: application/json: schema: $ref: '#/components/schemas/DefectListResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' /defect/{code}/{id}: parameters: - $ref: '#/components/parameters/Code' - $ref: '#/components/parameters/Id' get: operationId: get-defect tags: - defects summary: Get a specific defect description: Retrieves a specific defect by id. responses: '200': description: A defect. content: application/json: schema: $ref: '#/components/schemas/DefectResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' delete: operationId: delete-defect tags: - defects summary: Delete a specific defect description: Deletes a specific defect by id. responses: '200': description: Deletion result. content: application/json: schema: $ref: '#/components/schemas/IdResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' /defect/{code}/resolve/{id}: parameters: - $ref: '#/components/parameters/Code' - $ref: '#/components/parameters/Id' patch: operationId: resolve-defect tags: - defects summary: Resolve a specific defect description: Marks a specific defect as resolved. responses: '200': description: Resolve result. content: application/json: schema: $ref: '#/components/schemas/IdResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' /defect/{code}/status/{id}: parameters: - $ref: '#/components/parameters/Code' - $ref: '#/components/parameters/Id' patch: operationId: update-defect-status tags: - defects summary: Update a defect status description: Updates the status of a specific defect (open or in progress). requestBody: required: true content: application/json: schema: type: object properties: status: type: string enum: - open - in_progress responses: '200': description: Status update result. content: application/json: schema: $ref: '#/components/schemas/BaseResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' components: schemas: DefectResponse: type: object properties: status: type: boolean result: $ref: '#/components/schemas/Defect' Defect: type: object properties: id: type: integer title: type: string actual_result: type: string severity: type: integer status: type: string milestone_id: type: integer IdResponse: type: object properties: status: type: boolean example: true result: type: object properties: id: type: integer BaseResponse: type: object properties: status: type: boolean example: true DefectListResponse: 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/Defect' 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 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 Id: name: id in: path required: true description: Identifier of the entity. schema: type: integer 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' 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.