openapi: 3.0.3 info: title: Qase TestOps API v1 cases projects 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: projects description: Test projects that contain cases, suites, runs, and results. paths: /project: get: operationId: get-projects tags: - projects summary: Get all projects description: Retrieves all projects available to the authenticated user. parameters: - $ref: '#/components/parameters/Limit' - $ref: '#/components/parameters/Offset' responses: '200': description: A list of projects. content: application/json: schema: $ref: '#/components/schemas/ProjectListResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/TooManyRequests' post: operationId: create-project tags: - projects summary: Create a new project description: Creates a new project. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProjectCreate' responses: '200': description: The created project code. content: application/json: schema: $ref: '#/components/schemas/CodeResponse' '401': $ref: '#/components/responses/Unauthorized' '422': $ref: '#/components/responses/UnprocessableEntity' '429': $ref: '#/components/responses/TooManyRequests' /project/{code}: parameters: - $ref: '#/components/parameters/Code' get: operationId: get-project tags: - projects summary: Get a specific project description: Retrieves a specific project by code. responses: '200': description: A project. content: application/json: schema: $ref: '#/components/schemas/ProjectResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' '429': $ref: '#/components/responses/TooManyRequests' delete: operationId: delete-project tags: - projects summary: Delete a specific project description: Deletes a specific project by code. responses: '200': description: Deletion 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: CodeResponse: type: object properties: status: type: boolean example: true result: type: object properties: code: type: string ProjectCreate: type: object required: - title - code properties: title: type: string code: type: string description: Uppercase project code, 2-10 characters. description: type: string access: type: string enum: - all - group - none ProjectResponse: type: object properties: status: type: boolean result: $ref: '#/components/schemas/Project' 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 Project: type: object properties: title: type: string code: type: string counts: type: object additionalProperties: true ProjectListResponse: 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/Project' 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 Offset: name: offset in: query description: How many entities should be skipped. Default is 0. schema: type: integer default: 0 responses: TooManyRequests: description: Too Many Requests - the rate limit has been exceeded. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Unauthorized - missing or invalid API token. 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.