{ "openapi": "3.1.0", "info": { "title": "Test Observer", "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" }, "paths": { "/v1/version": { "get": { "summary": "Get Version", "operationId": "get_version_v1_version_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } } } }, "/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.\n\nReturns one item per matching test execution with paginated results.\nThe test_results field contains all filtered test results for that execution.\n\nUse test_result=none to find executions without results,\ntest_result=any to find executions with results,\nor 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" ] } }, "/v1/artefacts": { "get": { "tags": [ "artefacts" ], "summary": "Get Artefacts", "description": "Get latest artefacts optionally by family", "operationId": "get_artefacts_v1_artefacts_get", "parameters": [ { "name": "family", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/FamilyName" }, { "type": "null" } ], "title": "Family" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ArtefactResponse" }, "title": "Response Get Artefacts V1 Artefacts Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_artefact" ] } }, "/v1/artefacts/search": { "get": { "tags": [ "artefacts" ], "summary": "Search Artefacts", "description": "Search for artefacts by name with pagination support.\n\nReturns a list of distinct artefact names that match the search query.", "operationId": "search_artefacts_v1_artefacts_search_get", "parameters": [ { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search term for artefact names", "title": "Q" }, "description": "Search term for artefact names" }, { "name": "families", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/FamilyName" } }, { "type": "null" } ], "description": "Filter by artefact families", "title": "Families" }, "description": "Filter by artefact families" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results (defaults to 50 if not specified)", "default": 50, "title": "Limit" }, "description": "Maximum number of results (defaults to 50 if not specified)" }, { "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" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactSearchResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_artefact" ] } }, "/v1/artefacts/history": { "get": { "tags": [ "artefacts" ], "summary": "Get Artefact History", "description": "Get the versioning history of an artefact for a given name, family, and track,\noptionally filtered by stage, with pagination support.\n\nReturns a list of artefact versions along with their creation date.", "operationId": "get_artefact_history_v1_artefacts_history_get", "parameters": [ { "name": "name", "in": "query", "required": true, "schema": { "type": "string", "description": "Artefact name", "title": "Name" }, "description": "Artefact name" }, { "name": "family", "in": "query", "required": true, "schema": { "$ref": "#/components/schemas/FamilyName", "description": "Artefact family" }, "description": "Artefact family" }, { "name": "track", "in": "query", "required": false, "schema": { "type": "string", "description": "Artefact track", "default": "latest", "title": "Track" }, "description": "Artefact track" }, { "name": "stage", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/StageName" }, { "type": "null" } ], "description": "Filter by stage", "title": "Stage" }, "description": "Filter by stage" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 500, "minimum": 1, "description": "Maximum number of results (defaults to 10 if not specified)", "default": 10, "title": "Limit" }, "description": "Maximum number of results (defaults to 10 if not specified)" }, { "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" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactHistoryResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_artefact" ] } }, "/v1/artefacts/{artefact_id}": { "get": { "tags": [ "artefacts" ], "summary": "Get Artefact", "operationId": "get_artefact_v1_artefacts__artefact_id__get", "parameters": [ { "name": "artefact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Artefact Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_artefact" ] }, "patch": { "tags": [ "artefacts" ], "summary": "Patch Artefact", "operationId": "patch_artefact_v1_artefacts__artefact_id__patch", "parameters": [ { "name": "artefact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Artefact Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactPatch" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_artefact" ] } }, "/v1/artefacts/{artefact_id}/versions": { "get": { "tags": [ "artefacts" ], "summary": "Get Artefact Versions", "operationId": "get_artefact_versions_v1_artefacts__artefact_id__versions_get", "parameters": [ { "name": "artefact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Artefact Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ArtefactVersionResponse" }, "title": "Response Get Artefact Versions V1 Artefacts Artefact Id Versions Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_artefact" ] } }, "/v1/artefacts/{artefact_id}/environment-reviews": { "get": { "tags": [ "artefacts", "environment-reviews" ], "summary": "Get Environment Reviews", "operationId": "get_environment_reviews_v1_artefacts__artefact_id__environment_reviews_get", "parameters": [ { "name": "artefact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Artefact Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ArtefactBuildEnvironmentReviewResponse" }, "title": "Response Get Environment Reviews V1 Artefacts Artefact Id Environment Reviews Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_environment_review" ] }, "patch": { "tags": [ "artefacts", "environment-reviews" ], "summary": "Bulk Update Environment Reviews", "operationId": "bulk_update_environment_reviews_v1_artefacts__artefact_id__environment_reviews_patch", "parameters": [ { "name": "artefact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Artefact Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EnvironmentReviewPatch" }, "title": "Requests" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ArtefactBuildEnvironmentReviewResponse" }, "title": "Response Bulk Update Environment Reviews V1 Artefacts Artefact Id Environment Reviews Patch" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_environment_review" ] } }, "/v1/artefacts/{artefact_id}/environment-reviews/{review_id}": { "patch": { "tags": [ "artefacts", "environment-reviews" ], "summary": "Update Environment Review", "operationId": "update_environment_review_v1_artefacts__artefact_id__environment_reviews__review_id__patch", "parameters": [ { "name": "artefact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Artefact Id" } }, { "name": "review_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Review Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentReviewPatch" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactBuildEnvironmentReviewResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_environment_review" ] } }, "/v1/artefacts/{artefact_id}/builds": { "get": { "tags": [ "artefacts", "artefact-builds" ], "summary": "Get Artefact Builds", "description": "Get latest artefact builds of an artefact together with their test executions", "operationId": "get_artefact_builds_v1_artefacts__artefact_id__builds_get", "parameters": [ { "name": "artefact_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Artefact Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ArtefactBuildResponse" }, "title": "Response Get Artefact Builds V1 Artefacts Artefact Id Builds Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_artefact" ] } }, "/v1/reports/test-results": { "get": { "tags": [ "reports" ], "summary": "Get Testresults Report", "description": "Returns a csv report detailing all artefacts within a given date range. Together\nwith their test executions and test results in csv format.", "operationId": "get_testresults_report_v1_reports_test_results_get", "parameters": [ { "name": "start_date", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time", "default": "0001-01-01T00:00:00", "title": "Start Date" } }, { "name": "end_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "End Date" } } ], "responses": { "200": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_report" ] } }, "/v1/reports/test-executions": { "get": { "tags": [ "reports" ], "summary": "Get Test Execution Reports", "description": "Returns a csv report detailing all test executions within a given date range.\nTogether with their artefact and environment details in csv format.", "operationId": "get_test_execution_reports_v1_reports_test_executions_get", "parameters": [ { "name": "start_date", "in": "query", "required": false, "schema": { "type": "string", "format": "date-time", "default": "0001-01-01T00:00:00", "title": "Start Date" } }, { "name": "end_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "End Date" } } ], "responses": { "200": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_report" ] } }, "/v1/test-cases/reported-issues": { "get": { "tags": [ "test-cases" ], "summary": "Get Reported Issues", "operationId": "get_reported_issues_v1_test_cases_reported_issues_get", "parameters": [ { "name": "template_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Template Id" } }, { "name": "case_name", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Case Name" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/TestReportedIssueResponse" }, "title": "Response Get Reported Issues V1 Test Cases Reported Issues Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_test_case_reported_issue" ] }, "post": { "tags": [ "test-cases" ], "summary": "Create Reported Issue", "operationId": "create_reported_issue_v1_test_cases_reported_issues_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestReportedIssueRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestReportedIssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_test_case_reported_issue" ] } }, "/v1/test-cases/reported-issues/{issue_id}": { "put": { "tags": [ "test-cases" ], "summary": "Update Reported Issue", "operationId": "update_reported_issue_v1_test_cases_reported_issues__issue_id__put", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestReportedIssueRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestReportedIssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_test_case_reported_issue" ] }, "delete": { "tags": [ "test-cases" ], "summary": "Delete Reported Issue", "operationId": "delete_reported_issue_v1_test_cases_reported_issues__issue_id__delete", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "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_case_reported_issue" ] } }, "/v1/test-cases": { "get": { "tags": [ "test-cases" ], "summary": "Get Test Cases", "description": "Returns test cases as a flat list with their template IDs.\n\nTemplate ID represents the generic test (e.g., \"disk/stats_name\")\nTest case name is the specific instance (e.g., \"disk/stats_nvme0n1\")\nMultiple test cases can share the same template ID but have different names.", "operationId": "get_test_cases_v1_test_cases_get", "parameters": [ { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search term for test case names", "title": "Q" }, "description": "Search term for test case names" }, { "name": "families", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/FamilyName" } }, { "type": "null" } ], "description": "Filter by artefact families", "title": "Families" }, "description": "Filter by artefact families" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results (defaults to 50 if not specified)", "default": 50, "title": "Limit" }, "description": "Maximum number of results (defaults to 50 if not specified)" }, { "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" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestCasesResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_test" ] } }, "/v1/environments/reported-issues": { "get": { "tags": [ "environments" ], "summary": "Get Reported Issues", "operationId": "get_reported_issues_v1_environments_reported_issues_get", "parameters": [ { "name": "is_confirmed", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Confirmed" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/EnvironmentReportedIssueResponse" }, "title": "Response Get Reported Issues V1 Environments Reported Issues Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_environment_reported_issue" ] }, "post": { "tags": [ "environments" ], "summary": "Create Reported Issue", "operationId": "create_reported_issue_v1_environments_reported_issues_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentReportedIssueRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentReportedIssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_environment_reported_issue" ] } }, "/v1/environments/reported-issues/{issue_id}": { "put": { "tags": [ "environments" ], "summary": "Update Reported Issue", "operationId": "update_reported_issue_v1_environments_reported_issues__issue_id__put", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentReportedIssueRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentReportedIssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_environment_reported_issue" ] }, "delete": { "tags": [ "environments" ], "summary": "Delete Reported Issue", "operationId": "delete_reported_issue_v1_environments_reported_issues__issue_id__delete", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_environment_reported_issue" ] } }, "/v1/environments": { "get": { "tags": [ "environments" ], "summary": "Get Environments", "description": "Returns list of distinct environments that have been used in test executions.\n\nSupports pagination and search filtering.", "operationId": "get_environments_v1_environments_get", "parameters": [ { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search term for environment names", "title": "Q" }, "description": "Search term for environment names" }, { "name": "families", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/FamilyName" } }, { "type": "null" } ], "description": "Filter by artefact families", "title": "Families" }, "description": "Filter by artefact families" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results (defaults to 50 if not specified)", "default": 50, "title": "Limit" }, "description": "Maximum number of results (defaults to 50 if not specified)" }, { "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" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EnvironmentsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_test" ] } }, "/v1/test-plans": { "get": { "tags": [ "test-plans" ], "summary": "Get Test Plans", "description": "Returns list of distinct test plan names.\n\nSupports pagination and search filtering.", "operationId": "get_test_plans_v1_test_plans_get", "parameters": [ { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search term for test plan names", "title": "Q" }, "description": "Search term for test plan names" }, { "name": "families", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/FamilyName" } }, { "type": "null" } ], "description": "Filter by artefact families", "title": "Families" }, "description": "Filter by artefact families" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results (defaults to 50 if not specified)", "default": 50, "title": "Limit" }, "description": "Maximum number of results (defaults to 50 if not specified)" }, { "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" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TestPlansResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_test" ] } }, "/v1/issues/{issue_id}/attach": { "post": { "tags": [ "issues" ], "summary": "Add Issue Attachments", "operationId": "add_issue_attachments_v1_issues__issue_id__attach_post", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueAttachmentRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_issue_attachment", "change_issue_attachment_bulk" ] } }, "/v1/issues/{issue_id}/detach": { "post": { "tags": [ "issues" ], "summary": "Remove Issue Attachments", "operationId": "remove_issue_attachments_v1_issues__issue_id__detach_post", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueAttachmentRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_issue_attachment", "change_issue_attachment_bulk" ] } }, "/v1/issues/{issue_id}/attachment-rules": { "post": { "tags": [ "issues" ], "summary": "Post Attachment Rule", "operationId": "post_attachment_rule_v1_issues__issue_id__attachment_rules_post", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueTestResultAttachmentRulePostRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MinimalIssueTestResultAttachmentRuleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_attachment_rule" ] } }, "/v1/issues/{issue_id}/attachment-rules/{attachment_rule_id}": { "patch": { "tags": [ "issues" ], "summary": "Patch Attachment Rule", "operationId": "patch_attachment_rule_v1_issues__issue_id__attachment_rules__attachment_rule_id__patch", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } }, { "name": "attachment_rule_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Attachment Rule Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueTestResultAttachmentRulePatchRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MinimalIssueTestResultAttachmentRuleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_attachment_rule" ] }, "delete": { "tags": [ "issues" ], "summary": "Delete Attachment Rule", "operationId": "delete_attachment_rule_v1_issues__issue_id__attachment_rules__attachment_rule_id__delete", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } }, { "name": "attachment_rule_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Attachment Rule Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_attachment_rule" ] } }, "/v1/issues": { "get": { "tags": [ "issues" ], "summary": "Get Issues", "operationId": "get_issues_v1_issues_get", "parameters": [ { "name": "source", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/IssueSource" }, { "type": "null" } ], "description": "Filter by issue source (e.g., github, jira, launchpad)", "title": "Source" }, "description": "Filter by issue source (e.g., github, jira, launchpad)" }, { "name": "project", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter by project name", "title": "Project" }, "description": "Filter by project name" }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/IssueStatus" } }, { "type": "null" } ], "description": "Filter by issue status. Accepts multiple values", "title": "Status" }, "description": "Filter by issue status. Accepts multiple values" }, { "name": "families", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/FamilyName" } }, { "type": "null" } ], "description": "Filter by artefact family (e.g., snap, deb, charm, image)", "title": "Families" }, "description": "Filter by artefact family (e.g., snap, deb, charm, image)" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results to return (default: 50)", "default": 50, "title": "Limit" }, "description": "Maximum number of results to return (default: 50)" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "description": "Number of results to skip for pagination (default: 0)", "default": 0, "title": "Offset" }, "description": "Number of results to skip for pagination (default: 0)" }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search term for issue source, project, keys, title, and status", "title": "Q" }, "description": "Search term for issue source, project, keys, title, and status" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssuesGetResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_issue" ] }, "put": { "tags": [ "issues" ], "summary": "Create Or Update Issue", "operationId": "create_or_update_issue_v1_issues_put", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssuePutRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_issue" ] } }, "/v1/issues/{issue_id}": { "get": { "tags": [ "issues" ], "summary": "Get Issue", "operationId": "get_issue_v1_issues__issue_id__get", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_issue" ] }, "patch": { "tags": [ "issues" ], "summary": "Patch Issue", "operationId": "patch_issue_v1_issues__issue_id__patch", "parameters": [ { "name": "issue_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Issue Id" } }, { "name": "title", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" } }, { "name": "status", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/IssueStatus" }, { "type": "null" } ], "title": "Status" } }, { "name": "auto_rerun_enabled", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Auto Rerun Enabled" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssuePatchRequest" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/IssueResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_issue", "change_auto_rerun" ] } }, "/v1/test-results": { "get": { "tags": [ "test-results" ], "summary": "Search Test Results", "description": "Search test results across artefacts using flexible filters.\n\nReturns one item per matching test result with execution, artefact, and build context.", "operationId": "search_test_results_v1_test_results_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_cases", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "null" } ], "description": "Filter by test case names", "title": "Test Cases" }, "description": "Filter by test case names" }, { "name": "template_ids", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "type": "string" } }, { "type": "null" } ], "description": "Filter by template IDs", "title": "Template Ids" }, "description": "Filter by template IDs" }, { "name": "issues", "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 issue IDs", "title": "Issues" }, "description": "Filter by issue IDs" }, { "name": "test_result_statuses", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "array", "items": { "$ref": "#/components/schemas/TestResultStatus" } }, { "type": "null" } ], "description": "Filter by test result statuses", "title": "Test Result Statuses" }, "description": "Filter by test result statuses" }, { "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/artifact/test plan combination", "title": "Execution Is Latest" }, "description": "Filter by whether the test execution is the latest in its environment/artifact/test plan combination" }, { "name": "from_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Filter results from this timestamp", "title": "From Date" }, "description": "Filter results from this timestamp" }, { "name": "until_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "description": "Filter results until this timestamp", "title": "Until Date" }, "description": "Filter results until this timestamp" }, { "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/TestResultSearchResponseWithContext" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_test" ] } }, "/v1/execution-metadata": { "get": { "tags": [ "execution-metadata" ], "summary": "Get Execution Metadata", "operationId": "get_execution_metadata_v1_execution_metadata_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ExecutionMetadataGetResponse" } } } } }, "x-permissions": [ "view_test" ] } }, "/v1/auth/saml/login": { "get": { "tags": [ "authentication" ], "summary": "Saml Login", "operationId": "saml_login_v1_auth_saml_login_get", "parameters": [ { "name": "return_to", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Return To" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/v1/auth/saml/logout": { "get": { "tags": [ "authentication" ], "summary": "Saml Logout", "operationId": "saml_logout_v1_auth_saml_logout_get", "parameters": [ { "name": "return_to", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Return To" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/v1/auth/saml/acs": { "post": { "tags": [ "authentication" ], "summary": "Saml Login Callback", "operationId": "saml_login_callback_v1_auth_saml_acs_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } } } }, "/v1/auth/saml/sls": { "get": { "tags": [ "authentication" ], "summary": "Saml Logout Callback", "operationId": "saml_logout_callback_v1_auth_saml_sls_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } } }, "post": { "tags": [ "authentication" ], "summary": "Saml Logout Callback", "operationId": "saml_logout_callback_v1_auth_saml_sls_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } } } }, "/v1/users/me": { "get": { "tags": [ "users" ], "summary": "Get Authenticated User", "operationId": "get_authenticated_user_v1_users_me_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/UserResponse" }, { "type": "null" } ], "title": "Response Get Authenticated User V1 Users Me Get" } } } } } } }, "/v1/users": { "get": { "tags": [ "users" ], "summary": "Get Users", "operationId": "get_users_v1_users_get", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results to return (default: 50)", "default": 50, "title": "Limit" }, "description": "Maximum number of results to return (default: 50)" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "description": "Number of results to skip for pagination (default: 0)", "default": 0, "title": "Offset" }, "description": "Number of results to skip for pagination (default: 0)" }, { "name": "q", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Search term for user email, name, launchpad handle, or id", "title": "Q" }, "description": "Search term for user email, name, launchpad handle, or id" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UsersResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_user" ] } }, "/v1/users/{user_id}": { "get": { "tags": [ "users" ], "summary": "Get User", "operationId": "get_user_v1_users__user_id__get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "User Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_user" ] }, "delete": { "tags": [ "users" ], "summary": "Delete User", "operationId": "delete_user_v1_users__user_id__delete", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "User Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_user" ] }, "patch": { "tags": [ "users" ], "summary": "Update User", "operationId": "update_user_v1_users__user_id__patch", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "User Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserPatch" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_user" ] } }, "/v1/teams": { "get": { "tags": [ "teams" ], "summary": "Get Teams", "operationId": "get_teams_v1_teams_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/TeamResponse" }, "type": "array", "title": "Response Get Teams V1 Teams Get" } } } } }, "x-permissions": [ "view_team" ] }, "post": { "tags": [ "teams" ], "summary": "Create Team", "description": "Create a new team", "operationId": "create_team_v1_teams_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamCreate" } } }, "required": true }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_team" ] } }, "/v1/teams/{team_id}": { "get": { "tags": [ "teams" ], "summary": "Get Team", "operationId": "get_team_v1_teams__team_id__get", "parameters": [ { "name": "team_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Team Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_team" ] }, "patch": { "tags": [ "teams" ], "summary": "Update Team", "operationId": "update_team_v1_teams__team_id__patch", "parameters": [ { "name": "team_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Team Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamPatch" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_team" ] } }, "/v1/teams/{team_id}/members/{user_id}": { "post": { "tags": [ "teams" ], "summary": "Add Team Member", "description": "Add a user to a team", "operationId": "add_team_member_v1_teams__team_id__members__user_id__post", "parameters": [ { "name": "team_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Team Id" } }, { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "User Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_team" ] }, "delete": { "tags": [ "teams" ], "summary": "Remove Team Member", "description": "Remove a user from a team", "operationId": "remove_team_member_v1_teams__team_id__members__user_id__delete", "parameters": [ { "name": "team_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Team Id" } }, { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "User Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TeamResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_team" ] } }, "/v1/permissions": { "get": { "tags": [ "permissions" ], "summary": "Get Permissions", "operationId": "get_permissions_v1_permissions_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } }, "x-permissions": [ "view_permission" ] } }, "/v1/applications": { "get": { "tags": [ "applications" ], "summary": "Get Applications", "operationId": "get_applications_v1_applications_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "items": { "$ref": "#/components/schemas/ApplicationResponse" }, "type": "array", "title": "Response Get Applications V1 Applications Get" } } } } }, "x-permissions": [ "view_application" ] }, "post": { "tags": [ "applications" ], "summary": "Create Application", "operationId": "create_application_v1_applications_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPost" } } }, "required": true }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "add_application" ] } }, "/v1/applications/me/rotate": { "post": { "tags": [ "applications" ], "summary": "Rotate Own Api Key", "operationId": "rotate_own_api_key_v1_applications_me_rotate_post", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationResponse" } } } } } } }, "/v1/applications/{application_id}/rotate": { "post": { "tags": [ "applications" ], "summary": "Rotate Api Key", "operationId": "rotate_api_key_v1_applications__application_id__rotate_post", "parameters": [ { "name": "application_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Application Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_application" ] } }, "/v1/applications/me": { "get": { "tags": [ "applications" ], "summary": "Get Authenticated Application", "operationId": "get_authenticated_application_v1_applications_me_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "anyOf": [ { "$ref": "#/components/schemas/ApplicationResponse" }, { "type": "null" } ], "title": "Response Get Authenticated Application V1 Applications Me Get" } } } } } } }, "/v1/applications/{application_id}": { "get": { "tags": [ "applications" ], "summary": "Get Application", "operationId": "get_application_v1_applications__application_id__get", "parameters": [ { "name": "application_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Application Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_application" ] }, "delete": { "tags": [ "applications" ], "summary": "Delete Application", "operationId": "delete_application_v1_applications__application_id__delete", "parameters": [ { "name": "application_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Application Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_application" ] }, "patch": { "tags": [ "applications" ], "summary": "Update Application", "operationId": "update_application_v1_applications__application_id__patch", "parameters": [ { "name": "application_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Application Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationPatch" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_application" ] } }, "/v1/users/me/notifications": { "get": { "tags": [ "notifications" ], "summary": "Get Own Notifications", "description": "Get all notifications for the authenticated user", "operationId": "get_own_notifications_v1_users_me_notifications_get", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results to return (default: 50)", "default": 50, "title": "Limit" }, "description": "Maximum number of results to return (default: 50)" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "description": "Number of results to skip for pagination (default: 0)", "default": 0, "title": "Offset" }, "description": "Number of results to skip for pagination (default: 0)" }, { "name": "unread_only", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to return only unread notifications (default: false)", "default": false, "title": "Unread Only" }, "description": "Whether to return only unread notifications (default: false)" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/v1/users/me/notifications/count": { "get": { "tags": [ "notifications" ], "summary": "Get Own Notification Count", "description": "Get the count of notifications for the authenticated user", "operationId": "get_own_notification_count_v1_users_me_notifications_count_get", "parameters": [ { "name": "unread_only", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to return only unread notifications (default: false)", "default": false, "title": "Unread Only" }, "description": "Whether to return only unread notifications (default: false)" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "integer", "title": "Response Get Own Notification Count V1 Users Me Notifications Count Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/v1/users/me/notifications/{notification_id}/dismiss": { "post": { "tags": [ "notifications" ], "summary": "Mark Own Notification As Read", "description": "Mark the authenticated user's own notification as read", "operationId": "mark_own_notification_as_read_v1_users_me_notifications__notification_id__dismiss_post", "parameters": [ { "name": "notification_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Notification Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/v1/users/{user_id}/notifications": { "get": { "tags": [ "notifications" ], "summary": "Get Notifications", "description": "Get all notifications for the specified user", "operationId": "get_notifications_v1_users__user_id__notifications_get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "description": "ID of the user whose notifications will be fetched", "title": "User Id" }, "description": "ID of the user whose notifications will be fetched" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 1000, "minimum": 1, "description": "Maximum number of results to return (default: 50)", "default": 50, "title": "Limit" }, "description": "Maximum number of results to return (default: 50)" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 0, "description": "Number of results to skip for pagination (default: 0)", "default": 0, "title": "Offset" }, "description": "Number of results to skip for pagination (default: 0)" }, { "name": "unread_only", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to return only unread notifications (default: false)", "default": false, "title": "Unread Only" }, "description": "Whether to return only unread notifications (default: false)" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationsResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_notification" ] } }, "/v1/users/{user_id}/notifications/count": { "get": { "tags": [ "notifications" ], "summary": "Get Notification Count", "description": "Get the count of notifications for the specified user", "operationId": "get_notification_count_v1_users__user_id__notifications_count_get", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "description": "ID of the user whose notification count will be fetched", "title": "User Id" }, "description": "ID of the user whose notification count will be fetched" }, { "name": "unread_only", "in": "query", "required": false, "schema": { "type": "boolean", "description": "Whether to return only unread notifications (default: false)", "default": false, "title": "Unread Only" }, "description": "Whether to return only unread notifications (default: false)" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "integer", "title": "Response Get Notification Count V1 Users User Id Notifications Count Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_notification" ] } }, "/v1/users/{user_id}/notifications/{notification_id}/dismiss": { "post": { "tags": [ "notifications" ], "summary": "Mark Notification As Read", "description": "Mark a notification as read", "operationId": "mark_notification_as_read_v1_users__user_id__notifications__notification_id__dismiss_post", "parameters": [ { "name": "user_id", "in": "path", "required": true, "schema": { "type": "integer", "description": "ID of the user whose notification will be dismissed", "title": "User Id" }, "description": "ID of the user whose notification will be dismissed" }, { "name": "notification_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Notification Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_notification" ] } }, "/v1/artefact-matching-rules": { "post": { "tags": [ "artefact-matching-rules" ], "summary": "Create Artefact Matching Rule", "description": "Create a new artefact matching rule with at least one team", "operationId": "create_artefact_matching_rule_v1_artefact_matching_rules_post", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactMatchingRuleRequest" } } } }, "responses": { "201": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactMatchingRuleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_team" ] }, "get": { "tags": [ "artefact-matching-rules" ], "summary": "Get Artefact Matching Rules", "description": "Get all artefact matching rules, optionally filtered by family", "operationId": "get_artefact_matching_rules_v1_artefact_matching_rules_get", "parameters": [ { "name": "family", "in": "query", "required": false, "schema": { "anyOf": [ { "$ref": "#/components/schemas/FamilyName" }, { "type": "null" } ], "title": "Family" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/ArtefactMatchingRuleResponse" }, "title": "Response Get Artefact Matching Rules V1 Artefact Matching Rules Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_team" ] } }, "/v1/artefact-matching-rules/{rule_id}": { "get": { "tags": [ "artefact-matching-rules" ], "summary": "Get Artefact Matching Rule", "description": "Get a specific artefact matching rule by ID", "operationId": "get_artefact_matching_rule_v1_artefact_matching_rules__rule_id__get", "parameters": [ { "name": "rule_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Rule Id" } } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactMatchingRuleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "view_team" ] }, "patch": { "tags": [ "artefact-matching-rules" ], "summary": "Update Artefact Matching Rule", "description": "Update an artefact matching rule", "operationId": "update_artefact_matching_rule_v1_artefact_matching_rules__rule_id__patch", "parameters": [ { "name": "rule_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Rule Id" } } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactMatchingRulePatch" } } } }, "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArtefactMatchingRuleResponse" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_team" ] }, "delete": { "tags": [ "artefact-matching-rules" ], "summary": "Delete Artefact Matching Rule", "description": "Delete an artefact matching rule", "operationId": "delete_artefact_matching_rule_v1_artefact_matching_rules__rule_id__delete", "parameters": [ { "name": "rule_id", "in": "path", "required": true, "schema": { "type": "integer", "title": "Rule Id" } } ], "responses": { "204": { "description": "Successful Response" }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "x-permissions": [ "change_team" ] } }, "/health/live": { "get": { "summary": "Live", "description": "Liveness probe.\n\nReturns 200 OK if the application process is running and responding to requests.\nDoes not check external dependencies like the database.\n\nUse this probe with container orchestration to determine if the process should be restarted.\nNote that this should only be accessible internally (e.g. from the host container)\nand not accessible over the public API.", "operationId": "live_health_live_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "additionalProperties": { "type": "string" }, "type": "object", "title": "Response Live Health Live Get" } } } } } } }, "/health/ready": { "get": { "summary": "Ready", "description": "Readiness probe.\n\nReturns 200 OK if the application is ready to serve traffic, including database connectivity.\nPerforms a simple database query to verify the connection is valid.\n\nUse this probe with container orchestration to determine if traffic should be routed to this pod.\nNote that this should only be accessible internally (e.g. from the host container)\nand not accessible over the public API.\nReturns 503 if the database is unavailable.", "operationId": "ready_health_ready_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "additionalProperties": { "type": "string" }, "type": "object", "title": "Response Ready Health Ready Get" } } } } } } }, "/": { "get": { "summary": "Root", "operationId": "root__get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } } } }, "/sentry-debug": { "get": { "summary": "Trigger Error", "operationId": "trigger_error_sentry_debug_get", "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": {} } } } }, "x-permissions": [ "view_sentry_debug" ] } } }, "components": { "schemas": { "ApplicationPatch": { "properties": { "permissions": { "anyOf": [ { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array" }, { "type": "null" } ], "title": "Permissions" } }, "type": "object", "title": "ApplicationPatch" }, "ApplicationPost": { "properties": { "name": { "type": "string", "title": "Name" }, "permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Permissions" } }, "type": "object", "required": [ "name", "permissions" ], "title": "ApplicationPost" }, "ApplicationResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Permissions" }, "api_key": { "type": "string", "title": "Api Key" } }, "type": "object", "required": [ "id", "name", "permissions", "api_key" ], "title": "ApplicationResponse" }, "ArtefactBuildEnvironmentReviewDecision": { "type": "string", "enum": [ "REJECTED", "APPROVED_INCONSISTENT_TEST", "APPROVED_UNSTABLE_PHYSICAL_INFRA", "APPROVED_CUSTOMER_PREREQUISITE_FAIL", "APPROVED_FAULTY_HARDWARE", "APPROVED_ALL_TESTS_PASS" ], "title": "ArtefactBuildEnvironmentReviewDecision" }, "ArtefactBuildEnvironmentReviewResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "review_decision": { "items": { "$ref": "#/components/schemas/ArtefactBuildEnvironmentReviewDecision" }, "type": "array", "title": "Review Decision" }, "review_comment": { "type": "string", "title": "Review Comment" }, "environment": { "$ref": "#/components/schemas/EnvironmentResponse" }, "artefact_build": { "$ref": "#/components/schemas/ArtefactBuildMinimalResponse" }, "reviewers": { "items": { "$ref": "#/components/schemas/ReviewerResponse" }, "type": "array", "title": "Reviewers", "default": [] } }, "type": "object", "required": [ "id", "review_decision", "review_comment", "environment", "artefact_build" ], "title": "ArtefactBuildEnvironmentReviewResponse" }, "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" }, "ArtefactBuildResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "architecture": { "type": "string", "title": "Architecture" }, "revision": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Revision" }, "test_executions": { "items": { "$ref": "#/components/schemas/TestExecutionResponse" }, "type": "array", "title": "Test Executions" } }, "type": "object", "required": [ "id", "architecture", "revision", "test_executions" ], "title": "ArtefactBuildResponse" }, "ArtefactHistoryItemResponse": { "properties": { "artefact_id": { "type": "integer", "title": "Artefact Id" }, "name": { "type": "string", "title": "Name" }, "version": { "type": "string", "title": "Version" }, "stage": { "type": "string", "title": "Stage" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" } }, "type": "object", "required": [ "artefact_id", "name", "version", "stage", "created_at" ], "title": "ArtefactHistoryItemResponse" }, "ArtefactHistoryResponse": { "properties": { "count": { "type": "integer", "title": "Count" }, "items": { "items": { "$ref": "#/components/schemas/ArtefactHistoryItemResponse" }, "type": "array", "title": "Items" } }, "type": "object", "required": [ "count", "items" ], "title": "ArtefactHistoryResponse" }, "ArtefactMatchingRuleBase": { "properties": { "name": { "type": "string", "title": "Name", "default": "" }, "family": { "$ref": "#/components/schemas/FamilyName" }, "stage": { "type": "string", "title": "Stage", "default": "" }, "track": { "type": "string", "title": "Track", "default": "" }, "branch": { "type": "string", "title": "Branch", "default": "" }, "store": { "type": "string", "title": "Store", "default": "" }, "series": { "type": "string", "title": "Series", "default": "" }, "os": { "type": "string", "title": "Os", "default": "" }, "release": { "type": "string", "title": "Release", "default": "" }, "owner": { "type": "string", "title": "Owner", "default": "" }, "grant_permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Grant Permissions" } }, "type": "object", "required": [ "family" ], "title": "ArtefactMatchingRuleBase", "description": "Base model for artefact matching rule with common fields" }, "ArtefactMatchingRuleInResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "family": { "$ref": "#/components/schemas/FamilyName" }, "stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Stage" }, "track": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Track" }, "branch": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Branch" }, "store": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Store" }, "series": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Series" }, "os": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Os" }, "release": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Release" }, "owner": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Owner" }, "grant_permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Grant Permissions" } }, "type": "object", "required": [ "id", "name", "family", "stage", "track", "branch", "store", "series", "os", "release", "owner", "grant_permissions" ], "title": "ArtefactMatchingRuleInResponse", "description": "Artefact matching rule fields when included in responses (no relationships)" }, "ArtefactMatchingRulePatch": { "properties": { "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "family": { "anyOf": [ { "$ref": "#/components/schemas/FamilyName" }, { "type": "null" } ] }, "stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Stage" }, "track": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Track" }, "branch": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Branch" }, "store": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Store" }, "series": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Series" }, "os": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Os" }, "release": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Release" }, "owner": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Owner" }, "team_ids": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "title": "Team Ids" }, "grant_permissions": { "anyOf": [ { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array" }, { "type": "null" } ], "title": "Grant Permissions" } }, "type": "object", "title": "ArtefactMatchingRulePatch", "description": "Patch request for artefact matching rule" }, "ArtefactMatchingRuleRequest": { "properties": { "name": { "type": "string", "title": "Name", "default": "" }, "family": { "$ref": "#/components/schemas/FamilyName" }, "stage": { "type": "string", "title": "Stage", "default": "" }, "track": { "type": "string", "title": "Track", "default": "" }, "branch": { "type": "string", "title": "Branch", "default": "" }, "store": { "type": "string", "title": "Store", "default": "" }, "series": { "type": "string", "title": "Series", "default": "" }, "os": { "type": "string", "title": "Os", "default": "" }, "release": { "type": "string", "title": "Release", "default": "" }, "owner": { "type": "string", "title": "Owner", "default": "" }, "grant_permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Grant Permissions" }, "team_ids": { "items": { "type": "integer" }, "type": "array", "title": "Team Ids" } }, "type": "object", "required": [ "family", "team_ids" ], "title": "ArtefactMatchingRuleRequest", "description": "Request to create an artefact matching rule (extends base with team_ids)" }, "ArtefactMatchingRuleResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Name" }, "family": { "$ref": "#/components/schemas/FamilyName" }, "stage": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Stage" }, "track": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Track" }, "branch": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Branch" }, "store": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Store" }, "series": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Series" }, "os": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Os" }, "release": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Release" }, "owner": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Owner" }, "teams": { "items": { "$ref": "#/components/schemas/TeamMinimal" }, "type": "array", "title": "Teams" }, "grant_permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Grant Permissions" } }, "type": "object", "required": [ "id", "name", "family", "stage", "track", "branch", "store", "series", "os", "release", "owner", "teams", "grant_permissions" ], "title": "ArtefactMatchingRuleResponse", "description": "Artefact matching rule with associated teams" }, "ArtefactPatch": { "properties": { "status": { "anyOf": [ { "$ref": "#/components/schemas/ArtefactStatus" }, { "type": "null" } ] }, "archived": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Archived" }, "stage": { "anyOf": [ { "$ref": "#/components/schemas/StageName" }, { "type": "null" } ] }, "comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Comment" }, "jira_issue": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Jira Issue" }, "attributes": { "anyOf": [ { "additionalProperties": true, "type": "object" }, { "type": "null" } ], "title": "Attributes" }, "assignee_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Assignee Id", "description": "Legacy field. Mapped to reviewer_ids as a single-element list when reviewer_ids/reviewer_emails are not provided.", "deprecated": true }, "assignee_email": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Assignee Email", "description": "Legacy field. Mapped to reviewer_emails as a single-element list when reviewer_ids/reviewer_emails are not provided.", "deprecated": true }, "reviewer_ids": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "title": "Reviewer Ids", "description": "Reviewer user IDs. Preferred over legacy assignee_id/assignee_email for setting assignees." }, "reviewer_emails": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "title": "Reviewer Emails", "description": "Reviewer emails. Preferred over legacy assignee_id/assignee_email for setting assignees." } }, "type": "object", "title": "ArtefactPatch" }, "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" }, "ArtefactSearchResponse": { "properties": { "artefacts": { "items": { "type": "string" }, "type": "array", "title": "Artefacts" }, "count": { "type": "integer", "title": "Count" }, "limit": { "type": "integer", "title": "Limit" }, "offset": { "type": "integer", "title": "Offset" } }, "type": "object", "required": [ "artefacts", "count", "limit", "offset" ], "title": "ArtefactSearchResponse" }, "ArtefactStatus": { "type": "string", "enum": [ "APPROVED", "MARKED_AS_FAILED", "UNDECIDED" ], "title": "ArtefactStatus" }, "ArtefactVersionResponse": { "properties": { "version": { "type": "string", "title": "Version" }, "artefact_id": { "type": "integer", "title": "Artefact Id" } }, "type": "object", "required": [ "version", "artefact_id" ], "title": "ArtefactVersionResponse" }, "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" }, "C3TestResultStatus": { "type": "string", "enum": [ "pass", "fail", "skip" ], "title": "C3TestResultStatus" }, "CharmStage": { "type": "string", "enum": [ "edge", "beta", "candidate", "stable" ], "title": "CharmStage" }, "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" }, "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" }, "EnvironmentReportedIssueRequest": { "properties": { "environment_name": { "type": "string", "title": "Environment Name" }, "description": { "type": "string", "title": "Description" }, "url": { "anyOf": [ { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri" }, { "type": "null" } ], "title": "Url" }, "is_confirmed": { "type": "boolean", "title": "Is Confirmed" } }, "type": "object", "required": [ "environment_name", "description", "is_confirmed" ], "title": "EnvironmentReportedIssueRequest" }, "EnvironmentReportedIssueResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "environment_name": { "type": "string", "title": "Environment Name" }, "description": { "type": "string", "title": "Description" }, "url": { "anyOf": [ { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri" }, { "type": "null" } ], "title": "Url" }, "is_confirmed": { "type": "boolean", "title": "Is Confirmed" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "updated_at": { "type": "string", "format": "date-time", "title": "Updated At" } }, "type": "object", "required": [ "id", "environment_name", "description", "url", "is_confirmed", "created_at", "updated_at" ], "title": "EnvironmentReportedIssueResponse" }, "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" }, "EnvironmentReviewPatch": { "properties": { "id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Id" }, "review_decision": { "anyOf": [ { "items": { "$ref": "#/components/schemas/ArtefactBuildEnvironmentReviewDecision" }, "type": "array" }, { "type": "null" } ], "title": "Review Decision" }, "review_comment": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Review Comment" } }, "type": "object", "title": "EnvironmentReviewPatch" }, "EnvironmentsResponse": { "properties": { "environments": { "items": { "type": "string" }, "type": "array", "title": "Environments" }, "count": { "type": "integer", "title": "Count" }, "limit": { "type": "integer", "title": "Limit" }, "offset": { "type": "integer", "title": "Offset" } }, "type": "object", "required": [ "environments", "count", "limit", "offset" ], "title": "EnvironmentsResponse", "description": "Response model for environments endpoint" }, "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" ] } ] }, "ExecutionMetadataGetResponse": { "properties": { "execution_metadata": { "$ref": "#/components/schemas/ExecutionMetadata" } }, "type": "object", "required": [ "execution_metadata" ], "title": "ExecutionMetadataGetResponse" }, "FamilyName": { "type": "string", "enum": [ "snap", "deb", "charm", "image", "solution" ], "title": "FamilyName" }, "HTTPValidationError": { "properties": { "detail": { "items": { "$ref": "#/components/schemas/ValidationError" }, "type": "array", "title": "Detail" } }, "type": "object", "title": "HTTPValidationError" }, "ImageStage": { "type": "string", "enum": [ "pending", "current" ], "title": "ImageStage" }, "IssueAttachmentRequest": { "properties": { "test_results": { "anyOf": [ { "items": { "type": "integer" }, "type": "array" }, { "type": "null" } ], "title": "Test Results" }, "test_results_filters": { "anyOf": [ { "$ref": "#/components/schemas/TestResultSearchFilters" }, { "type": "null" } ] }, "attachment_rule": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "title": "Attachment Rule" } }, "type": "object", "title": "IssueAttachmentRequest" }, "IssuePatchRequest": { "properties": { "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "status": { "anyOf": [ { "$ref": "#/components/schemas/IssueStatus" }, { "type": "null" } ] }, "auto_rerun_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Auto Rerun Enabled" } }, "type": "object", "title": "IssuePatchRequest" }, "IssuePutRequest": { "properties": { "title": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Title" }, "status": { "anyOf": [ { "$ref": "#/components/schemas/IssueStatus" }, { "type": "null" } ] }, "auto_rerun_enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Auto Rerun Enabled" }, "url": { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url" } }, "type": "object", "required": [ "url" ], "title": "IssuePutRequest" }, "IssueResponse": { "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" }, "auto_rerun_enabled": { "type": "boolean", "title": "Auto Rerun Enabled" }, "attachment_rules": { "items": { "$ref": "#/components/schemas/MinimalIssueTestResultAttachmentRuleResponse" }, "type": "array", "title": "Attachment Rules" } }, "type": "object", "required": [ "id", "source", "project", "key", "title", "status", "url", "auto_rerun_enabled", "attachment_rules" ], "title": "IssueResponse" }, "IssueSource": { "type": "string", "enum": [ "jira", "github", "launchpad" ], "title": "IssueSource" }, "IssueStatus": { "type": "string", "enum": [ "unknown", "open", "closed" ], "title": "IssueStatus" }, "IssueTestResultAttachmentRulePatchRequest": { "properties": { "enabled": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Enabled" } }, "type": "object", "title": "IssueTestResultAttachmentRulePatchRequest" }, "IssueTestResultAttachmentRulePostRequest": { "properties": { "enabled": { "type": "boolean", "title": "Enabled", "default": true }, "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", "title": "IssueTestResultAttachmentRulePostRequest" }, "IssuesGetResponse": { "properties": { "issues": { "items": { "$ref": "#/components/schemas/MinimalIssueResponse" }, "type": "array", "title": "Issues" }, "count": { "type": "integer", "title": "Count" }, "limit": { "type": "integer", "title": "Limit" }, "offset": { "type": "integer", "title": "Offset" } }, "type": "object", "required": [ "issues", "count", "limit", "offset" ], "title": "IssuesGetResponse" }, "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" }, "MinimalIssueTestResultAttachmentResponse": { "properties": { "issue": { "$ref": "#/components/schemas/MinimalIssueResponse" }, "attachment_rule": { "anyOf": [ { "$ref": "#/components/schemas/MinimalIssueTestResultAttachmentRuleResponse" }, { "type": "null" } ] } }, "type": "object", "required": [ "issue", "attachment_rule" ], "title": "MinimalIssueTestResultAttachmentResponse" }, "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" }, "NotificationResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "user_id": { "type": "integer", "title": "User Id" }, "notification_type": { "$ref": "#/components/schemas/NotificationType" }, "target_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Target Url" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "dismissed_at": { "anyOf": [ { "type": "string", "format": "date-time" }, { "type": "null" } ], "title": "Dismissed At" } }, "type": "object", "required": [ "id", "user_id", "notification_type", "target_url", "created_at", "dismissed_at" ], "title": "NotificationResponse" }, "NotificationType": { "type": "string", "enum": [ "USER_ASSIGNED_ARTEFACT_REVIEW", "USER_ASSIGNED_ENVIRONMENT_REVIEW" ], "title": "NotificationType" }, "NotificationsResponse": { "properties": { "notifications": { "items": { "$ref": "#/components/schemas/NotificationResponse" }, "type": "array", "title": "Notifications" }, "count": { "type": "integer", "title": "Count" }, "limit": { "type": "integer", "title": "Limit" }, "offset": { "type": "integer", "title": "Offset" } }, "type": "object", "required": [ "notifications", "count", "limit", "offset" ], "title": "NotificationsResponse" }, "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" }, "Permission": { "type": "string", "enum": [ "view_user", "change_user", "view_team", "change_team", "add_application", "change_application", "view_application", "view_permission", "view_issue", "change_issue", "change_issue_attachment", "change_issue_attachment_bulk", "change_attachment_rule", "change_auto_rerun", "view_test", "change_test", "view_rerun", "change_rerun", "change_rerun_bulk", "view_artefact", "change_artefact", "view_environment_review", "change_environment_review", "view_report", "view_test_case_reported_issue", "change_test_case_reported_issue", "view_environment_reported_issue", "change_environment_reported_issue", "view_notification", "change_notification", "view_sentry_debug" ], "title": "Permission" }, "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" }, "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" }, "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" }, "RerunPrioritySummary": { "properties": { "priority": { "type": "integer", "title": "Priority" }, "count": { "type": "integer", "title": "Count" } }, "type": "object", "required": [ "priority", "count" ], "title": "RerunPrioritySummary" }, "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" }, "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" }, "SnapStage": { "type": "string", "enum": [ "edge", "beta", "candidate", "stable" ], "title": "SnapStage" }, "SolutionStage": { "type": "string", "enum": [ "edge", "beta", "candidate", "stable" ], "title": "SolutionStage" }, "StageName": { "type": "string", "enum": [ "proposed", "updates", "edge", "beta", "candidate", "stable", "pending", "current" ], "title": "StageName" }, "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" }, "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" }, "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" }, "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" }, "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" }, "StatusUpdateRequest": { "properties": { "events": { "items": { "$ref": "#/components/schemas/TestEventResponse" }, "type": "array", "title": "Events" } }, "type": "object", "required": [ "events" ], "title": "StatusUpdateRequest" }, "TeamCreate": { "properties": { "name": { "type": "string", "title": "Name" }, "permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Permissions", "default": [] }, "artefact_matching_rules": { "items": { "$ref": "#/components/schemas/ArtefactMatchingRuleBase" }, "type": "array", "title": "Artefact Matching Rules", "default": [] } }, "type": "object", "required": [ "name" ], "title": "TeamCreate" }, "TeamMinimal": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" } }, "type": "object", "required": [ "id", "name" ], "title": "TeamMinimal" }, "TeamMinimalResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "permissions": { "items": { "type": "string" }, "type": "array", "title": "Permissions" } }, "type": "object", "required": [ "id", "name", "permissions" ], "title": "TeamMinimalResponse" }, "TeamPatch": { "properties": { "permissions": { "anyOf": [ { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array" }, { "type": "null" } ], "title": "Permissions" }, "artefact_matching_rules": { "anyOf": [ { "items": { "$ref": "#/components/schemas/ArtefactMatchingRuleBase" }, "type": "array" }, { "type": "null" } ], "title": "Artefact Matching Rules" } }, "type": "object", "title": "TeamPatch" }, "TeamResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "name": { "type": "string", "title": "Name" }, "permissions": { "items": { "$ref": "#/components/schemas/Permission" }, "type": "array", "title": "Permissions" }, "members": { "items": { "$ref": "#/components/schemas/UserMinimalResponse" }, "type": "array", "title": "Members" }, "artefact_matching_rules": { "items": { "$ref": "#/components/schemas/ArtefactMatchingRuleInResponse" }, "type": "array", "title": "Artefact Matching Rules" } }, "type": "object", "required": [ "id", "name", "permissions", "members", "artefact_matching_rules" ], "title": "TeamResponse" }, "TestCaseInfo": { "properties": { "test_case": { "type": "string", "title": "Test Case" }, "template_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Template Id" } }, "type": "object", "required": [ "test_case", "template_id" ], "title": "TestCaseInfo" }, "TestCasesResponse": { "properties": { "test_cases": { "items": { "$ref": "#/components/schemas/TestCaseInfo" }, "type": "array", "title": "Test Cases" } }, "type": "object", "required": [ "test_cases" ], "title": "TestCasesResponse" }, "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" }, "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" }, "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" }, "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.\n\nExcludes pagination (limit/offset) and search-only fields (event_names)\nthat have no meaning in the rerun context." }, "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" }, "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" }, "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" }, "TestExecutionStatus": { "type": "string", "enum": [ "NOT_STARTED", "IN_PROGRESS", "PASSED", "FAILED", "NOT_TESTED", "ENDED_PREMATURELY" ], "title": "TestExecutionStatus" }, "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" }, "TestPlansResponse": { "properties": { "test_plans": { "items": { "type": "string" }, "type": "array", "title": "Test Plans" }, "count": { "type": "integer", "title": "Count" }, "limit": { "type": "integer", "title": "Limit" }, "offset": { "type": "integer", "title": "Offset" } }, "type": "object", "required": [ "test_plans", "count", "limit", "offset" ], "title": "TestPlansResponse", "description": "Response model for test plans endpoint" }, "TestReportedIssueRequest": { "properties": { "template_id": { "type": "string", "title": "Template Id", "default": "" }, "case_name": { "type": "string", "title": "Case Name", "default": "" }, "description": { "type": "string", "title": "Description" }, "url": { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url" } }, "type": "object", "required": [ "description", "url" ], "title": "TestReportedIssueRequest" }, "TestReportedIssueResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "template_id": { "type": "string", "title": "Template Id", "default": "" }, "case_name": { "type": "string", "title": "Case Name", "default": "" }, "description": { "type": "string", "title": "Description" }, "url": { "type": "string", "maxLength": 2083, "minLength": 1, "format": "uri", "title": "Url" }, "created_at": { "type": "string", "format": "date-time", "title": "Created At" }, "updated_at": { "type": "string", "format": "date-time", "title": "Updated At" } }, "type": "object", "required": [ "id", "description", "url", "created_at", "updated_at" ], "title": "TestReportedIssueResponse" }, "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" }, "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" }, "TestResultResponseWithContext": { "properties": { "test_result": { "$ref": "#/components/schemas/TestResultResponse" }, "test_execution": { "$ref": "#/components/schemas/TestExecutionResponse" }, "artefact": { "$ref": "#/components/schemas/ArtefactResponse" }, "artefact_build": { "$ref": "#/components/schemas/ArtefactBuildMinimalResponse" } }, "type": "object", "required": [ "test_result", "test_execution", "artefact", "artefact_build" ], "title": "TestResultResponseWithContext", "description": "Test result response with artefact and test execution context" }, "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" }, "TestResultSearchResponseWithContext": { "properties": { "count": { "type": "integer", "title": "Count" }, "limit": { "type": "integer", "title": "Limit" }, "offset": { "type": "integer", "title": "Offset" }, "test_results": { "items": { "$ref": "#/components/schemas/TestResultResponseWithContext" }, "type": "array", "title": "Test Results" } }, "type": "object", "required": [ "count", "limit", "offset", "test_results" ], "title": "TestResultSearchResponseWithContext", "description": "Response model for test results search endpoint with full context" }, "TestResultStatus": { "type": "string", "enum": [ "PASSED", "FAILED", "SKIPPED" ], "title": "TestResultStatus" }, "UserMinimalResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "launchpad_handle": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Launchpad Handle" }, "email": { "type": "string", "title": "Email" }, "name": { "type": "string", "title": "Name" }, "is_admin": { "type": "boolean", "title": "Is Admin" } }, "type": "object", "required": [ "id", "email", "name", "is_admin" ], "title": "UserMinimalResponse" }, "UserPatch": { "properties": { "is_admin": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "title": "Is Admin" } }, "type": "object", "title": "UserPatch" }, "UserResponse": { "properties": { "id": { "type": "integer", "title": "Id" }, "email": { "type": "string", "title": "Email" }, "name": { "type": "string", "title": "Name" }, "launchpad_handle": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "title": "Launchpad Handle" }, "teams": { "items": { "$ref": "#/components/schemas/TeamMinimalResponse" }, "type": "array", "title": "Teams" }, "is_admin": { "type": "boolean", "title": "Is Admin" } }, "type": "object", "required": [ "id", "email", "name", "teams", "is_admin" ], "title": "UserResponse" }, "UsersResponse": { "properties": { "users": { "items": { "$ref": "#/components/schemas/UserResponse" }, "type": "array", "title": "Users" }, "count": { "type": "integer", "title": "Count" }, "limit": { "type": "integer", "title": "Limit" }, "offset": { "type": "integer", "title": "Offset" } }, "type": "object", "required": [ "users", "count", "limit", "offset" ], "title": "UsersResponse" }, "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" } } } }