diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 30adedda3d3..5fe234a0ce1 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -80813,9 +80813,9 @@ paths: appKeyAuth: [] - AuthZ: - user_access_read - summary: Get all datasets + summary: Get all Data Access Control datasets tags: - - Datasets + - Data Access Controls "x-permission": operator: OR permissions: @@ -80865,9 +80865,9 @@ paths: appKeyAuth: [] - AuthZ: - user_access_manage - summary: Create a dataset + summary: Create a Data Access Control dataset tags: - - Datasets + - Data Access Controls x-codegen-request-body-name: body x-permission: operator: OR @@ -80898,9 +80898,9 @@ paths: appKeyAuth: [] - AuthZ: - user_access_manage - summary: Delete a dataset + summary: Delete a Data Access Control dataset tags: - - Datasets + - Data Access Controls "x-permission": operator: OR permissions: @@ -80933,9 +80933,9 @@ paths: appKeyAuth: [] - AuthZ: - user_access_read - summary: Get a single dataset by ID + summary: Get a Data Access Control dataset by ID tags: - - Datasets + - Data Access Controls "x-permission": operator: OPEN permissions: [] @@ -80975,9 +80975,9 @@ paths: appKeyAuth: [] - AuthZ: - user_access_manage - summary: Edit a dataset + summary: Edit a Data Access Control dataset tags: - - Datasets + - Data Access Controls x-codegen-request-body-name: body "x-permission": operator: OR @@ -110116,13 +110116,16 @@ tags: organization. name: Dashboard Lists - description: |- - The Data Deletion API allows the user to target and delete data from the allowed products. It's currently enabled for Logs and RUM and depends on `logs_delete_data` and `rum_delete_data` permissions respectively. - name: Data Deletion - - description: |- - Data Access Controls in Datadog is a feature that allows administrators and access managers to regulate + Manage [Data Access Controls](https://docs.datadoghq.com/account_management/rbac/data_access/) + programmatically using Datasets. + + Data Access Controls in Datadog allows administrators and access managers to regulate access to sensitive data. By defining Restricted Datasets, you can ensure that only specific teams or roles can view certain types of telemetry (for example, logs, traces, metrics, and RUM data). - name: Datasets + name: Data Access Controls + - description: |- + The Data Deletion API allows the user to target and delete data from the allowed products. It's currently enabled for Logs and RUM and depends on `logs_delete_data` and `rum_delete_data` permissions respectively. + name: Data Deletion - description: |- Manage Deployment Gates using this API to reduce the likelihood and impact of incidents caused by deployments. See the [Deployment Gates documentation](https://docs.datadoghq.com/deployment_gates/) for more information. name: Deployment Gates diff --git a/examples/v2/datasets/CreateDataset.java b/examples/v2/data-access-controls/CreateDataset.java similarity index 83% rename from examples/v2/datasets/CreateDataset.java rename to examples/v2/data-access-controls/CreateDataset.java index 6bfa37c9296..47a8ff187b0 100644 --- a/examples/v2/datasets/CreateDataset.java +++ b/examples/v2/data-access-controls/CreateDataset.java @@ -1,8 +1,8 @@ -// Create a dataset returns "OK" response +// Create a Data Access Control dataset returns "OK" response import com.datadog.api.client.ApiClient; import com.datadog.api.client.ApiException; -import com.datadog.api.client.v2.api.DatasetsApi; +import com.datadog.api.client.v2.api.DataAccessControlsApi; import com.datadog.api.client.v2.model.DatasetAttributesRequest; import com.datadog.api.client.v2.model.DatasetCreateRequest; import com.datadog.api.client.v2.model.DatasetRequest; @@ -15,7 +15,7 @@ public class Example { public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); defaultClient.setUnstableOperationEnabled("v2.createDataset", true); - DatasetsApi apiInstance = new DatasetsApi(defaultClient); + DataAccessControlsApi apiInstance = new DataAccessControlsApi(defaultClient); DatasetCreateRequest body = new DatasetCreateRequest() @@ -31,14 +31,14 @@ public static void main(String[] args) { Collections.singletonList( new FiltersPerProduct() .filters(Collections.singletonList("@application.id:ABCD")) - .product("metrics")))) + .product("logs")))) .type(DatasetType.DATASET)); try { DatasetResponseSingle result = apiInstance.createDataset(body); System.out.println(result); } catch (ApiException e) { - System.err.println("Exception when calling DatasetsApi#createDataset"); + System.err.println("Exception when calling DataAccessControlsApi#createDataset"); System.err.println("Status code: " + e.getCode()); System.err.println("Reason: " + e.getResponseBody()); System.err.println("Response headers: " + e.getResponseHeaders()); diff --git a/examples/v2/datasets/DeleteDataset.java b/examples/v2/data-access-controls/DeleteDataset.java similarity index 58% rename from examples/v2/datasets/DeleteDataset.java rename to examples/v2/data-access-controls/DeleteDataset.java index db56c8cfadf..7e431f964f2 100644 --- a/examples/v2/datasets/DeleteDataset.java +++ b/examples/v2/data-access-controls/DeleteDataset.java @@ -1,22 +1,19 @@ -// Delete a dataset returns "No Content" response +// Delete a Data Access Control dataset returns "No Content" response import com.datadog.api.client.ApiClient; import com.datadog.api.client.ApiException; -import com.datadog.api.client.v2.api.DatasetsApi; +import com.datadog.api.client.v2.api.DataAccessControlsApi; public class Example { public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); defaultClient.setUnstableOperationEnabled("v2.deleteDataset", true); - DatasetsApi apiInstance = new DatasetsApi(defaultClient); - - // there is a valid "dataset" in the system - String DATASET_DATA_ID = System.getenv("DATASET_DATA_ID"); + DataAccessControlsApi apiInstance = new DataAccessControlsApi(defaultClient); try { - apiInstance.deleteDataset(DATASET_DATA_ID); + apiInstance.deleteDataset("0879ce27-29a1-481f-a12e-bc2a48ec9ae1"); } catch (ApiException e) { - System.err.println("Exception when calling DatasetsApi#deleteDataset"); + System.err.println("Exception when calling DataAccessControlsApi#deleteDataset"); System.err.println("Status code: " + e.getCode()); System.err.println("Reason: " + e.getResponseBody()); System.err.println("Response headers: " + e.getResponseHeaders()); diff --git a/examples/v2/datasets/GetAllDatasets.java b/examples/v2/data-access-controls/GetAllDatasets.java similarity index 71% rename from examples/v2/datasets/GetAllDatasets.java rename to examples/v2/data-access-controls/GetAllDatasets.java index 78b96f32548..2b35339af5e 100644 --- a/examples/v2/datasets/GetAllDatasets.java +++ b/examples/v2/data-access-controls/GetAllDatasets.java @@ -1,21 +1,21 @@ -// Get all datasets returns "OK" response +// Get all Data Access Control datasets returns "OK" response import com.datadog.api.client.ApiClient; import com.datadog.api.client.ApiException; -import com.datadog.api.client.v2.api.DatasetsApi; +import com.datadog.api.client.v2.api.DataAccessControlsApi; import com.datadog.api.client.v2.model.DatasetResponseMulti; public class Example { public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); defaultClient.setUnstableOperationEnabled("v2.getAllDatasets", true); - DatasetsApi apiInstance = new DatasetsApi(defaultClient); + DataAccessControlsApi apiInstance = new DataAccessControlsApi(defaultClient); try { DatasetResponseMulti result = apiInstance.getAllDatasets(); System.out.println(result); } catch (ApiException e) { - System.err.println("Exception when calling DatasetsApi#getAllDatasets"); + System.err.println("Exception when calling DataAccessControlsApi#getAllDatasets"); System.err.println("Status code: " + e.getCode()); System.err.println("Reason: " + e.getResponseBody()); System.err.println("Response headers: " + e.getResponseHeaders()); diff --git a/examples/v2/datasets/GetDataset.java b/examples/v2/data-access-controls/GetDataset.java similarity index 60% rename from examples/v2/datasets/GetDataset.java rename to examples/v2/data-access-controls/GetDataset.java index 5825ca87c28..3ac87bc7e8e 100644 --- a/examples/v2/datasets/GetDataset.java +++ b/examples/v2/data-access-controls/GetDataset.java @@ -1,24 +1,21 @@ -// Get a single dataset by ID returns "OK" response +// Get a Data Access Control dataset by ID returns "OK" response import com.datadog.api.client.ApiClient; import com.datadog.api.client.ApiException; -import com.datadog.api.client.v2.api.DatasetsApi; +import com.datadog.api.client.v2.api.DataAccessControlsApi; import com.datadog.api.client.v2.model.DatasetResponseSingle; public class Example { public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); defaultClient.setUnstableOperationEnabled("v2.getDataset", true); - DatasetsApi apiInstance = new DatasetsApi(defaultClient); - - // there is a valid "dataset" in the system - String DATASET_DATA_ID = System.getenv("DATASET_DATA_ID"); + DataAccessControlsApi apiInstance = new DataAccessControlsApi(defaultClient); try { - DatasetResponseSingle result = apiInstance.getDataset(DATASET_DATA_ID); + DatasetResponseSingle result = apiInstance.getDataset("0879ce27-29a1-481f-a12e-bc2a48ec9ae1"); System.out.println(result); } catch (ApiException e) { - System.err.println("Exception when calling DatasetsApi#getDataset"); + System.err.println("Exception when calling DataAccessControlsApi#getDataset"); System.err.println("Status code: " + e.getCode()); System.err.println("Reason: " + e.getResponseBody()); System.err.println("Response headers: " + e.getResponseHeaders()); diff --git a/examples/v2/datasets/UpdateDataset.java b/examples/v2/data-access-controls/UpdateDataset.java similarity index 76% rename from examples/v2/datasets/UpdateDataset.java rename to examples/v2/data-access-controls/UpdateDataset.java index a64fc25c96c..87be2ed42c6 100644 --- a/examples/v2/datasets/UpdateDataset.java +++ b/examples/v2/data-access-controls/UpdateDataset.java @@ -1,8 +1,8 @@ -// Edit a dataset returns "OK" response +// Edit a Data Access Control dataset returns "OK" response import com.datadog.api.client.ApiClient; import com.datadog.api.client.ApiException; -import com.datadog.api.client.v2.api.DatasetsApi; +import com.datadog.api.client.v2.api.DataAccessControlsApi; import com.datadog.api.client.v2.model.DatasetAttributesRequest; import com.datadog.api.client.v2.model.DatasetRequest; import com.datadog.api.client.v2.model.DatasetResponseSingle; @@ -15,10 +15,7 @@ public class Example { public static void main(String[] args) { ApiClient defaultClient = ApiClient.getDefaultApiClient(); defaultClient.setUnstableOperationEnabled("v2.updateDataset", true); - DatasetsApi apiInstance = new DatasetsApi(defaultClient); - - // there is a valid "dataset" in the system - String DATASET_DATA_ID = System.getenv("DATASET_DATA_ID"); + DataAccessControlsApi apiInstance = new DataAccessControlsApi(defaultClient); DatasetUpdateRequest body = new DatasetUpdateRequest() @@ -33,15 +30,16 @@ public static void main(String[] args) { .productFilters( Collections.singletonList( new FiltersPerProduct() - .filters(Collections.singletonList("@application.id:1234")) - .product("metrics")))) + .filters(Collections.singletonList("@application.id:ABCD")) + .product("logs")))) .type(DatasetType.DATASET)); try { - DatasetResponseSingle result = apiInstance.updateDataset(DATASET_DATA_ID, body); + DatasetResponseSingle result = + apiInstance.updateDataset("0879ce27-29a1-481f-a12e-bc2a48ec9ae1", body); System.out.println(result); } catch (ApiException e) { - System.err.println("Exception when calling DatasetsApi#updateDataset"); + System.err.println("Exception when calling DataAccessControlsApi#updateDataset"); System.err.println("Status code: " + e.getCode()); System.err.println("Reason: " + e.getResponseBody()); System.err.println("Response headers: " + e.getResponseHeaders()); diff --git a/src/main/java/com/datadog/api/client/v2/api/DatasetsApi.java b/src/main/java/com/datadog/api/client/v2/api/DataAccessControlsApi.java similarity index 95% rename from src/main/java/com/datadog/api/client/v2/api/DatasetsApi.java rename to src/main/java/com/datadog/api/client/v2/api/DataAccessControlsApi.java index 36dfd338a83..248abefc2db 100644 --- a/src/main/java/com/datadog/api/client/v2/api/DatasetsApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/DataAccessControlsApi.java @@ -17,14 +17,14 @@ @jakarta.annotation.Generated( value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") -public class DatasetsApi { +public class DataAccessControlsApi { private ApiClient apiClient; - public DatasetsApi() { + public DataAccessControlsApi() { this(ApiClient.getDefaultApiClient()); } - public DatasetsApi(ApiClient apiClient) { + public DataAccessControlsApi(ApiClient apiClient) { this.apiClient = apiClient; } @@ -47,7 +47,7 @@ public void setApiClient(ApiClient apiClient) { } /** - * Create a dataset. + * Create a Data Access Control dataset. * *

See {@link #createDatasetWithHttpInfo}. * @@ -60,7 +60,7 @@ public DatasetResponseSingle createDataset(DatasetCreateRequest body) throws Api } /** - * Create a dataset. + * Create a Data Access Control dataset. * *

See {@link #createDatasetWithHttpInfoAsync}. * @@ -115,7 +115,7 @@ public ApiResponse createDatasetWithHttpInfo(DatasetCreat Invocation.Builder builder = apiClient.createBuilder( - "v2.DatasetsApi.createDataset", + "v2.DataAccessControlsApi.createDataset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -134,7 +134,7 @@ public ApiResponse createDatasetWithHttpInfo(DatasetCreat } /** - * Create a dataset. + * Create a Data Access Control dataset. * *

See {@link #createDatasetWithHttpInfo}. * @@ -172,7 +172,7 @@ public CompletableFuture> createDatasetWithHt try { builder = apiClient.createBuilder( - "v2.DatasetsApi.createDataset", + "v2.DataAccessControlsApi.createDataset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -196,7 +196,7 @@ public CompletableFuture> createDatasetWithHt } /** - * Delete a dataset. + * Delete a Data Access Control dataset. * *

See {@link #deleteDatasetWithHttpInfo}. * @@ -208,7 +208,7 @@ public void deleteDataset(String datasetId) throws ApiException { } /** - * Delete a dataset. + * Delete a Data Access Control dataset. * *

See {@link #deleteDatasetWithHttpInfoAsync}. * @@ -264,7 +264,7 @@ public ApiResponse deleteDatasetWithHttpInfo(String datasetId) throws ApiE Invocation.Builder builder = apiClient.createBuilder( - "v2.DatasetsApi.deleteDataset", + "v2.DataAccessControlsApi.deleteDataset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -283,7 +283,7 @@ public ApiResponse deleteDatasetWithHttpInfo(String datasetId) throws ApiE } /** - * Delete a dataset. + * Delete a Data Access Control dataset. * *

See {@link #deleteDatasetWithHttpInfo}. * @@ -322,7 +322,7 @@ public CompletableFuture> deleteDatasetWithHttpInfoAsync(Strin try { builder = apiClient.createBuilder( - "v2.DatasetsApi.deleteDataset", + "v2.DataAccessControlsApi.deleteDataset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -346,7 +346,7 @@ public CompletableFuture> deleteDatasetWithHttpInfoAsync(Strin } /** - * Get all datasets. + * Get all Data Access Control datasets. * *

See {@link #getAllDatasetsWithHttpInfo}. * @@ -358,7 +358,7 @@ public DatasetResponseMulti getAllDatasets() throws ApiException { } /** - * Get all datasets. + * Get all Data Access Control datasets. * *

See {@link #getAllDatasetsWithHttpInfoAsync}. * @@ -402,7 +402,7 @@ public ApiResponse getAllDatasetsWithHttpInfo() throws Api Invocation.Builder builder = apiClient.createBuilder( - "v2.DatasetsApi.getAllDatasets", + "v2.DataAccessControlsApi.getAllDatasets", localVarPath, new ArrayList(), localVarHeaderParams, @@ -421,7 +421,7 @@ public ApiResponse getAllDatasetsWithHttpInfo() throws Api } /** - * Get all datasets. + * Get all Data Access Control datasets. * *

See {@link #getAllDatasetsWithHttpInfo}. * @@ -448,7 +448,7 @@ public CompletableFuture> getAllDatasetsWithHt try { builder = apiClient.createBuilder( - "v2.DatasetsApi.getAllDatasets", + "v2.DataAccessControlsApi.getAllDatasets", localVarPath, new ArrayList(), localVarHeaderParams, @@ -472,7 +472,7 @@ public CompletableFuture> getAllDatasetsWithHt } /** - * Get a single dataset by ID. + * Get a Data Access Control dataset by ID. * *

See {@link #getDatasetWithHttpInfo}. * @@ -485,7 +485,7 @@ public DatasetResponseSingle getDataset(String datasetId) throws ApiException { } /** - * Get a single dataset by ID. + * Get a Data Access Control dataset by ID. * *

See {@link #getDatasetWithHttpInfoAsync}. * @@ -542,7 +542,7 @@ public ApiResponse getDatasetWithHttpInfo(String datasetI Invocation.Builder builder = apiClient.createBuilder( - "v2.DatasetsApi.getDataset", + "v2.DataAccessControlsApi.getDataset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -561,7 +561,7 @@ public ApiResponse getDatasetWithHttpInfo(String datasetI } /** - * Get a single dataset by ID. + * Get a Data Access Control dataset by ID. * *

See {@link #getDatasetWithHttpInfo}. * @@ -601,7 +601,7 @@ public CompletableFuture> getDatasetWithHttpI try { builder = apiClient.createBuilder( - "v2.DatasetsApi.getDataset", + "v2.DataAccessControlsApi.getDataset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -625,7 +625,7 @@ public CompletableFuture> getDatasetWithHttpI } /** - * Edit a dataset. + * Edit a Data Access Control dataset. * *

See {@link #updateDatasetWithHttpInfo}. * @@ -640,7 +640,7 @@ public DatasetResponseSingle updateDataset(String datasetId, DatasetUpdateReques } /** - * Edit a dataset. + * Edit a Data Access Control dataset. * *

See {@link #updateDatasetWithHttpInfoAsync}. * @@ -706,7 +706,7 @@ public ApiResponse updateDatasetWithHttpInfo( Invocation.Builder builder = apiClient.createBuilder( - "v2.DatasetsApi.updateDataset", + "v2.DataAccessControlsApi.updateDataset", localVarPath, new ArrayList(), localVarHeaderParams, @@ -725,7 +725,7 @@ public ApiResponse updateDatasetWithHttpInfo( } /** - * Edit a dataset. + * Edit a Data Access Control dataset. * *

See {@link #updateDatasetWithHttpInfo}. * @@ -775,7 +775,7 @@ public CompletableFuture> updateDatasetWithHt try { builder = apiClient.createBuilder( - "v2.DatasetsApi.updateDataset", + "v2.DataAccessControlsApi.updateDataset", localVarPath, new ArrayList(), localVarHeaderParams, diff --git a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Bad_Request_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Bad_Request_response.freeze deleted file mode 100644 index 71929eb2a5f..00000000000 --- a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Bad_Request_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:57.144Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Bad_Request_response.json b/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Bad_Request_response.json deleted file mode 100644 index e9a5e9f3fb8..00000000000 --- a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Bad_Request_response.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"test\":\"bad_request\"}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"errors\":[\"Invalid request: Request body contains invalid json\"]}", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 400, - "reasonPhrase": "Bad Request" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "15dba2ce-708f-f0e1-2a5f-cc843f353d7d" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Conflict_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Conflict_response.freeze deleted file mode 100644 index f6e462458c6..00000000000 --- a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Conflict_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:57.324Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Conflict_response.json b/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Conflict_response.json deleted file mode 100644 index 75586923584..00000000000 --- a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_Conflict_response.json +++ /dev/null @@ -1,87 +0,0 @@ -[ - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:ABCD\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"7cbada94-7d01-4e73-8c74-ea70fb3b3088\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "32c558cf-4a2e-f914-f443-ab94000addcb" - }, - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:ABCD\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"errors\":[\"Invalid request: [DatasetNameConflict] dataset with name \\\"Security Audit Dataset\\\" already exists\"]}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 409, - "reasonPhrase": "Conflict" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "32c558cf-4a2e-f914-f443-ab94000addcc" - }, - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/7cbada94-7d01-4e73-8c74-ea70fb3b3088", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 204, - "reasonPhrase": "No Content" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "f569dd34-ba2b-185c-e332-0a771e7e15c2" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_OK_response.freeze deleted file mode 100644 index a11869c8f1a..00000000000 --- a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_OK_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:57.839Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_OK_response.json deleted file mode 100644 index fba8b2ccd41..00000000000 --- a/src/test/resources/cassettes/features/v2/Create_a_dataset_returns_OK_response.json +++ /dev/null @@ -1,57 +0,0 @@ -[ - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:ABCD\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"86f67664-8b7b-49ae-b671-919ebe11886c\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "32c558cf-4a2e-f914-f443-ab94000addcd" - }, - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/86f67664-8b7b-49ae-b671-919ebe11886c", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 204, - "reasonPhrase": "No Content" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "e15cf984-73c5-d05e-382b-a27da41631f3" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Bad_Request_response.freeze b/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Bad_Request_response.freeze deleted file mode 100644 index 5c83b1435b5..00000000000 --- a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Bad_Request_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:58.251Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Bad_Request_response.json b/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Bad_Request_response.json deleted file mode 100644 index 5413c786222..00000000000 --- a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Bad_Request_response.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/malformed_id", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"errors\":[\"Invalid request: [UUIDInvalidValue] \\\"malformed_id\\\" is not a valid UUID: invalid UUID length: 12\"]}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 400, - "reasonPhrase": "Bad Request" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "265bc0a6-583e-816b-e699-e28a0e8f4c87" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_No_Content_response.freeze b/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_No_Content_response.freeze deleted file mode 100644 index 3f1f084a921..00000000000 --- a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_No_Content_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:58.429Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_No_Content_response.json b/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_No_Content_response.json deleted file mode 100644 index 92c10c6b507..00000000000 --- a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_No_Content_response.json +++ /dev/null @@ -1,83 +0,0 @@ -[ - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:ABCD\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"60ee6562-48f5-455f-bdb4-fd3f5f899978\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "32c558cf-4a2e-f914-f443-ab94000addc9" - }, - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/60ee6562-48f5-455f-bdb4-fd3f5f899978", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 204, - "reasonPhrase": "No Content" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "e6d82f13-5ad3-4466-edde-778425f3614b" - }, - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/60ee6562-48f5-455f-bdb4-fd3f5f899978", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"errors\":[\"Invalid request: [DatasetNotFound] dataset \\\"60ee6562-48f5-455f-bdb4-fd3f5f899978\\\" not found\"]}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 404, - "reasonPhrase": "Not Found" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "e6d82f13-5ad3-4466-edde-778425f3614c" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Not_Found_response.freeze b/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Not_Found_response.freeze deleted file mode 100644 index a6e2fb84649..00000000000 --- a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Not_Found_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:58.996Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Not_Found_response.json b/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Not_Found_response.json deleted file mode 100644 index c66ade533fb..00000000000 --- a/src/test/resources/cassettes/features/v2/Delete_a_dataset_returns_Not_Found_response.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/00000000-0000-0000-0000-000000000000", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"errors\":[\"Invalid request: [DatasetNotFound] dataset \\\"00000000-0000-0000-0000-000000000000\\\" not found\"]}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 404, - "reasonPhrase": "Not Found" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "0a216acc-59a3-31cb-3f15-30656435998f" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_Bad_Request_response.freeze b/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_Bad_Request_response.freeze deleted file mode 100644 index cdc3a3a57aa..00000000000 --- a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_Bad_Request_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:59.180Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_Bad_Request_response.json b/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_Bad_Request_response.json deleted file mode 100644 index d5036b6c7dd..00000000000 --- a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_Bad_Request_response.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "httpRequest": { - "headers": {}, - "method": "PUT", - "path": "/api/v2/datasets/malformed_id", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"errors\":[\"Invalid request: Request body contains invalid json\"]}", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 400, - "reasonPhrase": "Bad Request" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "98c186af-6616-6aeb-0513-fa2b1140d02f" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_OK_response.freeze deleted file mode 100644 index 89c4ccef775..00000000000 --- a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_OK_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:35:59.399Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_OK_response.json deleted file mode 100644 index 12a959775bd..00000000000 --- a/src/test/resources/cassettes/features/v2/Edit_a_dataset_returns_OK_response.json +++ /dev/null @@ -1,87 +0,0 @@ -[ - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:ABCD\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"2bf848a1-b18a-4602-8348-814a53862c52\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "32c558cf-4a2e-f914-f443-ab94000addce" - }, - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:1234\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "PUT", - "path": "/api/v2/datasets/2bf848a1-b18a-4602-8348-814a53862c52", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"2bf848a1-b18a-4602-8348-814a53862c52\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:1234\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "3dd90d49-9042-50c7-d2c0-d10377768bbb" - }, - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/2bf848a1-b18a-4602-8348-814a53862c52", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 204, - "reasonPhrase": "No Content" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "20213939-3ba1-8fe0-e52d-054b00f716c1" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_Bad_Request_response.freeze b/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_Bad_Request_response.freeze deleted file mode 100644 index f1b51544443..00000000000 --- a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_Bad_Request_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:36:00.009Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_Bad_Request_response.json b/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_Bad_Request_response.json deleted file mode 100644 index 8e816878395..00000000000 --- a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_Bad_Request_response.json +++ /dev/null @@ -1,28 +0,0 @@ -[ - { - "httpRequest": { - "headers": {}, - "method": "GET", - "path": "/api/v2/datasets/malformed_id", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"errors\":[\"Invalid request: [UUIDInvalidValue] \\\"malformed_id\\\" is not a valid UUID: invalid UUID length: 12\"]}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 400, - "reasonPhrase": "Bad Request" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "2bf51849-cca5-524a-24b4-d999943d9ea9" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_OK_response.freeze deleted file mode 100644 index e339d721db2..00000000000 --- a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_OK_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:36:00.186Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_OK_response.json deleted file mode 100644 index 59a863c261f..00000000000 --- a/src/test/resources/cassettes/features/v2/Get_a_single_dataset_by_ID_returns_OK_response.json +++ /dev/null @@ -1,83 +0,0 @@ -[ - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:ABCD\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"9e576299-3cc1-4145-8aad-67a1ab914829\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "32c558cf-4a2e-f914-f443-ab94000addcf" - }, - { - "httpRequest": { - "headers": {}, - "method": "GET", - "path": "/api/v2/datasets/9e576299-3cc1-4145-8aad-67a1ab914829", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"9e576299-3cc1-4145-8aad-67a1ab914829\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "5f6432cf-6e61-c956-e2a5-7822c9c7a3ac" - }, - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/9e576299-3cc1-4145-8aad-67a1ab914829", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 204, - "reasonPhrase": "No Content" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "347efd06-18b8-98bd-c9c7-745a1d2f53cf" - } -] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_all_datasets_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_all_datasets_returns_OK_response.freeze deleted file mode 100644 index 7db64cb6bc1..00000000000 --- a/src/test/resources/cassettes/features/v2/Get_all_datasets_returns_OK_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-07-29T20:36:00.713Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_all_datasets_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_all_datasets_returns_OK_response.json deleted file mode 100644 index f6443799769..00000000000 --- a/src/test/resources/cassettes/features/v2/Get_all_datasets_returns_OK_response.json +++ /dev/null @@ -1,83 +0,0 @@ -[ - { - "httpRequest": { - "body": { - "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"name\":\"Security Audit Dataset\",\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"product_filters\":[{\"filters\":[\"@application.id:ABCD\"],\"product\":\"metrics\"}]},\"type\":\"dataset\"}}" - }, - "headers": {}, - "method": "POST", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":{\"type\":\"dataset\",\"id\":\"b0f617b4-affb-4411-970a-2c157933514c\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"]}}}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "32c558cf-4a2e-f914-f443-ab94000addca" - }, - { - "httpRequest": { - "headers": {}, - "method": "GET", - "path": "/api/v2/datasets", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "body": "{\"data\":[{\"type\":\"dataset\",\"id\":\"b0f617b4-affb-4411-970a-2c157933514c\",\"attributes\":{\"name\":\"Security Audit Dataset\",\"product_filters\":[{\"product\":\"metrics\",\"filters\":[\"@application.id:ABCD\"]}],\"principals\":[\"role:94172442-be03-11e9-a77a-3b7612558ac1\"],\"created_by\":\"3ad549bf-eba0-11e9-a77a-0705486660d0\",\"created_at\":\"2025-07-29T20:36:00.94442Z\"}}]}\n", - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 200, - "reasonPhrase": "OK" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "c38493f7-b33f-3354-897c-e07393c8ebdf" - }, - { - "httpRequest": { - "headers": {}, - "method": "DELETE", - "path": "/api/v2/datasets/b0f617b4-affb-4411-970a-2c157933514c", - "keepAlive": false, - "secure": true - }, - "httpResponse": { - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "statusCode": 204, - "reasonPhrase": "No Content" - }, - "times": { - "remainingTimes": 1 - }, - "timeToLive": { - "unlimited": true - }, - "id": "c45d6552-7feb-2f60-bba6-55c4c2d537ff" - } -] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v2/api/data_access_controls.feature b/src/test/resources/com/datadog/api/client/v2/api/data_access_controls.feature new file mode 100644 index 00000000000..26fa4a44a19 --- /dev/null +++ b/src/test/resources/com/datadog/api/client/v2/api/data_access_controls.feature @@ -0,0 +1,120 @@ +@endpoint(data-access-controls) @endpoint(data-access-controls-v2) +Feature: Data Access Controls + Manage [Data Access + Controls](https://docs.datadoghq.com/account_management/rbac/data_access/) + programmatically using Datasets. Data Access Controls in Datadog allows + administrators and access managers to regulate access to sensitive data. + By defining Restricted Datasets, you can ensure that only specific teams + or roles can view certain types of telemetry (for example, logs, traces, + metrics, and RUM data). + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "DataAccessControls" API + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Create a Data Access Control dataset returns "Bad Request" response + Given operation "CreateDataset" enabled + And new "CreateDataset" request + And body with value {"data": {"attributes": {"name": "Security Audit Dataset", "principals": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], "product_filters": [{"filters": ["@application.id:ABCD"], "product": "logs"}]}, "type": "dataset"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Create a Data Access Control dataset returns "Conflict" response + Given operation "CreateDataset" enabled + And new "CreateDataset" request + And body with value {"data": {"attributes": {"name": "Security Audit Dataset", "principals": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], "product_filters": [{"filters": ["@application.id:ABCD"], "product": "logs"}]}, "type": "dataset"}} + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Create a Data Access Control dataset returns "OK" response + Given operation "CreateDataset" enabled + And new "CreateDataset" request + And body with value {"data": {"attributes": {"name": "Security Audit Dataset", "principals": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], "product_filters": [{"filters": ["@application.id:ABCD"], "product": "logs"}]}, "type": "dataset"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Delete a Data Access Control dataset returns "Bad Request" response + Given operation "DeleteDataset" enabled + And new "DeleteDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Delete a Data Access Control dataset returns "No Content" response + Given operation "DeleteDataset" enabled + And new "DeleteDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Delete a Data Access Control dataset returns "Not Found" response + Given operation "DeleteDataset" enabled + And new "DeleteDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Edit a Data Access Control dataset returns "Bad Request" response + Given operation "UpdateDataset" enabled + And new "UpdateDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "Security Audit Dataset", "principals": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], "product_filters": [{"filters": ["@application.id:ABCD"], "product": "logs"}]}, "type": "dataset"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Edit a Data Access Control dataset returns "Not Found" response + Given operation "UpdateDataset" enabled + And new "UpdateDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "Security Audit Dataset", "principals": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], "product_filters": [{"filters": ["@application.id:ABCD"], "product": "logs"}]}, "type": "dataset"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Edit a Data Access Control dataset returns "OK" response + Given operation "UpdateDataset" enabled + And new "UpdateDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"name": "Security Audit Dataset", "principals": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], "product_filters": [{"filters": ["@application.id:ABCD"], "product": "logs"}]}, "type": "dataset"}} + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Get a Data Access Control dataset by ID returns "Bad Request" response + Given operation "GetDataset" enabled + And new "GetDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Get a Data Access Control dataset by ID returns "Not Found" response + Given operation "GetDataset" enabled + And new "GetDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Get a Data Access Control dataset by ID returns "OK" response + Given operation "GetDataset" enabled + And new "GetDataset" request + And request contains "dataset_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/aaa-granular-access + Scenario: Get all Data Access Control datasets returns "OK" response + Given operation "GetAllDatasets" enabled + And new "GetAllDatasets" request + When the request is sent + Then the response status is 200 OK diff --git a/src/test/resources/com/datadog/api/client/v2/api/datasets.feature b/src/test/resources/com/datadog/api/client/v2/api/datasets.feature index 2e089dd0181..7ec5e37962b 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/datasets.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/datasets.feature @@ -1,18 +1,20 @@ -@endpoint(datasets) @endpoint(datasets-v2) -Feature: Datasets - Data Access Controls in Datadog is a feature that allows administrators - and access managers to regulate access to sensitive data. By defining - Restricted Datasets, you can ensure that only specific teams or roles can - view certain types of telemetry (for example, logs, traces, metrics, and - RUM data). +@endpoint(data-access-controls) @endpoint(data-access-controls-v2) +Feature: Data Access Controls + Manage [Data Access + Controls](https://docs.datadoghq.com/account_management/rbac/data_access/) + programmatically using Datasets. Data Access Controls in Datadog allows + administrators and access managers to regulate access to sensitive data. + By defining Restricted Datasets, you can ensure that only specific teams + or roles can view certain types of telemetry (for example, logs, traces, + metrics, and RUM data). Background: Given a valid "apiKeyAuth" key in the system And a valid "appKeyAuth" key in the system - And an instance of "Datasets" API + And an instance of "DataAccessControls" API @skip-go @skip-java @skip-python @skip-ruby @skip-rust @skip-terraform-config @skip-typescript @skip-validation @team:DataDog/aaa-granular-access - Scenario: Create a dataset returns "Bad Request" response + Scenario: Create a Data Access Control dataset returns "Bad Request" response Given new "CreateDataset" request And operation "CreateDataset" enabled And body with value {"test": "bad_request"} @@ -20,7 +22,7 @@ Feature: Datasets Then the response status is 400 Bad Request @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Create a dataset returns "Conflict" response + Scenario: Create a Data Access Control dataset returns "Conflict" response Given there is a valid "dataset" in the system And operation "CreateDataset" enabled And new "CreateDataset" request @@ -29,7 +31,7 @@ Feature: Datasets Then the response status is 409 Conflict @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Create a dataset returns "OK" response + Scenario: Create a Data Access Control dataset returns "OK" response Given new "CreateDataset" request And operation "CreateDataset" enabled And body with value {"data": {"attributes": {"name": "Security Audit Dataset", "principals": ["role:94172442-be03-11e9-a77a-3b7612558ac1"], "product_filters": [{"filters": ["@application.id:ABCD"], "product": "metrics"}]}, "type": "dataset"}} @@ -37,7 +39,7 @@ Feature: Datasets Then the response status is 200 OK @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Delete a dataset returns "Bad Request" response + Scenario: Delete a Data Access Control dataset returns "Bad Request" response Given new "DeleteDataset" request And operation "DeleteDataset" enabled And request contains "dataset_id" parameter with value "malformed_id" @@ -45,7 +47,7 @@ Feature: Datasets Then the response status is 400 Bad Request @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Delete a dataset returns "No Content" response + Scenario: Delete a Data Access Control dataset returns "No Content" response Given there is a valid "dataset" in the system And operation "DeleteDataset" enabled And new "DeleteDataset" request @@ -54,7 +56,7 @@ Feature: Datasets Then the response status is 204 No Content @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Delete a dataset returns "Not Found" response + Scenario: Delete a Data Access Control dataset returns "Not Found" response Given new "DeleteDataset" request And operation "DeleteDataset" enabled And request contains "dataset_id" parameter with value "00000000-0000-0000-0000-000000000000" @@ -62,7 +64,7 @@ Feature: Datasets Then the response status is 404 Not Found @skip-go @skip-java @skip-python @skip-ruby @skip-rust @skip-terraform-config @skip-typescript @skip-validation @team:DataDog/aaa-granular-access - Scenario: Edit a dataset returns "Bad Request" response + Scenario: Edit a Data Access Control dataset returns "Bad Request" response Given new "UpdateDataset" request And operation "UpdateDataset" enabled And request contains "dataset_id" parameter with value "malformed_id" @@ -70,7 +72,7 @@ Feature: Datasets Then the response status is 400 Bad Request @skip @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Edit a dataset returns "Not Found" response + Scenario: Edit a Data Access Control dataset returns "Not Found" response Given there is a valid "dataset" in the system And operation "UpdateDataset" enabled And new "UpdateDataset" request @@ -80,7 +82,7 @@ Feature: Datasets Then the response status is 404 Not Found @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Edit a dataset returns "OK" response + Scenario: Edit a Data Access Control dataset returns "OK" response Given there is a valid "dataset" in the system And operation "UpdateDataset" enabled And new "UpdateDataset" request @@ -90,7 +92,7 @@ Feature: Datasets Then the response status is 200 OK @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Get a single dataset by ID returns "Bad Request" response + Scenario: Get a Data Access Control dataset by ID returns "Bad Request" response Given new "GetDataset" request And operation "GetDataset" enabled And request contains "dataset_id" parameter with value "malformed_id" @@ -98,7 +100,7 @@ Feature: Datasets Then the response status is 400 Bad Request @skip @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Get a single dataset by ID returns "Not Found" response + Scenario: Get a Data Access Control dataset by ID returns "Not Found" response Given operation "GetDataset" enabled And new "GetDataset" request And request contains "dataset_id" parameter with value "00000000-0000-0000-0000-000000000000" @@ -106,7 +108,7 @@ Feature: Datasets Then the response status is 404 Not Found @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Get a single dataset by ID returns "OK" response + Scenario: Get a Data Access Control dataset by ID returns "OK" response Given there is a valid "dataset" in the system And operation "GetDataset" enabled And new "GetDataset" request @@ -115,7 +117,7 @@ Feature: Datasets Then the response status is 200 OK @skip-terraform-config @team:DataDog/aaa-granular-access - Scenario: Get all datasets returns "OK" response + Scenario: Get all Data Access Control datasets returns "OK" response Given there is a valid "dataset" in the system And operation "GetAllDatasets" enabled And new "GetAllDatasets" request diff --git a/src/test/resources/com/datadog/api/client/v2/api/given.json b/src/test/resources/com/datadog/api/client/v2/api/given.json index 2fee80e2ff9..b8703a40f7d 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/given.json +++ b/src/test/resources/com/datadog/api/client/v2/api/given.json @@ -357,7 +357,7 @@ ], "step": "there is a valid \"dataset\" in the system", "key": "dataset", - "tag": "Datasets", + "tag": "Data Access Controls", "operationId": "CreateDataset" }, { diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json index 210d3239998..78ab1797a86 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/undo.json +++ b/src/test/resources/com/datadog/api/client/v2/api/undo.json @@ -1471,13 +1471,13 @@ } }, "GetAllDatasets": { - "tag": "Datasets", + "tag": "Data Access Controls", "undo": { "type": "safe" } }, "CreateDataset": { - "tag": "Datasets", + "tag": "Data Access Controls", "undo": { "operationId": "DeleteDataset", "parameters": [ @@ -1490,19 +1490,19 @@ } }, "DeleteDataset": { - "tag": "Datasets", + "tag": "Data Access Controls", "undo": { "type": "idempotent" } }, "GetDataset": { - "tag": "Datasets", + "tag": "Data Access Controls", "undo": { "type": "safe" } }, "UpdateDataset": { - "tag": "Datasets", + "tag": "Data Access Controls", "undo": { "type": "idempotent" }