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"
}