openapi: 3.2.0 info: title: Test Observer Test Executions API description: Test Observer API (see https://github.com/canonical/test_observer) license: name: GNU Affero General Public License v3 url: https://raw.githubusercontent.com/canonical/test_observer/refs/heads/main/backend/LICENSE version: 0.1.0 tags: - name: Test Executions paths: /v1/test-executions/end-test: put: tags: - Test Executions summary: End Test Execution operationId: end_test_execution_v1_test_executions_end_test_put requestBody: content: application/json: schema: $ref: '#/components/schemas/EndTestExecutionRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test /v1/test-executions/{id}/test-results: get: tags: - Test Executions summary: Get Test Results operationId: get_test_results_v1_test_executions__id__test_results_get parameters: - name: id in: path required: true schema: type: integer title: Id responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/TestResultResponse' title: Response Get Test Results V1 Test Executions Id Test Results Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - view_test post: tags: - Test Executions summary: Post Results operationId: post_results_v1_test_executions__id__test_results_post parameters: - name: id in: path required: true schema: type: integer title: Id requestBody: required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/TestResultRequest' title: Request responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test /v1/test-executions/{id}/links: post: tags: - Test Executions summary: Post Link operationId: post_link_v1_test_executions__id__links_post parameters: - name: id in: path required: true schema: type: integer title: Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TestExecutionRelevantLinkCreate' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TestExecutionRelevantLinkResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test /v1/test-executions/{id}/links/{link_id}: delete: tags: - Test Executions summary: Delete Link operationId: delete_link_v1_test_executions__id__links__link_id__delete parameters: - name: id in: path required: true schema: type: integer title: Id - name: link_id in: path required: true schema: type: integer title: Link Id responses: '204': description: Successful Response '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test /v1/test-executions/reruns: post: tags: - Test Executions summary: Create Rerun Requests operationId: create_rerun_requests_v1_test_executions_reruns_post parameters: - name: silent in: query required: false schema: type: boolean description: If true, omit returning created reruns in the response body. Speeds up bulk operations, as the rerun schema contains a lot of information and returning many reruns can be slow. Required when creating reruns with test_results_filters or test_executions_filters. default: false title: Silent description: If true, omit returning created reruns in the response body. Speeds up bulk operations, as the rerun schema contains a lot of information and returning many reruns can be slow. Required when creating reruns with test_results_filters or test_executions_filters. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RerunRequest' responses: '200': description: Successful Response content: application/json: schema: anyOf: - type: array items: $ref: '#/components/schemas/PendingRerun' - type: 'null' title: Response Create Rerun Requests V1 Test Executions Reruns Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_rerun - change_rerun_bulk get: tags: - Test Executions summary: Get Rerun Requests operationId: get_rerun_requests_v1_test_executions_reruns_get parameters: - name: family in: query required: false schema: anyOf: - $ref: '#/components/schemas/FamilyName' - type: 'null' title: Family - name: limit in: query required: false schema: anyOf: - type: integer - type: 'null' title: Limit - name: environment in: query required: false schema: anyOf: - type: string - type: 'null' title: Environment - name: environment_architecture in: query required: false schema: anyOf: - type: string - type: 'null' title: Environment Architecture - name: build_architecture in: query required: false schema: anyOf: - type: string - type: 'null' title: Build Architecture responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/PendingRerun' title: Response Get Rerun Requests V1 Test Executions Reruns Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - view_rerun delete: tags: - Test Executions summary: Delete Rerun Requests operationId: delete_rerun_requests_v1_test_executions_reruns_delete requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeleteReruns' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_rerun - change_rerun_bulk /v1/test-executions/reruns/details: get: tags: - Test Executions summary: Get Rerun Details operationId: get_rerun_details_v1_test_executions_reruns_details_get parameters: - name: family in: query required: true schema: $ref: '#/components/schemas/FamilyName' - name: priority in: query required: false schema: anyOf: - type: integer maximum: 1000000 minimum: -1000000 - type: 'null' title: Priority - name: limit in: query required: false schema: type: integer maximum: 50 minimum: 1 default: 50 title: Limit - name: offset in: query required: false schema: type: integer minimum: 0 default: 0 title: Offset responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/RerunDetailsResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - view_rerun /v1/test-executions/{id}: get: tags: - Test Executions summary: Get Test Execution operationId: get_test_execution_v1_test_executions__id__get parameters: - name: id in: path required: true schema: type: integer title: Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TestExecutionResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - view_test patch: tags: - Test Executions summary: Patch Test Execution operationId: patch_test_execution_v1_test_executions__id__patch parameters: - name: id in: path required: true schema: type: integer title: Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TestExecutionsPatchRequest' responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TestExecutionResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test /v1/test-executions: get: tags: - Test Executions summary: Search Test Executions description: 'Search test executions with optional test result context. Returns one item per matching test execution with paginated results. The test_results field contains all filtered test results for that execution. Use test_result=none to find executions without results, test_result=any to find executions with results, or test_result={id} to filter by specific test result IDs.' operationId: search_test_executions_v1_test_executions_get parameters: - name: families in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/FamilyName' - type: 'null' description: Filter by artefact families (e.g., charm,snap) title: Families description: Filter by artefact families (e.g., charm,snap) - name: artefacts in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by artefact names title: Artefacts description: Filter by artefact names - name: artefact_versions in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by artefact versions title: Artefact Versions description: Filter by artefact versions - name: artefact_stages in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by artefact stages title: Artefact Stages description: Filter by artefact stages - name: artefact_tracks in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by artefact tracks title: Artefact Tracks description: Filter by artefact tracks - name: artefact_is_archived in: query required: false schema: anyOf: - type: boolean - type: 'null' description: Filter by whether the artefact is archived title: Artefact Is Archived description: Filter by whether the artefact is archived - name: environments in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by environment names title: Environments description: Filter by environment names - name: test_plans in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by test plan names title: Test Plans description: Filter by test plan names - name: test_execution_statuses in: query required: false schema: anyOf: - type: array items: $ref: '#/components/schemas/TestExecutionStatus' - type: 'null' description: Filter by test execution statuses title: Test Execution Statuses description: Filter by test execution statuses - name: reviewer_ids in: query required: false schema: anyOf: - type: array items: type: integer - type: array items: const: any type: string - type: array items: const: none type: string - type: 'null' description: Filter by reviewer user ids title: Reviewer Ids description: Filter by reviewer user ids - name: assignee_ids in: query required: false schema: anyOf: - type: array items: type: integer - type: array items: const: any type: string - type: array items: const: none type: string - type: 'null' description: 'DEPRECATED: Use reviewer_ids instead' deprecated: true title: Assignee Ids description: 'DEPRECATED: Use reviewer_ids instead' deprecated: true - name: rerun_is_requested in: query required: false schema: anyOf: - type: boolean - type: 'null' description: Filter by whether a rerun has been requested for the test execution title: Rerun Is Requested description: Filter by whether a rerun has been requested for the test execution - name: execution_is_latest in: query required: false schema: anyOf: - type: boolean - type: 'null' description: Filter by whether the test execution is the latest in its environment/artefact/test plan combination title: Execution Is Latest description: Filter by whether the test execution is the latest in its environment/artefact/test plan combination - name: test_result in: query required: false schema: anyOf: - type: array items: type: integer - type: array items: const: any type: string - type: array items: const: none type: string - type: 'null' description: 'Filter by test result presence: ''any'' (executions with results), ''none'' (executions without results), or specific test result ID(s)' title: Test Result description: 'Filter by test result presence: ''any'' (executions with results), ''none'' (executions without results), or specific test result ID(s)' - name: event_names in: query required: false schema: anyOf: - type: array items: type: string - type: array items: const: any type: string - type: array items: const: none type: string - type: 'null' description: 'Filter by event log: ''any'' (executions with any events), ''none'' (executions without events), or specific event name(s)' title: Event Names description: 'Filter by event log: ''any'' (executions with any events), ''none'' (executions without events), or specific event name(s)' - name: from_date in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' description: Filter executions updated on or after this datetime title: From Date description: Filter executions updated on or after this datetime - name: until_date in: query required: false schema: anyOf: - type: string format: date-time - type: 'null' description: Filter executions updated on or before this datetime title: Until Date description: Filter executions updated on or before this datetime - name: limit in: query required: false schema: type: integer maximum: 1000 minimum: 0 description: Maximum number of results to return default: 50 title: Limit description: Maximum number of results to return - name: offset in: query required: false schema: type: integer minimum: 0 description: Number of results to skip for pagination default: 0 title: Offset description: Number of results to skip for pagination - name: execution_metadata in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by execution metadata (base64 encoded category:value pairs). title: Execution Metadata description: Filter by execution metadata (base64 encoded category:value pairs). responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/TestExecutionSearchResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - view_test /v1/test-executions/start-test: put: tags: - Test Executions summary: Start Test Execution operationId: start_test_execution_v1_test_executions_start_test_put requestBody: content: application/json: schema: oneOf: - $ref: '#/components/schemas/StartSnapTestExecutionRequest' - $ref: '#/components/schemas/StartDebTestExecutionRequest' - $ref: '#/components/schemas/StartCharmTestExecutionRequest' - $ref: '#/components/schemas/StartImageTestExecutionRequest' - $ref: '#/components/schemas/StartSolutionTestExecutionRequest' title: Request discriminator: propertyName: family mapping: snap: '#/components/schemas/StartSnapTestExecutionRequest' deb: '#/components/schemas/StartDebTestExecutionRequest' charm: '#/components/schemas/StartCharmTestExecutionRequest' image: '#/components/schemas/StartImageTestExecutionRequest' solution: '#/components/schemas/StartSolutionTestExecutionRequest' required: true responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test /v1/test-executions/{id}/status_update: put: tags: - Test Executions summary: Put Status Update operationId: put_status_update_v1_test_executions__id__status_update_put parameters: - name: id in: path required: true schema: type: integer title: Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StatusUpdateRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test get: tags: - Test Executions summary: Get Status Update operationId: get_status_update_v1_test_executions__id__status_update_get parameters: - name: id in: path required: true schema: type: integer title: Id responses: '200': description: Successful Response content: application/json: schema: type: array items: $ref: '#/components/schemas/TestEventResponse' title: Response Get Status Update V1 Test Executions Id Status Update Get '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - view_test post: tags: - Test Executions summary: Post Status Update operationId: post_status_update_v1_test_executions__id__status_update_post parameters: - name: id in: path required: true schema: type: integer title: Id requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StatusUpdateRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' x-permissions: - change_test components: schemas: C3TestResult: properties: name: type: string title: Name template_id: anyOf: - type: string - type: 'null' title: Template Id status: $ref: '#/components/schemas/C3TestResultStatus' category: type: string title: Category comment: type: string title: Comment io_log: type: string title: Io Log type: object required: - name - status - category - comment - io_log title: C3TestResult TestExecutionRelevantLinkResponse: properties: label: type: string title: Label url: type: string maxLength: 2083 minLength: 1 format: uri title: Url id: type: integer title: Id type: object required: - label - url - id title: TestExecutionRelevantLinkResponse ExecutionMetadata: additionalProperties: items: type: string maxLength: 200 minLength: 1 description: Execution Metadata Value type: array propertyNames: maxLength: 200 minLength: 1 description: Execution Metadata Category type: object title: Execution Metadata description: A mapping of string categories to lists of string values. examples: - charm: - postgresql-k8s - mysql-k8s charm:postgresql-k8s:revision: - '495' IssueStatus: type: string enum: - unknown - open - closed title: IssueStatus RerunPrioritySummary: properties: priority: type: integer title: Priority count: type: integer title: Count type: object required: - priority - count title: RerunPrioritySummary TestResultStatus: type: string enum: - PASSED - FAILED - SKIPPED title: TestResultStatus FamilyName: type: string enum: - snap - deb - charm - image - solution title: FamilyName PendingRerun: properties: test_execution_id: type: integer title: Test Execution Id ci_link: anyOf: - type: string - type: 'null' title: Ci Link family: $ref: '#/components/schemas/FamilyName' test_execution: $ref: '#/components/schemas/TestExecutionResponse' artefact: $ref: '#/components/schemas/ArtefactResponse' artefact_build: $ref: '#/components/schemas/ArtefactBuildMinimalResponse' priority: type: integer title: Priority created_at: type: string format: date-time title: Created At type: object required: - test_execution_id - ci_link - family - test_execution - artefact - artefact_build - priority - created_at title: PendingRerun MinimalIssueTestResultAttachmentResponse: properties: issue: $ref: '#/components/schemas/MinimalIssueResponse' attachment_rule: anyOf: - $ref: '#/components/schemas/MinimalIssueTestResultAttachmentRuleResponse' - type: 'null' type: object required: - issue - attachment_rule title: MinimalIssueTestResultAttachmentResponse SnapStage: type: string enum: - edge - beta - candidate - stable title: SnapStage ReviewerResponse: properties: id: type: integer title: Id launchpad_handle: anyOf: - type: string - type: 'null' title: Launchpad Handle email: type: string title: Email launchpad_email: type: string title: Launchpad Email deprecated: true name: type: string title: Name type: object required: - id - email - launchpad_email - name title: ReviewerResponse TestExecutionsPatchRequest: properties: c3_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: C3 Link ci_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Ci Link status: anyOf: - $ref: '#/components/schemas/TestExecutionStatus' - type: string const: COMPLETED - type: 'null' title: Status execution_metadata: anyOf: - $ref: '#/components/schemas/ExecutionMetadata' - type: 'null' type: object title: TestExecutionsPatchRequest RerunDetail: properties: test_plan_name: type: string title: Test Plan Name created_at: type: string format: date-time title: Created At priority: type: integer title: Priority architecture: type: string title: Architecture environment_name: type: string title: Environment Name type: object required: - test_plan_name - created_at - priority - architecture - environment_name title: RerunDetail StartDebTestExecutionRequest: properties: name: type: string title: Name description: 'User-defined name identifying the artefact under test. Not unique - multiple versions/stages of the same artefact share this name. Examples: ''core22'', ''ubuntu-desktop'', ''snapd''' version: type: string title: Version description: Version identifier of the artefact being tested. Format depends on artefact family - e.g., revisions for charms/snaps, version numbers for debs. arch: type: string title: Arch description: 'CPU architecture where tests will execute. Common values: ''amd64'', ''arm64'', ''armhf'', ''s390x'', ''ppc64el''' environment: type: string title: Environment description: 'Name of the test execution environment. This can identify the specific physical device, VM, or container where tests run or logical environment like a test lab or cloud region. Examples: ''cm3'', ''rpi4'', ''lxd-vm'', ''aws-ec2''. The environment will be auto-created if it doesn''t exist.' ci_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Ci Link description: Optional URL linking to the CI job executing these tests. Useful for tracking test runs back to their automation source. Can be omitted. test_plan: type: string maxLength: 200 title: Test Plan description: Identifier for the test suite or plan executed. Groups related test results together - e.g., 'certification-24.04', 'smoke-tests', 'full-regression'. The test plan will be auto-created if it doesn't exist. initial_status: $ref: '#/components/schemas/TestExecutionStatus' description: Initial status of the test execution. Default 'IN_PROGRESS' is appropriate for ongoing tests. Use 'COMPLETED' if test results will be uploaded separately. default: IN_PROGRESS relevant_links: items: $ref: '#/components/schemas/TestExecutionRelevantLinkCreate' type: array title: Relevant Links description: Optional list of additional URLs related to this test execution (e.g., bug reports, documentation, related PRs). Can be omitted or left empty. needs_assignment: type: boolean title: Needs Assignment description: Whether the artefact created from this test execution requires assignment of a reviewer. Set to true if test results need human review before the artefact can be promoted. Default false means no review assignment needed. default: false family: type: string const: deb title: Family series: type: string title: Series description: 'Ubuntu release series being tested. Examples: ''focal'' (20.04), ''jammy'' (22.04), ''noble'' (24.04), ''oracular'' (24.10)' repo: type: string title: Repo description: 'Repository containing the deb package. Examples: ''main'', ''universe'', ''restricted'', ''multiverse'' for archive repositories, or custom PPA names like ''ppa:team/ppa-name''' source: type: string maxLength: 200 title: Source description: Source package name for PPA builds, or empty string for archive pockets. Provide this OR execution_stage, not both. Use source when testing from a PPA, use execution_stage when testing from official archive pockets. default: '' execution_stage: anyOf: - $ref: '#/components/schemas/DebStage' - type: string const: '' maxLength: 100 title: Execution Stage description: 'Archive pocket where the deb resides, or empty string for PPAs. Options: ''proposed'' (pre-release testing area), ''updates'' (stable updates). Provide this OR source, not both. Use execution_stage for official archive testing, leave empty if testing from a PPA (and provide source instead).' default: '' type: object required: - name - version - arch - environment - test_plan - family - series - repo title: StartDebTestExecutionRequest C3TestResultStatus: type: string enum: - pass - fail - skip title: C3TestResultStatus PreviousTestResult: properties: status: $ref: '#/components/schemas/TestResultStatus' version: type: string title: Version artefact_id: type: integer title: Artefact Id test_execution_id: type: integer title: Test Execution Id test_result_id: type: integer title: Test Result Id type: object required: - status - version - artefact_id - test_execution_id - test_result_id title: PreviousTestResult EnvironmentResponse: properties: id: type: integer title: Id name: type: string title: Name architecture: type: string title: Architecture type: object required: - id - name - architecture title: EnvironmentResponse StartCharmTestExecutionRequest: properties: name: type: string title: Name description: 'User-defined name identifying the artefact under test. Not unique - multiple versions/stages of the same artefact share this name. Examples: ''core22'', ''ubuntu-desktop'', ''snapd''' version: type: string title: Version description: Version identifier of the artefact being tested. Format depends on artefact family - e.g., revisions for charms/snaps, version numbers for debs. arch: type: string title: Arch description: 'CPU architecture where tests will execute. Common values: ''amd64'', ''arm64'', ''armhf'', ''s390x'', ''ppc64el''' environment: type: string title: Environment description: 'Name of the test execution environment. This can identify the specific physical device, VM, or container where tests run or logical environment like a test lab or cloud region. Examples: ''cm3'', ''rpi4'', ''lxd-vm'', ''aws-ec2''. The environment will be auto-created if it doesn''t exist.' ci_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Ci Link description: Optional URL linking to the CI job executing these tests. Useful for tracking test runs back to their automation source. Can be omitted. test_plan: type: string maxLength: 200 title: Test Plan description: Identifier for the test suite or plan executed. Groups related test results together - e.g., 'certification-24.04', 'smoke-tests', 'full-regression'. The test plan will be auto-created if it doesn't exist. initial_status: $ref: '#/components/schemas/TestExecutionStatus' description: Initial status of the test execution. Default 'IN_PROGRESS' is appropriate for ongoing tests. Use 'COMPLETED' if test results will be uploaded separately. default: IN_PROGRESS relevant_links: items: $ref: '#/components/schemas/TestExecutionRelevantLinkCreate' type: array title: Relevant Links description: Optional list of additional URLs related to this test execution (e.g., bug reports, documentation, related PRs). Can be omitted or left empty. needs_assignment: type: boolean title: Needs Assignment description: Whether the artefact created from this test execution requires assignment of a reviewer. Set to true if test results need human review before the artefact can be promoted. Default false means no review assignment needed. default: false family: type: string const: charm title: Family revision: type: integer title: Revision description: Charm revision number from Charmhub. Each architecture build has its own revision. Find this via 'charm info ' or in Charmhub. track: type: string title: Track description: 'Charm release track being tested. Tracks represent different major versions or development streams. Common values: ''latest'' (default), version-based tracks like ''1.0'', ''22''. Use ''latest'' if unsure.' branch: type: string title: Branch description: Optional charm branch name within the track/risk level. Branches are temporary testing channels. Usually empty string (default) unless testing a specific branch. default: '' execution_stage: $ref: '#/components/schemas/CharmStage' description: 'Distribution channel/risk level of the charm being tested. Options: ''edge'' (cutting-edge updates), ''beta'' (pre-release), ''candidate'' (release candidate), ''stable'' (production). Choose based on where the charm currently resides in the release pipeline.' type: object required: - name - version - arch - environment - test_plan - family - revision - track - execution_stage title: StartCharmTestExecutionRequest TestExecutionRelevantLinkCreate: properties: label: type: string title: Label url: type: string maxLength: 2083 minLength: 1 format: uri title: Url type: object required: - label - url title: TestExecutionRelevantLinkCreate HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError TestExecutionSearchResponse: properties: count: type: integer title: Count limit: type: integer title: Limit offset: type: integer title: Offset test_executions: items: $ref: '#/components/schemas/TestExecutionResponseWithContext' type: array title: Test Executions type: object required: - count - limit - offset - test_executions title: TestExecutionSearchResponse MinimalIssueResponse: properties: id: type: integer title: Id source: $ref: '#/components/schemas/IssueSource' project: type: string title: Project key: type: string title: Key title: type: string title: Title status: $ref: '#/components/schemas/IssueStatus' url: type: string maxLength: 2083 minLength: 1 format: uri title: Url labels: anyOf: - items: type: string type: array - type: 'null' title: Labels test_executions_count: type: integer title: Test Executions Count default: 0 type: object required: - id - source - project - key - title - status - url title: MinimalIssueResponse ImageStage: type: string enum: - pending - current title: ImageStage StartSnapTestExecutionRequest: properties: name: type: string title: Name description: 'User-defined name identifying the artefact under test. Not unique - multiple versions/stages of the same artefact share this name. Examples: ''core22'', ''ubuntu-desktop'', ''snapd''' version: type: string title: Version description: Version identifier of the artefact being tested. Format depends on artefact family - e.g., revisions for charms/snaps, version numbers for debs. arch: type: string title: Arch description: 'CPU architecture where tests will execute. Common values: ''amd64'', ''arm64'', ''armhf'', ''s390x'', ''ppc64el''' environment: type: string title: Environment description: 'Name of the test execution environment. This can identify the specific physical device, VM, or container where tests run or logical environment like a test lab or cloud region. Examples: ''cm3'', ''rpi4'', ''lxd-vm'', ''aws-ec2''. The environment will be auto-created if it doesn''t exist.' ci_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Ci Link description: Optional URL linking to the CI job executing these tests. Useful for tracking test runs back to their automation source. Can be omitted. test_plan: type: string maxLength: 200 title: Test Plan description: Identifier for the test suite or plan executed. Groups related test results together - e.g., 'certification-24.04', 'smoke-tests', 'full-regression'. The test plan will be auto-created if it doesn't exist. initial_status: $ref: '#/components/schemas/TestExecutionStatus' description: Initial status of the test execution. Default 'IN_PROGRESS' is appropriate for ongoing tests. Use 'COMPLETED' if test results will be uploaded separately. default: IN_PROGRESS relevant_links: items: $ref: '#/components/schemas/TestExecutionRelevantLinkCreate' type: array title: Relevant Links description: Optional list of additional URLs related to this test execution (e.g., bug reports, documentation, related PRs). Can be omitted or left empty. needs_assignment: type: boolean title: Needs Assignment description: Whether the artefact created from this test execution requires assignment of a reviewer. Set to true if test results need human review before the artefact can be promoted. Default false means no review assignment needed. default: false family: type: string const: snap title: Family revision: type: integer title: Revision description: Snap package revision number from the store. Each architecture build has its own revision number. Find this in the snap store or via 'snap info ' command. track: type: string title: Track description: 'Snap release track being tested. Tracks represent different major versions or streams of development. Common values: ''latest'' (default), version numbers like ''22'', ''1.0'', or custom tracks like ''experimental''. Use ''latest'' if unsure.' store: type: string title: Store description: Snap store where the snap is published. Typically 'ubuntu' for public Ubuntu Store snaps, or a brand store ID for enterprise stores. Use 'ubuntu' for standard snaps. branch: type: string maxLength: 200 title: Branch description: Optional snap branch name within the track/risk level. Branches are temporary testing channels. Usually empty string (default) unless testing a specific branch. default: '' execution_stage: $ref: '#/components/schemas/SnapStage' description: 'Distribution channel/risk level of the snap being tested. Options: ''edge'' (cutting-edge, frequent updates), ''beta'' (pre-release testing), ''candidate'' (release candidate), ''stable'' (production ready). Choose based on where the snap currently resides in the release pipeline.' type: object required: - name - version - arch - environment - test_plan - family - revision - track - store - execution_stage title: StartSnapTestExecutionRequest SolutionStage: type: string enum: - edge - beta - candidate - stable title: SolutionStage StatusUpdateRequest: properties: events: items: $ref: '#/components/schemas/TestEventResponse' type: array title: Events type: object required: - events title: StatusUpdateRequest StartSolutionTestExecutionRequest: properties: name: type: string title: Name description: 'User-defined name identifying the artefact under test. Not unique - multiple versions/stages of the same artefact share this name. Examples: ''core22'', ''ubuntu-desktop'', ''snapd''' version: type: string title: Version description: Version identifier of the artefact being tested. Format depends on artefact family - e.g., revisions for charms/snaps, version numbers for debs. arch: type: string title: Arch description: 'CPU architecture where tests will execute. Common values: ''amd64'', ''arm64'', ''armhf'', ''s390x'', ''ppc64el''' environment: type: string title: Environment description: 'Name of the test execution environment. This can identify the specific physical device, VM, or container where tests run or logical environment like a test lab or cloud region. Examples: ''cm3'', ''rpi4'', ''lxd-vm'', ''aws-ec2''. The environment will be auto-created if it doesn''t exist.' ci_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Ci Link description: Optional URL linking to the CI job executing these tests. Useful for tracking test runs back to their automation source. Can be omitted. test_plan: type: string maxLength: 200 title: Test Plan description: Identifier for the test suite or plan executed. Groups related test results together - e.g., 'certification-24.04', 'smoke-tests', 'full-regression'. The test plan will be auto-created if it doesn't exist. initial_status: $ref: '#/components/schemas/TestExecutionStatus' description: Initial status of the test execution. Default 'IN_PROGRESS' is appropriate for ongoing tests. Use 'COMPLETED' if test results will be uploaded separately. default: IN_PROGRESS relevant_links: items: $ref: '#/components/schemas/TestExecutionRelevantLinkCreate' type: array title: Relevant Links description: Optional list of additional URLs related to this test execution (e.g., bug reports, documentation, related PRs). Can be omitted or left empty. needs_assignment: type: boolean title: Needs Assignment description: Whether the artefact created from this test execution requires assignment of a reviewer. Set to true if test results need human review before the artefact can be promoted. Default false means no review assignment needed. default: false family: type: string const: solution title: Family attributes: additionalProperties: true type: object title: Attributes execution_stage: $ref: '#/components/schemas/SolutionStage' description: Promotion stage of the solution being tested. type: object required: - name - version - arch - environment - test_plan - family - execution_stage title: StartSolutionTestExecutionRequest MinimalIssueTestResultAttachmentRuleResponse: properties: id: type: integer title: Id enabled: type: boolean title: Enabled families: items: $ref: '#/components/schemas/FamilyName' type: array title: Families artefacts: items: type: string type: array title: Artefacts artefact_versions: items: type: string type: array title: Artefact Versions artefact_stages: items: type: string type: array title: Artefact Stages artefact_tracks: items: type: string type: array title: Artefact Tracks environment_names: items: type: string type: array title: Environment Names test_plans: items: type: string type: array title: Test Plans test_case_names: items: type: string type: array title: Test Case Names template_ids: items: type: string type: array title: Template Ids test_result_statuses: items: $ref: '#/components/schemas/TestResultStatus' type: array title: Test Result Statuses execution_metadata: $ref: '#/components/schemas/ExecutionMetadata' type: object required: - id - enabled - families - artefacts - artefact_versions - artefact_stages - artefact_tracks - environment_names - test_plans - test_case_names - template_ids - test_result_statuses - execution_metadata title: MinimalIssueTestResultAttachmentRuleResponse TestExecutionResponseWithContext: properties: id: type: integer title: Id ci_link: anyOf: - type: string - type: 'null' title: Ci Link c3_link: anyOf: - type: string - type: 'null' title: C3 Link relevant_links: items: $ref: '#/components/schemas/TestExecutionRelevantLinkResponse' type: array title: Relevant Links environment: $ref: '#/components/schemas/EnvironmentResponse' status: $ref: '#/components/schemas/TestExecutionStatus' test_plan: type: string title: Test Plan created_at: type: string format: date-time title: Created At execution_metadata: $ref: '#/components/schemas/ExecutionMetadata' is_triaged: type: boolean title: Is Triaged artefact: $ref: '#/components/schemas/ArtefactResponse' artefact_build: $ref: '#/components/schemas/ArtefactBuildMinimalResponse' test_results: items: $ref: '#/components/schemas/TestResultResponse' type: array title: Test Results is_rerun_requested: type: boolean title: Is Rerun Requested readOnly: true rerun_priority: anyOf: - type: integer - type: 'null' title: Rerun Priority readOnly: true type: object required: - id - ci_link - c3_link - environment - status - test_plan - created_at - execution_metadata - is_triaged - artefact - artefact_build - is_rerun_requested - rerun_priority title: TestExecutionResponseWithContext TestResultRequest: properties: name: type: string title: Name status: $ref: '#/components/schemas/TestResultStatus' template_id: type: string title: Template Id default: '' category: type: string title: Category default: '' comment: type: string title: Comment default: '' io_log: type: string title: Io Log default: '' type: object required: - name - status title: TestResultRequest DebStage: type: string enum: - proposed - updates title: DebStage DeleteReruns: properties: test_execution_ids: items: type: integer type: array uniqueItems: true title: Test Execution Ids test_results_filters: anyOf: - $ref: '#/components/schemas/TestResultSearchFilters' - type: 'null' test_executions_filters: anyOf: - $ref: '#/components/schemas/TestExecutionRerunFilters' - type: 'null' type: object title: DeleteReruns RerunDetailsResponse: properties: priority_summaries: items: $ref: '#/components/schemas/RerunPrioritySummary' type: array title: Priority Summaries selected_priority: anyOf: - type: integer - type: 'null' title: Selected Priority count: type: integer title: Count selected_count: type: integer title: Selected Count limit: type: integer title: Limit offset: type: integer title: Offset reruns: items: $ref: '#/components/schemas/RerunDetail' type: array title: Reruns type: object required: - priority_summaries - selected_priority - count - selected_count - limit - offset - reruns title: RerunDetailsResponse TestExecutionResponse: properties: id: type: integer title: Id ci_link: anyOf: - type: string - type: 'null' title: Ci Link c3_link: anyOf: - type: string - type: 'null' title: C3 Link relevant_links: items: $ref: '#/components/schemas/TestExecutionRelevantLinkResponse' type: array title: Relevant Links environment: $ref: '#/components/schemas/EnvironmentResponse' status: $ref: '#/components/schemas/TestExecutionStatus' test_plan: type: string title: Test Plan created_at: type: string format: date-time title: Created At execution_metadata: $ref: '#/components/schemas/ExecutionMetadata' is_triaged: type: boolean title: Is Triaged is_rerun_requested: type: boolean title: Is Rerun Requested readOnly: true rerun_priority: anyOf: - type: integer - type: 'null' title: Rerun Priority readOnly: true type: object required: - id - ci_link - c3_link - environment - status - test_plan - created_at - execution_metadata - is_triaged - is_rerun_requested - rerun_priority title: TestExecutionResponse StartImageTestExecutionRequest: properties: name: anyOf: - type: string - type: 'null' title: Name description: 'User-defined name identifying the artefact under test. Not unique - multiple versions/stages of the same artefact share this name. Examples: ''core22'', ''ubuntu-desktop'', ''snapd''' version: anyOf: - type: string - type: 'null' title: Version description: Version identifier of the artefact being tested. Format depends on artefact family - e.g., revisions for charms/snaps, version numbers for debs. arch: anyOf: - type: string - type: 'null' title: Arch description: 'CPU architecture where tests will execute. Common values: ''amd64'', ''arm64'', ''armhf'', ''s390x'', ''ppc64el''' environment: type: string title: Environment description: 'Name of the test execution environment. This can identify the specific physical device, VM, or container where tests run or logical environment like a test lab or cloud region. Examples: ''cm3'', ''rpi4'', ''lxd-vm'', ''aws-ec2''. The environment will be auto-created if it doesn''t exist.' ci_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Ci Link description: Optional URL linking to the CI job executing these tests. Useful for tracking test runs back to their automation source. Can be omitted. test_plan: type: string maxLength: 200 title: Test Plan description: Identifier for the test suite or plan executed. Groups related test results together - e.g., 'certification-24.04', 'smoke-tests', 'full-regression'. The test plan will be auto-created if it doesn't exist. initial_status: $ref: '#/components/schemas/TestExecutionStatus' description: Initial status of the test execution. Default 'IN_PROGRESS' is appropriate for ongoing tests. Use 'COMPLETED' if test results will be uploaded separately. default: IN_PROGRESS relevant_links: items: $ref: '#/components/schemas/TestExecutionRelevantLinkCreate' type: array title: Relevant Links description: Optional list of additional URLs related to this test execution (e.g., bug reports, documentation, related PRs). Can be omitted or left empty. needs_assignment: type: boolean title: Needs Assignment description: Whether the artefact created from this test execution requires assignment of a reviewer. Set to true if test results need human review before the artefact can be promoted. Default false means no review assignment needed. default: false family: type: string const: image title: Family default: image execution_stage: anyOf: - $ref: '#/components/schemas/ImageStage' - type: 'null' description: 'Promotion stage of the image being tested. Options: ''pending'' (awaiting approval), ''current'' (approved and published). Use ''pending'' for images undergoing testing before promotion.' os: anyOf: - type: string - type: 'null' title: Os description: 'Operating system of the image. Examples: ''ubuntu'', ''ubuntu-core'', ''ubuntu-server''' release: anyOf: - type: string - type: 'null' title: Release description: 'OS release codename or version. Examples: ''focal'', ''jammy'', ''noble'', ''20.04'', ''22.04'', ''24.04''' sha256: type: string title: Sha256 description: SHA256 checksum hash uniquely identifying this image build. Used to verify image integrity and uniqueness. owner: anyOf: - type: string - type: 'null' title: Owner description: 'Team or organization responsible for the image. Examples: ''canonical'', ''ubuntu-images'', team names' image_url: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: Image Url description: Direct URL where the image file can be downloaded or accessed. Should be a valid HTTP/HTTPS URL. type: object required: - environment - test_plan - sha256 title: StartImageTestExecutionRequest TestExecutionRerunFilters: properties: families: items: $ref: '#/components/schemas/FamilyName' type: array title: Families artefacts: items: type: string type: array title: Artefacts artefact_versions: items: type: string type: array title: Artefact Versions artefact_stages: items: type: string type: array title: Artefact Stages artefact_tracks: items: type: string type: array title: Artefact Tracks artefact_is_archived: anyOf: - type: boolean - type: 'null' title: Artefact Is Archived environments: items: type: string type: array title: Environments test_plans: items: type: string type: array title: Test Plans test_execution_statuses: items: $ref: '#/components/schemas/TestExecutionStatus' type: array title: Test Execution Statuses execution_metadata: $ref: '#/components/schemas/ExecutionMetadata' reviewer_ids: anyOf: - items: type: integer type: array - type: string enum: - any - none title: Reviewer Ids assignee_ids: anyOf: - items: type: integer type: array - type: string enum: - any - none - type: 'null' title: Assignee Ids deprecated: true rerun_is_requested: anyOf: - type: boolean - type: 'null' title: Rerun Is Requested execution_is_latest: anyOf: - type: boolean - type: 'null' title: Execution Is Latest from_date: anyOf: - type: string format: date-time - type: 'null' title: From Date until_date: anyOf: - type: string format: date-time - type: 'null' title: Until Date type: object title: TestExecutionRerunFilters description: 'Filter model for rerun create/delete operations. Excludes pagination (limit/offset) and search-only fields (event_names) that have no meaning in the rerun context.' RerunRequest: properties: test_execution_ids: items: type: integer type: array uniqueItems: true title: Test Execution Ids test_results_filters: anyOf: - $ref: '#/components/schemas/TestResultSearchFilters' - type: 'null' test_executions_filters: anyOf: - $ref: '#/components/schemas/TestExecutionRerunFilters' - type: 'null' priority: anyOf: - type: integer maximum: 1000000 minimum: -1000000 - type: 'null' title: Priority type: object title: RerunRequest ArtefactBuildMinimalResponse: properties: id: type: integer title: Id architecture: type: string title: Architecture revision: anyOf: - type: integer - type: 'null' title: Revision type: object required: - id - architecture - revision title: ArtefactBuildMinimalResponse EndTestExecutionRequest: properties: ci_link: type: string maxLength: 2083 minLength: 1 format: uri title: Ci Link c3_link: anyOf: - type: string maxLength: 2083 minLength: 1 format: uri - type: 'null' title: C3 Link checkbox_version: anyOf: - type: string - type: 'null' title: Checkbox Version test_results: items: $ref: '#/components/schemas/C3TestResult' type: array title: Test Results type: object required: - ci_link - test_results title: EndTestExecutionRequest ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError ArtefactResponse: properties: id: type: integer title: Id name: type: string title: Name version: type: string title: Version track: type: string title: Track store: type: string title: Store branch: type: string title: Branch series: type: string title: Series repo: type: string title: Repo source: type: string title: Source os: type: string title: Os release: type: string title: Release owner: type: string title: Owner sha256: type: string title: Sha256 image_url: type: string title: Image Url stage: type: string title: Stage family: type: string title: Family status: $ref: '#/components/schemas/ArtefactStatus' comment: type: string title: Comment attributes: additionalProperties: true type: object title: Attributes archived: type: boolean title: Archived reviewers: items: $ref: '#/components/schemas/ReviewerResponse' type: array title: Reviewers due_date: anyOf: - type: string format: date - type: 'null' title: Due Date created_at: type: string format: date-time title: Created At bug_link: type: string title: Bug Link jira_issue: anyOf: - type: string - type: 'null' title: Jira Issue all_environment_reviews_count: type: integer title: All Environment Reviews Count completed_environment_reviews_count: type: integer title: Completed Environment Reviews Count assignee: anyOf: - $ref: '#/components/schemas/ReviewerResponse' - type: 'null' description: Backward-compatible assignee field. Populated from the first entry in reviewers when present. readOnly: true type: object required: - id - name - version - track - store - branch - series - repo - source - os - release - owner - sha256 - image_url - stage - family - status - comment - attributes - archived - reviewers - due_date - created_at - bug_link - jira_issue - all_environment_reviews_count - completed_environment_reviews_count - assignee title: ArtefactResponse TestResultSearchFilters: properties: families: items: $ref: '#/components/schemas/FamilyName' type: array title: Families artefacts: items: type: string type: array title: Artefacts artefact_versions: items: type: string type: array title: Artefact Versions artefact_stages: items: type: string type: array title: Artefact Stages artefact_tracks: items: type: string type: array title: Artefact Tracks artefact_is_archived: anyOf: - type: boolean - type: 'null' title: Artefact Is Archived environments: items: type: string type: array title: Environments test_cases: items: type: string type: array title: Test Cases template_ids: items: type: string type: array title: Template Ids test_plans: items: type: string type: array title: Test Plans execution_metadata: $ref: '#/components/schemas/ExecutionMetadata' issues: anyOf: - items: type: integer type: array - type: string enum: - any - none title: Issues test_result_statuses: items: $ref: '#/components/schemas/TestResultStatus' type: array title: Test Result Statuses test_execution_statuses: items: $ref: '#/components/schemas/TestExecutionStatus' type: array title: Test Execution Statuses reviewer_ids: anyOf: - items: type: integer type: array - type: string enum: - any - none title: Reviewer Ids assignee_ids: anyOf: - items: type: integer type: array - type: string enum: - any - none - type: 'null' title: Assignee Ids deprecated: true rerun_is_requested: anyOf: - type: boolean - type: 'null' title: Rerun Is Requested execution_is_latest: anyOf: - type: boolean - type: 'null' title: Execution Is Latest from_date: anyOf: - type: string format: date-time - type: 'null' title: From Date until_date: anyOf: - type: string format: date-time - type: 'null' title: Until Date offset: anyOf: - type: integer - type: 'null' title: Offset limit: anyOf: - type: integer - type: 'null' title: Limit type: object title: TestResultSearchFilters CharmStage: type: string enum: - edge - beta - candidate - stable title: CharmStage TestExecutionStatus: type: string enum: - NOT_STARTED - IN_PROGRESS - PASSED - FAILED - NOT_TESTED - ENDED_PREMATURELY title: TestExecutionStatus TestResultResponse: properties: id: type: integer title: Id name: type: string title: Name created_at: type: string format: date-time title: Created At category: type: string title: Category template_id: type: string title: Template Id status: $ref: '#/components/schemas/TestResultStatus' comment: type: string title: Comment io_log: type: string title: Io Log previous_results: items: $ref: '#/components/schemas/PreviousTestResult' type: array title: Previous Results description: The last 10 test results matched with the current test execution. The items are sorted in descending order, the first test result is the most recent, while the last one is the oldest one. default: [] issues: items: $ref: '#/components/schemas/MinimalIssueTestResultAttachmentResponse' type: array title: Issues type: object required: - id - name - created_at - category - template_id - status - comment - io_log - issues title: TestResultResponse IssueSource: type: string enum: - jira - github - launchpad title: IssueSource TestEventResponse: properties: event_name: type: string title: Event Name timestamp: type: string format: date-time title: Timestamp detail: type: string title: Detail type: object required: - event_name - timestamp - detail title: TestEventResponse ArtefactStatus: type: string enum: - APPROVED - MARKED_AS_FAILED - UNDECIDED title: ArtefactStatus