diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index d22c0abd58..b59bff36be 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -65766,6 +65766,240 @@ components: required: - data type: object + TestOptimizationDeleteServiceSettingsRequest: + description: Request object for deleting Test Optimization service settings. + properties: + data: + $ref: "#/components/schemas/TestOptimizationDeleteServiceSettingsRequestData" + required: + - data + type: object + TestOptimizationDeleteServiceSettingsRequestAttributes: + description: Attributes for deleting Test Optimization service settings. + properties: + env: + description: The environment name. If omitted, defaults to `none`. + example: prod + type: string + repository_id: + description: The repository identifier. + example: github.com/datadog/shopist + minLength: 1 + type: string + service_name: + description: The service name. + example: shopist + minLength: 1 + type: string + required: + - repository_id + - service_name + type: object + TestOptimizationDeleteServiceSettingsRequestData: + description: Data object for delete service settings request. + properties: + attributes: + $ref: "#/components/schemas/TestOptimizationDeleteServiceSettingsRequestAttributes" + type: + $ref: "#/components/schemas/TestOptimizationDeleteServiceSettingsRequestDataType" + required: + - type + - attributes + type: object + TestOptimizationDeleteServiceSettingsRequestDataType: + description: JSON:API type for delete service settings request. The value must always be `test_optimization_delete_service_settings_request`. + enum: + - test_optimization_delete_service_settings_request + example: test_optimization_delete_service_settings_request + type: string + x-enum-varnames: + - TEST_OPTIMIZATION_DELETE_SERVICE_SETTINGS_REQUEST + TestOptimizationGetServiceSettingsRequest: + description: Request object for getting Test Optimization service settings. + properties: + data: + $ref: "#/components/schemas/TestOptimizationGetServiceSettingsRequestData" + required: + - data + type: object + TestOptimizationGetServiceSettingsRequestAttributes: + description: Attributes for requesting Test Optimization service settings. + properties: + env: + description: The environment name. If omitted, defaults to `none`. + example: prod + type: string + repository_id: + description: The repository identifier. + example: github.com/datadog/shopist + minLength: 1 + type: string + service_name: + description: The service name. + example: shopist + minLength: 1 + type: string + required: + - repository_id + - service_name + type: object + TestOptimizationGetServiceSettingsRequestData: + description: Data object for get service settings request. + properties: + attributes: + $ref: "#/components/schemas/TestOptimizationGetServiceSettingsRequestAttributes" + type: + $ref: "#/components/schemas/TestOptimizationGetServiceSettingsRequestDataType" + required: + - type + - attributes + type: object + TestOptimizationGetServiceSettingsRequestDataType: + description: JSON:API type for get service settings request. The value must always be `test_optimization_get_service_settings_request`. + enum: + - test_optimization_get_service_settings_request + example: test_optimization_get_service_settings_request + type: string + x-enum-varnames: + - TEST_OPTIMIZATION_GET_SERVICE_SETTINGS_REQUEST + TestOptimizationServiceSettingsAttributes: + description: Attributes for Test Optimization service settings. + properties: + auto_test_retries_enabled: + description: Whether Auto Test Retries are enabled for this service. + example: false + type: boolean + code_coverage_enabled: + description: Whether Code Coverage is enabled for this service. + example: false + type: boolean + early_flake_detection_enabled: + description: Whether Early Flake Detection is enabled for this service. + example: false + type: boolean + env: + description: The environment name. + example: prod + type: string + failed_test_replay_enabled: + description: Whether Failed Test Replay is enabled for this service. + example: false + type: boolean + pr_comments_enabled: + description: Whether PR Comments are enabled for this service. + example: true + type: boolean + repository_id: + description: The repository identifier. + example: github.com/datadog/shopist + type: string + service_name: + description: The service name. + example: shopist + type: string + test_impact_analysis_enabled: + description: Whether Test Impact Analysis is enabled for this service. + example: false + type: boolean + type: object + TestOptimizationServiceSettingsData: + description: Data object for Test Optimization service settings response. + properties: + attributes: + $ref: "#/components/schemas/TestOptimizationServiceSettingsAttributes" + id: + description: Unique identifier for the service settings. + example: github.com/datadog/shopist::shopist::prod + type: string + type: + $ref: "#/components/schemas/TestOptimizationServiceSettingsType" + type: object + TestOptimizationServiceSettingsResponse: + description: Response object containing Test Optimization service settings. + properties: + data: + $ref: "#/components/schemas/TestOptimizationServiceSettingsData" + type: object + TestOptimizationServiceSettingsType: + description: JSON:API type for service settings response. The value must always be `test_optimization_service_settings`. + enum: + - test_optimization_service_settings + example: test_optimization_service_settings + type: string + x-enum-varnames: + - TEST_OPTIMIZATION_SERVICE_SETTINGS + TestOptimizationUpdateServiceSettingsRequest: + description: Request object for updating Test Optimization service settings. + properties: + data: + $ref: "#/components/schemas/TestOptimizationUpdateServiceSettingsRequestData" + required: + - data + type: object + TestOptimizationUpdateServiceSettingsRequestAttributes: + description: Attributes for updating Test Optimization service settings. All non-required fields are optional; only provided fields will be updated. + properties: + auto_test_retries_enabled: + description: Whether Auto Test Retries are enabled for this service. + example: false + type: boolean + code_coverage_enabled: + description: Whether Code Coverage is enabled for this service. + example: false + type: boolean + early_flake_detection_enabled: + description: Whether Early Flake Detection is enabled for this service. + example: false + type: boolean + env: + description: The environment name. If omitted, defaults to `none`. + example: prod + type: string + failed_test_replay_enabled: + description: Whether Failed Test Replay is enabled for this service. + example: false + type: boolean + pr_comments_enabled: + description: Whether PR Comments are enabled for this service. + example: true + type: boolean + repository_id: + description: The repository identifier. + example: github.com/datadog/shopist + minLength: 1 + type: string + service_name: + description: The service name. + example: shopist + minLength: 1 + type: string + test_impact_analysis_enabled: + description: Whether Test Impact Analysis is enabled for this service. + example: false + type: boolean + required: + - repository_id + - service_name + type: object + TestOptimizationUpdateServiceSettingsRequestData: + description: Data object for update service settings request. + properties: + attributes: + $ref: "#/components/schemas/TestOptimizationUpdateServiceSettingsRequestAttributes" + type: + $ref: "#/components/schemas/TestOptimizationUpdateServiceSettingsRequestDataType" + required: + - type + - attributes + type: object + TestOptimizationUpdateServiceSettingsRequestDataType: + description: JSON:API type for update service settings request. The value must always be `test_optimization_update_service_settings_request`. + enum: + - test_optimization_update_service_settings_request + example: test_optimization_update_service_settings_request + type: string + x-enum-varnames: + - TEST_OPTIMIZATION_UPDATE_SERVICE_SETTINGS_REQUEST ThreatHuntingJobDataType: description: Type of payload. enum: @@ -69561,6 +69795,7 @@ components: teams_manage: Manage Teams. Create, delete, rename, and edit metadata of all Teams. To control Team membership across all Teams, use the User Access Manage permission. teams_read: Read Teams data. A User with this permission can view Team names, metadata, and which Users are on each Team. test_optimization_read: View Test Optimization. + test_optimization_settings_write: Update service settings in Test Optimization. test_optimization_write: Update flaky tests from Flaky Tests Management of Test Optimization. timeseries_query: Query Timeseries data. usage_read: View your organization's usage and usage attribution. @@ -75808,6 +76043,124 @@ paths: operator: OR permissions: - ci_visibility_read + /api/v2/ci/test-optimization/settings/service: + delete: + description: |- + Delete Test Optimization settings for a specific service identified by repository, service name, and environment. + operationId: DeleteTestOptimizationServiceSettings + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TestOptimizationDeleteServiceSettingsRequest" + required: true + responses: + "204": + description: No Content + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - test_optimization_settings_write + summary: Delete Test Optimization service settings + tags: ["Test Optimization"] + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - test_optimization_settings_write + x-unstable: |- + **Note**: This endpoint is in preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + patch: + description: |- + Partially update Test Optimization settings for a specific service identified by repository, service name, and environment. + Only provided fields are updated; null or omitted fields are left unchanged. + operationId: UpdateTestOptimizationServiceSettings + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TestOptimizationUpdateServiceSettingsRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TestOptimizationServiceSettingsResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - test_optimization_settings_write + summary: Update Test Optimization service settings + tags: ["Test Optimization"] + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - test_optimization_settings_write + x-unstable: |- + **Note**: This endpoint is in preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + post: + description: |- + Retrieve Test Optimization settings for a specific service identified by repository, service name, and environment. + operationId: GetTestOptimizationServiceSettings + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TestOptimizationGetServiceSettingsRequest" + required: true + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/TestOptimizationServiceSettingsResponse" + description: OK + "400": + $ref: "#/components/responses/BadRequestResponse" + "403": + $ref: "#/components/responses/NotAuthorizedResponse" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - test_optimization_read + summary: Get Test Optimization service settings + tags: ["Test Optimization"] + x-codegen-request-body-name: body + x-permission: + operator: OR + permissions: + - test_optimization_read + x-unstable: |- + **Note**: This endpoint is in preview and may be subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/ci/tests/analytics/aggregate: post: description: |- diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 7a83d1c7c6..0c26004460 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -30370,6 +30370,118 @@ datadog\_api\_client.v2.model.tenancy\_products\_list module :members: :show-inheritance: +datadog\_api\_client.v2.model.test\_optimization\_delete\_service\_settings\_request module +------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_delete_service_settings_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_delete\_service\_settings\_request\_attributes module +------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_delete_service_settings_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_delete\_service\_settings\_request\_data module +------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_delete\_service\_settings\_request\_data\_type module +------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_get\_service\_settings\_request module +---------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_get_service_settings_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_get\_service\_settings\_request\_attributes module +---------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_get_service_settings_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_get\_service\_settings\_request\_data module +---------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_get_service_settings_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_get\_service\_settings\_request\_data\_type module +---------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_get_service_settings_request_data_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_service\_settings\_attributes module +-------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_service_settings_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_service\_settings\_data module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_service_settings_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_service\_settings\_response module +------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.test_optimization_service_settings_response + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_service\_settings\_type module +-------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_service_settings_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_update\_service\_settings\_request module +------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_update_service_settings_request + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_update\_service\_settings\_request\_attributes module +------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_update_service_settings_request_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_update\_service\_settings\_request\_data module +------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_update_service_settings_request_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.test\_optimization\_update\_service\_settings\_request\_data\_type module +------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.test_optimization_update_service_settings_request_data_type + :members: + :show-inheritance: + datadog\_api\_client.v2.model.threat\_hunting\_job\_data\_type module --------------------------------------------------------------------- diff --git a/examples/v2/test-optimization/DeleteTestOptimizationServiceSettings.py b/examples/v2/test-optimization/DeleteTestOptimizationServiceSettings.py new file mode 100644 index 0000000000..5727e61903 --- /dev/null +++ b/examples/v2/test-optimization/DeleteTestOptimizationServiceSettings.py @@ -0,0 +1,35 @@ +""" +Delete Test Optimization service settings returns "No Content" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.test_optimization_api import TestOptimizationApi +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request import ( + TestOptimizationDeleteServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_attributes import ( + TestOptimizationDeleteServiceSettingsRequestAttributes, +) +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data import ( + TestOptimizationDeleteServiceSettingsRequestData, +) +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data_type import ( + TestOptimizationDeleteServiceSettingsRequestDataType, +) + +body = TestOptimizationDeleteServiceSettingsRequest( + data=TestOptimizationDeleteServiceSettingsRequestData( + attributes=TestOptimizationDeleteServiceSettingsRequestAttributes( + env="prod", + repository_id="github.com/datadog/shopist", + service_name="shopist", + ), + type=TestOptimizationDeleteServiceSettingsRequestDataType.TEST_OPTIMIZATION_DELETE_SERVICE_SETTINGS_REQUEST, + ), +) + +configuration = Configuration() +configuration.unstable_operations["delete_test_optimization_service_settings"] = True +with ApiClient(configuration) as api_client: + api_instance = TestOptimizationApi(api_client) + api_instance.delete_test_optimization_service_settings(body=body) diff --git a/examples/v2/test-optimization/GetTestOptimizationServiceSettings.py b/examples/v2/test-optimization/GetTestOptimizationServiceSettings.py new file mode 100644 index 0000000000..9f5cace4a6 --- /dev/null +++ b/examples/v2/test-optimization/GetTestOptimizationServiceSettings.py @@ -0,0 +1,37 @@ +""" +Get Test Optimization service settings returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.test_optimization_api import TestOptimizationApi +from datadog_api_client.v2.model.test_optimization_get_service_settings_request import ( + TestOptimizationGetServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request_attributes import ( + TestOptimizationGetServiceSettingsRequestAttributes, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data import ( + TestOptimizationGetServiceSettingsRequestData, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data_type import ( + TestOptimizationGetServiceSettingsRequestDataType, +) + +body = TestOptimizationGetServiceSettingsRequest( + data=TestOptimizationGetServiceSettingsRequestData( + attributes=TestOptimizationGetServiceSettingsRequestAttributes( + env="prod", + repository_id="github.com/datadog/shopist", + service_name="shopist", + ), + type=TestOptimizationGetServiceSettingsRequestDataType.TEST_OPTIMIZATION_GET_SERVICE_SETTINGS_REQUEST, + ), +) + +configuration = Configuration() +configuration.unstable_operations["get_test_optimization_service_settings"] = True +with ApiClient(configuration) as api_client: + api_instance = TestOptimizationApi(api_client) + response = api_instance.get_test_optimization_service_settings(body=body) + + print(response) diff --git a/examples/v2/test-optimization/UpdateTestOptimizationServiceSettings.py b/examples/v2/test-optimization/UpdateTestOptimizationServiceSettings.py new file mode 100644 index 0000000000..385fecf5b5 --- /dev/null +++ b/examples/v2/test-optimization/UpdateTestOptimizationServiceSettings.py @@ -0,0 +1,43 @@ +""" +Update Test Optimization service settings returns "OK" response +""" + +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.test_optimization_api import TestOptimizationApi +from datadog_api_client.v2.model.test_optimization_update_service_settings_request import ( + TestOptimizationUpdateServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_update_service_settings_request_attributes import ( + TestOptimizationUpdateServiceSettingsRequestAttributes, +) +from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data import ( + TestOptimizationUpdateServiceSettingsRequestData, +) +from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data_type import ( + TestOptimizationUpdateServiceSettingsRequestDataType, +) + +body = TestOptimizationUpdateServiceSettingsRequest( + data=TestOptimizationUpdateServiceSettingsRequestData( + attributes=TestOptimizationUpdateServiceSettingsRequestAttributes( + auto_test_retries_enabled=False, + code_coverage_enabled=False, + early_flake_detection_enabled=False, + env="prod", + failed_test_replay_enabled=False, + pr_comments_enabled=True, + repository_id="github.com/datadog/shopist", + service_name="shopist", + test_impact_analysis_enabled=False, + ), + type=TestOptimizationUpdateServiceSettingsRequestDataType.TEST_OPTIMIZATION_UPDATE_SERVICE_SETTINGS_REQUEST, + ), +) + +configuration = Configuration() +configuration.unstable_operations["update_test_optimization_service_settings"] = True +with ApiClient(configuration) as api_client: + api_instance = TestOptimizationApi(api_client) + response = api_instance.update_test_optimization_service_settings(body=body) + + print(response) diff --git a/src/datadog_api_client/configuration.py b/src/datadog_api_client/configuration.py index 5cedd11cae..3a7d6f3d40 100644 --- a/src/datadog_api_client/configuration.py +++ b/src/datadog_api_client/configuration.py @@ -279,6 +279,11 @@ def __init__( "v2.get_change_request": False, "v2.update_change_request": False, "v2.update_change_request_decision": False, + "v2.delete_test_optimization_service_settings": False, + "v2.get_test_optimization_service_settings": False, + "v2.search_flaky_tests": False, + "v2.update_flaky_tests": False, + "v2.update_test_optimization_service_settings": False, "v2.create_aws_cloud_auth_persona_mapping": False, "v2.delete_aws_cloud_auth_persona_mapping": False, "v2.get_aws_cloud_auth_persona_mapping": False, @@ -481,8 +486,6 @@ def __init__( "v2.get_incident_team": False, "v2.list_incident_teams": False, "v2.update_incident_team": False, - "v2.search_flaky_tests": False, - "v2.update_flaky_tests": False, } ) diff --git a/src/datadog_api_client/v2/api/test_optimization_api.py b/src/datadog_api_client/v2/api/test_optimization_api.py index c8a9381f04..83066a261f 100644 --- a/src/datadog_api_client/v2/api/test_optimization_api.py +++ b/src/datadog_api_client/v2/api/test_optimization_api.py @@ -14,6 +14,18 @@ UnsetType, unset, ) +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request import ( + TestOptimizationDeleteServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_service_settings_response import ( + TestOptimizationServiceSettingsResponse, +) +from datadog_api_client.v2.model.test_optimization_update_service_settings_request import ( + TestOptimizationUpdateServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request import ( + TestOptimizationGetServiceSettingsRequest, +) from datadog_api_client.v2.model.update_flaky_tests_response import UpdateFlakyTestsResponse from datadog_api_client.v2.model.update_flaky_tests_request import UpdateFlakyTestsRequest from datadog_api_client.v2.model.flaky_tests_search_response import FlakyTestsSearchResponse @@ -31,6 +43,46 @@ def __init__(self, api_client=None): api_client = ApiClient(Configuration()) self.api_client = api_client + self._delete_test_optimization_service_settings_endpoint = _Endpoint( + settings={ + "response_type": None, + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/ci/test-optimization/settings/service", + "operation_id": "delete_test_optimization_service_settings", + "http_method": "DELETE", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TestOptimizationDeleteServiceSettingsRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["*/*"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + self._get_test_optimization_service_settings_endpoint = _Endpoint( + settings={ + "response_type": (TestOptimizationServiceSettingsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/ci/test-optimization/settings/service", + "operation_id": "get_test_optimization_service_settings", + "http_method": "POST", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TestOptimizationGetServiceSettingsRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + self._search_flaky_tests_endpoint = _Endpoint( settings={ "response_type": (FlakyTestsSearchResponse,), @@ -70,6 +122,58 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._update_test_optimization_service_settings_endpoint = _Endpoint( + settings={ + "response_type": (TestOptimizationServiceSettingsResponse,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/ci/test-optimization/settings/service", + "operation_id": "update_test_optimization_service_settings", + "http_method": "PATCH", + "version": "v2", + }, + params_map={ + "body": { + "required": True, + "openapi_types": (TestOptimizationUpdateServiceSettingsRequest,), + "location": "body", + }, + }, + headers_map={"accept": ["application/json"], "content_type": ["application/json"]}, + api_client=api_client, + ) + + def delete_test_optimization_service_settings( + self, + body: TestOptimizationDeleteServiceSettingsRequest, + ) -> None: + """Delete Test Optimization service settings. + + Delete Test Optimization settings for a specific service identified by repository, service name, and environment. + + :type body: TestOptimizationDeleteServiceSettingsRequest + :rtype: None + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._delete_test_optimization_service_settings_endpoint.call_with_http_info(**kwargs) + + def get_test_optimization_service_settings( + self, + body: TestOptimizationGetServiceSettingsRequest, + ) -> TestOptimizationServiceSettingsResponse: + """Get Test Optimization service settings. + + Retrieve Test Optimization settings for a specific service identified by repository, service name, and environment. + + :type body: TestOptimizationGetServiceSettingsRequest + :rtype: TestOptimizationServiceSettingsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._get_test_optimization_service_settings_endpoint.call_with_http_info(**kwargs) + def search_flaky_tests( self, *, @@ -148,3 +252,20 @@ def update_flaky_tests( kwargs["body"] = body return self._update_flaky_tests_endpoint.call_with_http_info(**kwargs) + + def update_test_optimization_service_settings( + self, + body: TestOptimizationUpdateServiceSettingsRequest, + ) -> TestOptimizationServiceSettingsResponse: + """Update Test Optimization service settings. + + Partially update Test Optimization settings for a specific service identified by repository, service name, and environment. + Only provided fields are updated; null or omitted fields are left unchanged. + + :type body: TestOptimizationUpdateServiceSettingsRequest + :rtype: TestOptimizationServiceSettingsResponse + """ + kwargs: Dict[str, Any] = {} + kwargs["body"] = body + + return self._update_test_optimization_service_settings_endpoint.call_with_http_info(**kwargs) diff --git a/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request.py b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request.py new file mode 100644 index 0000000000..dc44ea7fc2 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data import ( + TestOptimizationDeleteServiceSettingsRequestData, + ) + + +class TestOptimizationDeleteServiceSettingsRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data import ( + TestOptimizationDeleteServiceSettingsRequestData, + ) + + return { + "data": (TestOptimizationDeleteServiceSettingsRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TestOptimizationDeleteServiceSettingsRequestData, **kwargs): + """ + Request object for deleting Test Optimization service settings. + + :param data: Data object for delete service settings request. + :type data: TestOptimizationDeleteServiceSettingsRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_attributes.py b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_attributes.py new file mode 100644 index 0000000000..588bd106a0 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_attributes.py @@ -0,0 +1,58 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TestOptimizationDeleteServiceSettingsRequestAttributes(ModelNormal): + validations = { + "repository_id": { + "min_length": 1, + }, + "service_name": { + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + return { + "env": (str,), + "repository_id": (str,), + "service_name": (str,), + } + + attribute_map = { + "env": "env", + "repository_id": "repository_id", + "service_name": "service_name", + } + + def __init__(self_, repository_id: str, service_name: str, env: Union[str, UnsetType] = unset, **kwargs): + """ + Attributes for deleting Test Optimization service settings. + + :param env: The environment name. If omitted, defaults to ``none``. + :type env: str, optional + + :param repository_id: The repository identifier. + :type repository_id: str + + :param service_name: The service name. + :type service_name: str + """ + if env is not unset: + kwargs["env"] = env + super().__init__(kwargs) + + self_.repository_id = repository_id + self_.service_name = service_name diff --git a/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_data.py b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_data.py new file mode 100644 index 0000000000..6595a7b64a --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_data.py @@ -0,0 +1,61 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_attributes import ( + TestOptimizationDeleteServiceSettingsRequestAttributes, + ) + from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data_type import ( + TestOptimizationDeleteServiceSettingsRequestDataType, + ) + + +class TestOptimizationDeleteServiceSettingsRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_attributes import ( + TestOptimizationDeleteServiceSettingsRequestAttributes, + ) + from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data_type import ( + TestOptimizationDeleteServiceSettingsRequestDataType, + ) + + return { + "attributes": (TestOptimizationDeleteServiceSettingsRequestAttributes,), + "type": (TestOptimizationDeleteServiceSettingsRequestDataType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, + attributes: TestOptimizationDeleteServiceSettingsRequestAttributes, + type: TestOptimizationDeleteServiceSettingsRequestDataType, + **kwargs, + ): + """ + Data object for delete service settings request. + + :param attributes: Attributes for deleting Test Optimization service settings. + :type attributes: TestOptimizationDeleteServiceSettingsRequestAttributes + + :param type: JSON:API type for delete service settings request. The value must always be ``test_optimization_delete_service_settings_request``. + :type type: TestOptimizationDeleteServiceSettingsRequestDataType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_data_type.py b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_data_type.py new file mode 100644 index 0000000000..3fda853a81 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_delete_service_settings_request_data_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TestOptimizationDeleteServiceSettingsRequestDataType(ModelSimple): + """ + JSON:API type for delete service settings request. The value must always be `test_optimization_delete_service_settings_request`. + + :param value: If omitted defaults to "test_optimization_delete_service_settings_request". Must be one of ["test_optimization_delete_service_settings_request"]. + :type value: str + """ + + allowed_values = { + "test_optimization_delete_service_settings_request", + } + TEST_OPTIMIZATION_DELETE_SERVICE_SETTINGS_REQUEST: ClassVar["TestOptimizationDeleteServiceSettingsRequestDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TestOptimizationDeleteServiceSettingsRequestDataType.TEST_OPTIMIZATION_DELETE_SERVICE_SETTINGS_REQUEST = ( + TestOptimizationDeleteServiceSettingsRequestDataType("test_optimization_delete_service_settings_request") +) diff --git a/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request.py b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request.py new file mode 100644 index 0000000000..50d0fcb2e4 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data import ( + TestOptimizationGetServiceSettingsRequestData, + ) + + +class TestOptimizationGetServiceSettingsRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data import ( + TestOptimizationGetServiceSettingsRequestData, + ) + + return { + "data": (TestOptimizationGetServiceSettingsRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TestOptimizationGetServiceSettingsRequestData, **kwargs): + """ + Request object for getting Test Optimization service settings. + + :param data: Data object for get service settings request. + :type data: TestOptimizationGetServiceSettingsRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_attributes.py b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_attributes.py new file mode 100644 index 0000000000..cdd022e566 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_attributes.py @@ -0,0 +1,58 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TestOptimizationGetServiceSettingsRequestAttributes(ModelNormal): + validations = { + "repository_id": { + "min_length": 1, + }, + "service_name": { + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + return { + "env": (str,), + "repository_id": (str,), + "service_name": (str,), + } + + attribute_map = { + "env": "env", + "repository_id": "repository_id", + "service_name": "service_name", + } + + def __init__(self_, repository_id: str, service_name: str, env: Union[str, UnsetType] = unset, **kwargs): + """ + Attributes for requesting Test Optimization service settings. + + :param env: The environment name. If omitted, defaults to ``none``. + :type env: str, optional + + :param repository_id: The repository identifier. + :type repository_id: str + + :param service_name: The service name. + :type service_name: str + """ + if env is not unset: + kwargs["env"] = env + super().__init__(kwargs) + + self_.repository_id = repository_id + self_.service_name = service_name diff --git a/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_data.py b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_data.py new file mode 100644 index 0000000000..fe1656e370 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_data.py @@ -0,0 +1,61 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_get_service_settings_request_attributes import ( + TestOptimizationGetServiceSettingsRequestAttributes, + ) + from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data_type import ( + TestOptimizationGetServiceSettingsRequestDataType, + ) + + +class TestOptimizationGetServiceSettingsRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_get_service_settings_request_attributes import ( + TestOptimizationGetServiceSettingsRequestAttributes, + ) + from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data_type import ( + TestOptimizationGetServiceSettingsRequestDataType, + ) + + return { + "attributes": (TestOptimizationGetServiceSettingsRequestAttributes,), + "type": (TestOptimizationGetServiceSettingsRequestDataType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, + attributes: TestOptimizationGetServiceSettingsRequestAttributes, + type: TestOptimizationGetServiceSettingsRequestDataType, + **kwargs, + ): + """ + Data object for get service settings request. + + :param attributes: Attributes for requesting Test Optimization service settings. + :type attributes: TestOptimizationGetServiceSettingsRequestAttributes + + :param type: JSON:API type for get service settings request. The value must always be ``test_optimization_get_service_settings_request``. + :type type: TestOptimizationGetServiceSettingsRequestDataType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_data_type.py b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_data_type.py new file mode 100644 index 0000000000..2621d24e2b --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_get_service_settings_request_data_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TestOptimizationGetServiceSettingsRequestDataType(ModelSimple): + """ + JSON:API type for get service settings request. The value must always be `test_optimization_get_service_settings_request`. + + :param value: If omitted defaults to "test_optimization_get_service_settings_request". Must be one of ["test_optimization_get_service_settings_request"]. + :type value: str + """ + + allowed_values = { + "test_optimization_get_service_settings_request", + } + TEST_OPTIMIZATION_GET_SERVICE_SETTINGS_REQUEST: ClassVar["TestOptimizationGetServiceSettingsRequestDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TestOptimizationGetServiceSettingsRequestDataType.TEST_OPTIMIZATION_GET_SERVICE_SETTINGS_REQUEST = ( + TestOptimizationGetServiceSettingsRequestDataType("test_optimization_get_service_settings_request") +) diff --git a/src/datadog_api_client/v2/model/test_optimization_service_settings_attributes.py b/src/datadog_api_client/v2/model/test_optimization_service_settings_attributes.py new file mode 100644 index 0000000000..47f4f32c1f --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_service_settings_attributes.py @@ -0,0 +1,104 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TestOptimizationServiceSettingsAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "auto_test_retries_enabled": (bool,), + "code_coverage_enabled": (bool,), + "early_flake_detection_enabled": (bool,), + "env": (str,), + "failed_test_replay_enabled": (bool,), + "pr_comments_enabled": (bool,), + "repository_id": (str,), + "service_name": (str,), + "test_impact_analysis_enabled": (bool,), + } + + attribute_map = { + "auto_test_retries_enabled": "auto_test_retries_enabled", + "code_coverage_enabled": "code_coverage_enabled", + "early_flake_detection_enabled": "early_flake_detection_enabled", + "env": "env", + "failed_test_replay_enabled": "failed_test_replay_enabled", + "pr_comments_enabled": "pr_comments_enabled", + "repository_id": "repository_id", + "service_name": "service_name", + "test_impact_analysis_enabled": "test_impact_analysis_enabled", + } + + def __init__( + self_, + auto_test_retries_enabled: Union[bool, UnsetType] = unset, + code_coverage_enabled: Union[bool, UnsetType] = unset, + early_flake_detection_enabled: Union[bool, UnsetType] = unset, + env: Union[str, UnsetType] = unset, + failed_test_replay_enabled: Union[bool, UnsetType] = unset, + pr_comments_enabled: Union[bool, UnsetType] = unset, + repository_id: Union[str, UnsetType] = unset, + service_name: Union[str, UnsetType] = unset, + test_impact_analysis_enabled: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Attributes for Test Optimization service settings. + + :param auto_test_retries_enabled: Whether Auto Test Retries are enabled for this service. + :type auto_test_retries_enabled: bool, optional + + :param code_coverage_enabled: Whether Code Coverage is enabled for this service. + :type code_coverage_enabled: bool, optional + + :param early_flake_detection_enabled: Whether Early Flake Detection is enabled for this service. + :type early_flake_detection_enabled: bool, optional + + :param env: The environment name. + :type env: str, optional + + :param failed_test_replay_enabled: Whether Failed Test Replay is enabled for this service. + :type failed_test_replay_enabled: bool, optional + + :param pr_comments_enabled: Whether PR Comments are enabled for this service. + :type pr_comments_enabled: bool, optional + + :param repository_id: The repository identifier. + :type repository_id: str, optional + + :param service_name: The service name. + :type service_name: str, optional + + :param test_impact_analysis_enabled: Whether Test Impact Analysis is enabled for this service. + :type test_impact_analysis_enabled: bool, optional + """ + if auto_test_retries_enabled is not unset: + kwargs["auto_test_retries_enabled"] = auto_test_retries_enabled + if code_coverage_enabled is not unset: + kwargs["code_coverage_enabled"] = code_coverage_enabled + if early_flake_detection_enabled is not unset: + kwargs["early_flake_detection_enabled"] = early_flake_detection_enabled + if env is not unset: + kwargs["env"] = env + if failed_test_replay_enabled is not unset: + kwargs["failed_test_replay_enabled"] = failed_test_replay_enabled + if pr_comments_enabled is not unset: + kwargs["pr_comments_enabled"] = pr_comments_enabled + if repository_id is not unset: + kwargs["repository_id"] = repository_id + if service_name is not unset: + kwargs["service_name"] = service_name + if test_impact_analysis_enabled is not unset: + kwargs["test_impact_analysis_enabled"] = test_impact_analysis_enabled + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/test_optimization_service_settings_data.py b/src/datadog_api_client/v2/model/test_optimization_service_settings_data.py new file mode 100644 index 0000000000..051f12d520 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_service_settings_data.py @@ -0,0 +1,70 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_service_settings_attributes import ( + TestOptimizationServiceSettingsAttributes, + ) + from datadog_api_client.v2.model.test_optimization_service_settings_type import TestOptimizationServiceSettingsType + + +class TestOptimizationServiceSettingsData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_service_settings_attributes import ( + TestOptimizationServiceSettingsAttributes, + ) + from datadog_api_client.v2.model.test_optimization_service_settings_type import ( + TestOptimizationServiceSettingsType, + ) + + return { + "attributes": (TestOptimizationServiceSettingsAttributes,), + "id": (str,), + "type": (TestOptimizationServiceSettingsType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "type": "type", + } + + def __init__( + self_, + attributes: Union[TestOptimizationServiceSettingsAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + type: Union[TestOptimizationServiceSettingsType, UnsetType] = unset, + **kwargs, + ): + """ + Data object for Test Optimization service settings response. + + :param attributes: Attributes for Test Optimization service settings. + :type attributes: TestOptimizationServiceSettingsAttributes, optional + + :param id: Unique identifier for the service settings. + :type id: str, optional + + :param type: JSON:API type for service settings response. The value must always be ``test_optimization_service_settings``. + :type type: TestOptimizationServiceSettingsType, optional + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if type is not unset: + kwargs["type"] = type + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/test_optimization_service_settings_response.py b/src/datadog_api_client/v2/model/test_optimization_service_settings_response.py new file mode 100644 index 0000000000..45b2990197 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_service_settings_response.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_service_settings_data import TestOptimizationServiceSettingsData + + +class TestOptimizationServiceSettingsResponse(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_service_settings_data import ( + TestOptimizationServiceSettingsData, + ) + + return { + "data": (TestOptimizationServiceSettingsData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: Union[TestOptimizationServiceSettingsData, UnsetType] = unset, **kwargs): + """ + Response object containing Test Optimization service settings. + + :param data: Data object for Test Optimization service settings response. + :type data: TestOptimizationServiceSettingsData, optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/test_optimization_service_settings_type.py b/src/datadog_api_client/v2/model/test_optimization_service_settings_type.py new file mode 100644 index 0000000000..396e009861 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_service_settings_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TestOptimizationServiceSettingsType(ModelSimple): + """ + JSON:API type for service settings response. The value must always be `test_optimization_service_settings`. + + :param value: If omitted defaults to "test_optimization_service_settings". Must be one of ["test_optimization_service_settings"]. + :type value: str + """ + + allowed_values = { + "test_optimization_service_settings", + } + TEST_OPTIMIZATION_SERVICE_SETTINGS: ClassVar["TestOptimizationServiceSettingsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TestOptimizationServiceSettingsType.TEST_OPTIMIZATION_SERVICE_SETTINGS = TestOptimizationServiceSettingsType( + "test_optimization_service_settings" +) diff --git a/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request.py b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request.py new file mode 100644 index 0000000000..96623fd1ff --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request.py @@ -0,0 +1,44 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data import ( + TestOptimizationUpdateServiceSettingsRequestData, + ) + + +class TestOptimizationUpdateServiceSettingsRequest(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data import ( + TestOptimizationUpdateServiceSettingsRequestData, + ) + + return { + "data": (TestOptimizationUpdateServiceSettingsRequestData,), + } + + attribute_map = { + "data": "data", + } + + def __init__(self_, data: TestOptimizationUpdateServiceSettingsRequestData, **kwargs): + """ + Request object for updating Test Optimization service settings. + + :param data: Data object for update service settings request. + :type data: TestOptimizationUpdateServiceSettingsRequestData + """ + super().__init__(kwargs) + + self_.data = data diff --git a/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_attributes.py b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_attributes.py new file mode 100644 index 0000000000..ad2326ab29 --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_attributes.py @@ -0,0 +1,112 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +class TestOptimizationUpdateServiceSettingsRequestAttributes(ModelNormal): + validations = { + "repository_id": { + "min_length": 1, + }, + "service_name": { + "min_length": 1, + }, + } + + @cached_property + def openapi_types(_): + return { + "auto_test_retries_enabled": (bool,), + "code_coverage_enabled": (bool,), + "early_flake_detection_enabled": (bool,), + "env": (str,), + "failed_test_replay_enabled": (bool,), + "pr_comments_enabled": (bool,), + "repository_id": (str,), + "service_name": (str,), + "test_impact_analysis_enabled": (bool,), + } + + attribute_map = { + "auto_test_retries_enabled": "auto_test_retries_enabled", + "code_coverage_enabled": "code_coverage_enabled", + "early_flake_detection_enabled": "early_flake_detection_enabled", + "env": "env", + "failed_test_replay_enabled": "failed_test_replay_enabled", + "pr_comments_enabled": "pr_comments_enabled", + "repository_id": "repository_id", + "service_name": "service_name", + "test_impact_analysis_enabled": "test_impact_analysis_enabled", + } + + def __init__( + self_, + repository_id: str, + service_name: str, + auto_test_retries_enabled: Union[bool, UnsetType] = unset, + code_coverage_enabled: Union[bool, UnsetType] = unset, + early_flake_detection_enabled: Union[bool, UnsetType] = unset, + env: Union[str, UnsetType] = unset, + failed_test_replay_enabled: Union[bool, UnsetType] = unset, + pr_comments_enabled: Union[bool, UnsetType] = unset, + test_impact_analysis_enabled: Union[bool, UnsetType] = unset, + **kwargs, + ): + """ + Attributes for updating Test Optimization service settings. All non-required fields are optional; only provided fields will be updated. + + :param auto_test_retries_enabled: Whether Auto Test Retries are enabled for this service. + :type auto_test_retries_enabled: bool, optional + + :param code_coverage_enabled: Whether Code Coverage is enabled for this service. + :type code_coverage_enabled: bool, optional + + :param early_flake_detection_enabled: Whether Early Flake Detection is enabled for this service. + :type early_flake_detection_enabled: bool, optional + + :param env: The environment name. If omitted, defaults to ``none``. + :type env: str, optional + + :param failed_test_replay_enabled: Whether Failed Test Replay is enabled for this service. + :type failed_test_replay_enabled: bool, optional + + :param pr_comments_enabled: Whether PR Comments are enabled for this service. + :type pr_comments_enabled: bool, optional + + :param repository_id: The repository identifier. + :type repository_id: str + + :param service_name: The service name. + :type service_name: str + + :param test_impact_analysis_enabled: Whether Test Impact Analysis is enabled for this service. + :type test_impact_analysis_enabled: bool, optional + """ + if auto_test_retries_enabled is not unset: + kwargs["auto_test_retries_enabled"] = auto_test_retries_enabled + if code_coverage_enabled is not unset: + kwargs["code_coverage_enabled"] = code_coverage_enabled + if early_flake_detection_enabled is not unset: + kwargs["early_flake_detection_enabled"] = early_flake_detection_enabled + if env is not unset: + kwargs["env"] = env + if failed_test_replay_enabled is not unset: + kwargs["failed_test_replay_enabled"] = failed_test_replay_enabled + if pr_comments_enabled is not unset: + kwargs["pr_comments_enabled"] = pr_comments_enabled + if test_impact_analysis_enabled is not unset: + kwargs["test_impact_analysis_enabled"] = test_impact_analysis_enabled + super().__init__(kwargs) + + self_.repository_id = repository_id + self_.service_name = service_name diff --git a/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_data.py b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_data.py new file mode 100644 index 0000000000..38664bae4f --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_data.py @@ -0,0 +1,61 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.test_optimization_update_service_settings_request_attributes import ( + TestOptimizationUpdateServiceSettingsRequestAttributes, + ) + from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data_type import ( + TestOptimizationUpdateServiceSettingsRequestDataType, + ) + + +class TestOptimizationUpdateServiceSettingsRequestData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.test_optimization_update_service_settings_request_attributes import ( + TestOptimizationUpdateServiceSettingsRequestAttributes, + ) + from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data_type import ( + TestOptimizationUpdateServiceSettingsRequestDataType, + ) + + return { + "attributes": (TestOptimizationUpdateServiceSettingsRequestAttributes,), + "type": (TestOptimizationUpdateServiceSettingsRequestDataType,), + } + + attribute_map = { + "attributes": "attributes", + "type": "type", + } + + def __init__( + self_, + attributes: TestOptimizationUpdateServiceSettingsRequestAttributes, + type: TestOptimizationUpdateServiceSettingsRequestDataType, + **kwargs, + ): + """ + Data object for update service settings request. + + :param attributes: Attributes for updating Test Optimization service settings. All non-required fields are optional; only provided fields will be updated. + :type attributes: TestOptimizationUpdateServiceSettingsRequestAttributes + + :param type: JSON:API type for update service settings request. The value must always be ``test_optimization_update_service_settings_request``. + :type type: TestOptimizationUpdateServiceSettingsRequestDataType + """ + super().__init__(kwargs) + + self_.attributes = attributes + self_.type = type diff --git a/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_data_type.py b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_data_type.py new file mode 100644 index 0000000000..c06bb8f86d --- /dev/null +++ b/src/datadog_api_client/v2/model/test_optimization_update_service_settings_request_data_type.py @@ -0,0 +1,37 @@ +# Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class TestOptimizationUpdateServiceSettingsRequestDataType(ModelSimple): + """ + JSON:API type for update service settings request. The value must always be `test_optimization_update_service_settings_request`. + + :param value: If omitted defaults to "test_optimization_update_service_settings_request". Must be one of ["test_optimization_update_service_settings_request"]. + :type value: str + """ + + allowed_values = { + "test_optimization_update_service_settings_request", + } + TEST_OPTIMIZATION_UPDATE_SERVICE_SETTINGS_REQUEST: ClassVar["TestOptimizationUpdateServiceSettingsRequestDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +TestOptimizationUpdateServiceSettingsRequestDataType.TEST_OPTIMIZATION_UPDATE_SERVICE_SETTINGS_REQUEST = ( + TestOptimizationUpdateServiceSettingsRequestDataType("test_optimization_update_service_settings_request") +) diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 93bc532cfa..1f4e47df2c 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -6183,6 +6183,50 @@ ) from datadog_api_client.v2.model.tenancy_products_data_type import TenancyProductsDataType from datadog_api_client.v2.model.tenancy_products_list import TenancyProductsList +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request import ( + TestOptimizationDeleteServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_attributes import ( + TestOptimizationDeleteServiceSettingsRequestAttributes, +) +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data import ( + TestOptimizationDeleteServiceSettingsRequestData, +) +from datadog_api_client.v2.model.test_optimization_delete_service_settings_request_data_type import ( + TestOptimizationDeleteServiceSettingsRequestDataType, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request import ( + TestOptimizationGetServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request_attributes import ( + TestOptimizationGetServiceSettingsRequestAttributes, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data import ( + TestOptimizationGetServiceSettingsRequestData, +) +from datadog_api_client.v2.model.test_optimization_get_service_settings_request_data_type import ( + TestOptimizationGetServiceSettingsRequestDataType, +) +from datadog_api_client.v2.model.test_optimization_service_settings_attributes import ( + TestOptimizationServiceSettingsAttributes, +) +from datadog_api_client.v2.model.test_optimization_service_settings_data import TestOptimizationServiceSettingsData +from datadog_api_client.v2.model.test_optimization_service_settings_response import ( + TestOptimizationServiceSettingsResponse, +) +from datadog_api_client.v2.model.test_optimization_service_settings_type import TestOptimizationServiceSettingsType +from datadog_api_client.v2.model.test_optimization_update_service_settings_request import ( + TestOptimizationUpdateServiceSettingsRequest, +) +from datadog_api_client.v2.model.test_optimization_update_service_settings_request_attributes import ( + TestOptimizationUpdateServiceSettingsRequestAttributes, +) +from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data import ( + TestOptimizationUpdateServiceSettingsRequestData, +) +from datadog_api_client.v2.model.test_optimization_update_service_settings_request_data_type import ( + TestOptimizationUpdateServiceSettingsRequestDataType, +) from datadog_api_client.v2.model.threat_hunting_job_data_type import ThreatHuntingJobDataType from datadog_api_client.v2.model.threat_hunting_job_list_meta import ThreatHuntingJobListMeta from datadog_api_client.v2.model.threat_hunting_job_options import ThreatHuntingJobOptions @@ -10855,6 +10899,22 @@ "TenancyProductsDataAttributesProductsItems", "TenancyProductsDataType", "TenancyProductsList", + "TestOptimizationDeleteServiceSettingsRequest", + "TestOptimizationDeleteServiceSettingsRequestAttributes", + "TestOptimizationDeleteServiceSettingsRequestData", + "TestOptimizationDeleteServiceSettingsRequestDataType", + "TestOptimizationGetServiceSettingsRequest", + "TestOptimizationGetServiceSettingsRequestAttributes", + "TestOptimizationGetServiceSettingsRequestData", + "TestOptimizationGetServiceSettingsRequestDataType", + "TestOptimizationServiceSettingsAttributes", + "TestOptimizationServiceSettingsData", + "TestOptimizationServiceSettingsResponse", + "TestOptimizationServiceSettingsType", + "TestOptimizationUpdateServiceSettingsRequest", + "TestOptimizationUpdateServiceSettingsRequestAttributes", + "TestOptimizationUpdateServiceSettingsRequestData", + "TestOptimizationUpdateServiceSettingsRequestDataType", "ThreatHuntingJobDataType", "ThreatHuntingJobListMeta", "ThreatHuntingJobOptions", diff --git a/tests/v2/features/test_optimization.feature b/tests/v2/features/test_optimization.feature index bbf7d87075..427db05baf 100644 --- a/tests/v2/features/test_optimization.feature +++ b/tests/v2/features/test_optimization.feature @@ -9,6 +9,78 @@ Feature: Test Optimization And a valid "appKeyAuth" key in the system And an instance of "TestOptimization" API + @generated @skip @team:DataDog/ci-app-backend + Scenario: Delete Test Optimization service settings returns "Bad Request" response + Given operation "DeleteTestOptimizationServiceSettings" enabled + And new "DeleteTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "github.com/datadog/shopist", "service_name": "shopist"}, "type": "test_optimization_delete_service_settings_request"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ci-app-backend + Scenario: Delete Test Optimization service settings returns "No Content" response + Given operation "DeleteTestOptimizationServiceSettings" enabled + And new "DeleteTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "github.com/datadog/shopist", "service_name": "shopist"}, "type": "test_optimization_delete_service_settings_request"}} + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/ci-app-backend + Scenario: Delete Test Optimization service settings returns "Not Found" response + Given operation "DeleteTestOptimizationServiceSettings" enabled + And new "DeleteTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "github.com/datadog/shopist", "service_name": "shopist"}, "type": "test_optimization_delete_service_settings_request"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ci-app-backend + Scenario: Get Test Optimization service settings returns "Bad Request" response + Given operation "GetTestOptimizationServiceSettings" enabled + And new "GetTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "github.com/datadog/shopist", "service_name": "shopist"}, "type": "test_optimization_get_service_settings_request"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ci-app-backend + Scenario: Get Test Optimization service settings returns "Not Found" response + Given operation "GetTestOptimizationServiceSettings" enabled + And new "GetTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "github.com/datadog/shopist", "service_name": "shopist"}, "type": "test_optimization_get_service_settings_request"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ci-app-backend + Scenario: Get Test Optimization service settings returns "OK" response + Given operation "GetTestOptimizationServiceSettings" enabled + And new "GetTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "github.com/datadog/shopist", "service_name": "shopist"}, "type": "test_optimization_get_service_settings_request"}} + When the request is sent + Then the response status is 200 OK + + @skip @team:DataDog/ci-app-backend + Scenario: Get Test Optimization service settings with empty env returns bad request + Given operation "GetTestOptimizationServiceSettings" enabled + And new "GetTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "", "repository_id": "github.com/datadog/shopist", "service_name": "shopist"}, "type": "test_optimization_get_service_settings_request"}} + When the request is sent + Then the response status is 400 Bad Request + + @skip @team:DataDog/ci-app-backend + Scenario: Get Test Optimization service settings with empty repository_id returns bad request + Given operation "GetTestOptimizationServiceSettings" enabled + And new "GetTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "", "service_name": "shopist"}, "type": "test_optimization_get_service_settings_request"}} + When the request is sent + Then the response status is 400 Bad Request + + @skip @team:DataDog/ci-app-backend + Scenario: Get Test Optimization service settings with empty service_name returns bad request + Given operation "GetTestOptimizationServiceSettings" enabled + And new "GetTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "github.com/datadog/shopist", "service_name": ""}, "type": "test_optimization_get_service_settings_request"}} + When the request is sent + Then the response status is 400 Bad Request + @generated @skip @team:DataDog/ci-app-backend Scenario: Search flaky tests returns "Bad Request" response Given operation "SearchFlakyTests" enabled @@ -61,6 +133,38 @@ Feature: Test Optimization When the request with pagination is sent Then the response status is 200 OK + @generated @skip @team:DataDog/ci-app-backend + Scenario: Update Test Optimization service settings returns "Bad Request" response + Given operation "UpdateTestOptimizationServiceSettings" enabled + And new "UpdateTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"auto_test_retries_enabled": false, "code_coverage_enabled": false, "early_flake_detection_enabled": false, "env": "prod", "failed_test_replay_enabled": false, "pr_comments_enabled": true, "repository_id": "github.com/datadog/shopist", "service_name": "shopist", "test_impact_analysis_enabled": false}, "type": "test_optimization_update_service_settings_request"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ci-app-backend + Scenario: Update Test Optimization service settings returns "Not Found" response + Given operation "UpdateTestOptimizationServiceSettings" enabled + And new "UpdateTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"auto_test_retries_enabled": false, "code_coverage_enabled": false, "early_flake_detection_enabled": false, "env": "prod", "failed_test_replay_enabled": false, "pr_comments_enabled": true, "repository_id": "github.com/datadog/shopist", "service_name": "shopist", "test_impact_analysis_enabled": false}, "type": "test_optimization_update_service_settings_request"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ci-app-backend + Scenario: Update Test Optimization service settings returns "OK" response + Given operation "UpdateTestOptimizationServiceSettings" enabled + And new "UpdateTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"auto_test_retries_enabled": false, "code_coverage_enabled": false, "early_flake_detection_enabled": false, "env": "prod", "failed_test_replay_enabled": false, "pr_comments_enabled": true, "repository_id": "github.com/datadog/shopist", "service_name": "shopist", "test_impact_analysis_enabled": false}, "type": "test_optimization_update_service_settings_request"}} + When the request is sent + Then the response status is 200 OK + + @skip @team:DataDog/ci-app-backend + Scenario: Update Test Optimization service settings with empty repository_id returns bad request + Given operation "UpdateTestOptimizationServiceSettings" enabled + And new "UpdateTestOptimizationServiceSettings" request + And body with value {"data": {"attributes": {"env": "prod", "repository_id": "", "service_name": "shopist"}, "type": "test_optimization_update_service_settings_request"}} + When the request is sent + Then the response status is 400 Bad Request + @generated @skip @team:DataDog/ci-app-backend Scenario: Update flaky test states returns "Bad Request" response Given operation "UpdateFlakyTests" enabled diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index a04c9b283b..df39366284 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -1036,6 +1036,24 @@ "type": "safe" } }, + "DeleteTestOptimizationServiceSettings": { + "tag": "Test Optimization", + "undo": { + "type": "unsafe" + } + }, + "UpdateTestOptimizationServiceSettings": { + "tag": "Test Optimization", + "undo": { + "type": "unsafe" + } + }, + "GetTestOptimizationServiceSettings": { + "tag": "Test Optimization", + "undo": { + "type": "safe" + } + }, "AggregateCIAppTestEvents": { "tag": "CI Visibility Tests", "undo": {