diff --git a/.apigentools-info b/.apigentools-info index 9bed47d6742..1caf2340ccd 100644 --- a/.apigentools-info +++ b/.apigentools-info @@ -4,13 +4,13 @@ "spec_versions": { "v1": { "apigentools_version": "1.6.6", - "regenerated": "2024-02-14 10:50:02.144778", - "spec_repo_commit": "9348385b" + "regenerated": "2024-02-20 12:21:56.548581", + "spec_repo_commit": "7e467650" }, "v2": { "apigentools_version": "1.6.6", - "regenerated": "2024-02-14 10:50:02.160000", - "spec_repo_commit": "9348385b" + "regenerated": "2024-02-20 12:21:56.563229", + "spec_repo_commit": "7e467650" } } } \ No newline at end of file diff --git a/.generator/schemas/v1/openapi.yaml b/.generator/schemas/v1/openapi.yaml index 99631ba18dc..89e57a83cb6 100644 --- a/.generator/schemas/v1/openapi.yaml +++ b/.generator/schemas/v1/openapi.yaml @@ -3207,6 +3207,18 @@ components: key.' example: https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL type: string + cloud_run_revision_filters: + description: 'Limit the Cloud Run revisions that are pulled into Datadog + by using tags. + + Only Cloud Run revision resources that apply to specified filters are + imported into Datadog.' + example: + - $KEY:$VALUE + items: + description: Cloud Run Filters + type: string + type: array errors: description: An array of errors. example: @@ -13213,10 +13225,12 @@ components: only supporting `http`. enum: - http + - grpc example: http type: string x-enum-varnames: - HTTP + - GRPC SyntheticsAPITest: description: Object containing details about a Synthetic API test. properties: diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 3a7820429e6..5d118d9175c 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -2039,7 +2039,8 @@ components: type: number type: object CIAppAggregateSort: - description: A sort rule. + description: A sort rule. The `aggregation` field is required when `type` is + `measure`. example: aggregation: count order: asc @@ -7388,6 +7389,18 @@ components: description: Your service account email address. example: datadog-service-account@test-project.iam.gserviceaccount.com type: string + cloud_run_revision_filters: + description: 'List of filters to limit the Cloud Run revisions that are + pulled into Datadog by using tags. + + Only Cloud Run revision resources that apply to specified filters are + imported into Datadog.' + example: + - $KEY:$VALUE + items: + description: Cloud Run Filters + type: string + type: array host_filters: description: Your Host Filters. items: @@ -24052,7 +24065,7 @@ paths: /api/v2/cost_by_tag/active_billing_dimensions: get: description: Get active billing dimensions for cost attribution. Cost data for - a given month becomes available no later than the 17th of the following month. + a given month becomes available no later than the 19th of the following month. operationId: GetActiveBillingDimensions responses: '200': @@ -24094,7 +24107,7 @@ paths: get: description: "Get monthly cost attribution by tag across multi-org and single root-org accounts.\nCost Attribution data for a given month becomes available - no later than the 17th of the following month.\nThis API endpoint is paginated. + no later than the 19th of the following month.\nThis API endpoint is paginated. To make sure you receive all records, check if the value of `next_record_id` is\nset in the response. If it is, make another request and pass `next_record_id` as a parameter.\nPseudo code example:\n```\nresponse := GetMonthlyCostAttribution(start_month, diff --git a/examples/v1/gcp-integration/CreateGCPIntegration.java b/examples/v1/gcp-integration/CreateGCPIntegration.java index 146c3df0d20..26a4b937896 100644 --- a/examples/v1/gcp-integration/CreateGCPIntegration.java +++ b/examples/v1/gcp-integration/CreateGCPIntegration.java @@ -4,6 +4,7 @@ import com.datadog.api.client.ApiException; import com.datadog.api.client.v1.api.GcpIntegrationApi; import com.datadog.api.client.v1.model.GCPAccount; +import java.util.Collections; public class Example { public static void main(String[] args) { @@ -18,6 +19,7 @@ public static void main(String[] args) { .clientId("163662907116366290710") .clientX509CertUrl("https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL") .hostFilters("key:value,filter:example") + .cloudRunRevisionFilters(Collections.singletonList("dr:dre")) .isCspmEnabled(true) .isSecurityCommandCenterEnabled(true) .privateKey("private_key") diff --git a/examples/v1/gcp-integration/UpdateGCPIntegration_3544259255.java b/examples/v1/gcp-integration/UpdateGCPIntegration_3544259255.java new file mode 100644 index 00000000000..6d5f8a6692f --- /dev/null +++ b/examples/v1/gcp-integration/UpdateGCPIntegration_3544259255.java @@ -0,0 +1,42 @@ +// Update a GCP integration cloud run revision filters returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v1.api.GcpIntegrationApi; +import com.datadog.api.client.v1.model.GCPAccount; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + GcpIntegrationApi apiInstance = new GcpIntegrationApi(defaultClient); + + GCPAccount body = + new GCPAccount() + .authProviderX509CertUrl("https://www.googleapis.com/oauth2/v1/certs") + .authUri("https://accounts.google.com/o/oauth2/auth") + .clientEmail("252bf553ef04b351@example.com") + .clientId("163662907116366290710") + .clientX509CertUrl("https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL") + .hostFilters("key:value,filter:example") + .cloudRunRevisionFilters(Collections.singletonList("merp:derp")) + .isCspmEnabled(true) + .isSecurityCommandCenterEnabled(true) + .privateKey("private_key") + .privateKeyId("123456789abcdefghi123456789abcdefghijklm") + .projectId("datadog-apitest") + .resourceCollectionEnabled(true) + .tokenUri("https://accounts.google.com/o/oauth2/token") + .type("service_account"); + + try { + apiInstance.updateGCPIntegration(body); + } catch (ApiException e) { + System.err.println("Exception when calling GcpIntegrationApi#updateGCPIntegration"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v1/synthetics/CreateSyntheticsAPITest_1279271422.java b/examples/v1/synthetics/CreateSyntheticsAPITest_1279271422.java index e7ecf9ed6ee..fc1ada47045 100644 --- a/examples/v1/synthetics/CreateSyntheticsAPITest_1279271422.java +++ b/examples/v1/synthetics/CreateSyntheticsAPITest_1279271422.java @@ -17,12 +17,15 @@ import com.datadog.api.client.v1.model.SyntheticsGlobalVariableParseTestOptionsType; import com.datadog.api.client.v1.model.SyntheticsGlobalVariableParserType; import com.datadog.api.client.v1.model.SyntheticsParsingOptions; +import com.datadog.api.client.v1.model.SyntheticsTestCallType; import com.datadog.api.client.v1.model.SyntheticsTestDetailsSubType; import com.datadog.api.client.v1.model.SyntheticsTestOptions; import com.datadog.api.client.v1.model.SyntheticsTestOptionsRetry; import com.datadog.api.client.v1.model.SyntheticsTestRequest; import com.datadog.api.client.v1.model.SyntheticsVariableParser; +import java.util.Arrays; import java.util.Collections; +import java.util.Map; public class Example { public static void main(String[] args) { @@ -41,7 +44,7 @@ public static void main(String[] args) { .pattern("content-type") .type(SyntheticsConfigVariableType.TEXT))) .steps( - Collections.singletonList( + Arrays.asList( new SyntheticsAPIStep() .allowFailure(true) .assertions( @@ -71,7 +74,31 @@ public static void main(String[] args) { .timeout(10.0) .url("https://datadoghq.com")) .retry(new SyntheticsTestOptionsRetry().count(5L).interval(1000.0)) - .subtype(SyntheticsAPIStepSubtype.HTTP)))) + .subtype(SyntheticsAPIStepSubtype.HTTP), + new SyntheticsAPIStep() + .name("GRPC CALL") + .subtype(SyntheticsAPIStepSubtype.GRPC) + .allowFailure(false) + .isCritical(true) + .retry(new SyntheticsTestOptionsRetry().count(0L).interval(300.0)) + .assertions( + Collections.singletonList( + new SyntheticsAssertion( + new SyntheticsAssertionTarget() + .operator(SyntheticsAssertionOperator.LESS_THAN) + .type(SyntheticsAssertionType.RESPONSE_TIME) + .target(1000)))) + .request( + new SyntheticsTestRequest() + .host("grpcbin.test.k6.io") + .port(9000L) + .service("grpcbin.GRPCBin") + .method("Index") + .message("{}") + .compressedJsonDescriptor( + "eJy1lU1z2yAQhv+Lzj74I3ETH506bQ7OZOSm1w4Wa4epBARQppqM/3v5koCJJdvtxCdW77vPssCO3zMKUgHOFu/ZXvBiS6hZho/f8qe7pftYgXphWJrlA8XwxywEvNba+6PhkC2yVcVVswYp0R6ykRYlZ1SCV21SDrxsssPIeS9FJKqGfK2rqnmmSBwhWa2XlKgtaQPiDcRGCUDVfwGD2sKUqKEtc1cSoOrsMlaMOec1sySYCCgUYRSVLv2zSva2u+FQkB0pVkIw8bFuIudOOn3pOaKYVT3Iy97Pd0AYhOx5QcMsnxvRHlnuLf8ETDd3CNtrv2nejkDpRnANCmGkkFn/hsYzpBKE7jVbufgnKnV9HRM9zRPDDKPttYT61n0TdWkAAjggk9AhuxIeaXd69CYTcsGw7cBTakLVbNpRzGEgyWjkSOpMbZXkhGL6oX30R49qt3GoHrap7i0XdD41WQ+2icCNm5p1hmFqnHNlcla0riKmDZ183crDxChjbnurtxHPRE784sVhWvDfGP+SsTKibU3o5NtWHuZFGZOxP6P5VXqIOvaOSec4eYohyd7NslHuJbd1bewds85xYrNxkr2d+5IhFWF3NvaO684xjE2S5ulY+tu64Pna0fCPJgzw6vF5/WucLcYjt5xoq19O3UDptOg/OamJQRaCcPPnMTQ2QDFn+uhPvUfnCrMc99upyQY4Ui9Dlc/YoG3R/v4Cs9YE+g==") + .metadata(Map.ofEntries()) + .callType(SyntheticsTestCallType.UNARY))))) .locations(Collections.singletonList("aws:us-east-2")) .message("BDD test payload: synthetics_api_test_multi_step_payload.json") .name("Example-Synthetic") diff --git a/examples/v2/gcp-integration/CreateGCPSTSAccount_194782945.java b/examples/v2/gcp-integration/CreateGCPSTSAccount_194782945.java new file mode 100644 index 00000000000..e24a22f1a32 --- /dev/null +++ b/examples/v2/gcp-integration/CreateGCPSTSAccount_194782945.java @@ -0,0 +1,40 @@ +// Create a new entry for your service account with cloud run revision filters enabled returns "OK" +// response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.GcpIntegrationApi; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountAttributes; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountCreateRequest; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountData; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountResponse; +import com.datadog.api.client.v2.model.GCPServiceAccountType; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + GcpIntegrationApi apiInstance = new GcpIntegrationApi(defaultClient); + + GCPSTSServiceAccountCreateRequest body = + new GCPSTSServiceAccountCreateRequest() + .data( + new GCPSTSServiceAccountData() + .attributes( + new GCPSTSServiceAccountAttributes() + .cloudRunRevisionFilters(Collections.singletonList("meh:bleh")) + .clientEmail("252bf553ef04b351@test-project.iam.gserviceaccount.com")) + .type(GCPServiceAccountType.GCP_SERVICE_ACCOUNT)); + + try { + GCPSTSServiceAccountResponse result = apiInstance.createGCPSTSAccount(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling GcpIntegrationApi#createGCPSTSAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/gcp-integration/UpdateGCPSTSAccount_2241994060.java b/examples/v2/gcp-integration/UpdateGCPSTSAccount_2241994060.java new file mode 100644 index 00000000000..30cb985f3d7 --- /dev/null +++ b/examples/v2/gcp-integration/UpdateGCPSTSAccount_2241994060.java @@ -0,0 +1,44 @@ +// Update STS Service Account returns "OK" response with cloud run revision filters + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.GcpIntegrationApi; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountAttributes; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountResponse; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountUpdateRequest; +import com.datadog.api.client.v2.model.GCPSTSServiceAccountUpdateRequestData; +import com.datadog.api.client.v2.model.GCPServiceAccountType; +import java.util.Collections; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + GcpIntegrationApi apiInstance = new GcpIntegrationApi(defaultClient); + + // there is a valid "gcp_sts_account" in the system + String GCP_STS_ACCOUNT_DATA_ID = System.getenv("GCP_STS_ACCOUNT_DATA_ID"); + + GCPSTSServiceAccountUpdateRequest body = + new GCPSTSServiceAccountUpdateRequest() + .data( + new GCPSTSServiceAccountUpdateRequestData() + .attributes( + new GCPSTSServiceAccountAttributes() + .clientEmail("252bf553ef04b351@example.com") + .cloudRunRevisionFilters(Collections.singletonList("merp:derp"))) + .id(GCP_STS_ACCOUNT_DATA_ID) + .type(GCPServiceAccountType.GCP_SERVICE_ACCOUNT)); + + try { + GCPSTSServiceAccountResponse result = + apiInstance.updateGCPSTSAccount(GCP_STS_ACCOUNT_DATA_ID, body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling GcpIntegrationApi#updateGCPSTSAccount"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/pom.xml b/pom.xml index e7975798b04..e3d93391dd1 100644 --- a/pom.xml +++ b/pom.xml @@ -323,6 +323,9 @@ META-INF/*.MF META-INF/LICENSE* META-INF/NOTICE* + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA diff --git a/src/main/java/com/datadog/api/client/v1/model/GCPAccount.java b/src/main/java/com/datadog/api/client/v1/model/GCPAccount.java index f4078c1da75..1cb80398c58 100644 --- a/src/main/java/com/datadog/api/client/v1/model/GCPAccount.java +++ b/src/main/java/com/datadog/api/client/v1/model/GCPAccount.java @@ -26,6 +26,7 @@ GCPAccount.JSON_PROPERTY_CLIENT_EMAIL, GCPAccount.JSON_PROPERTY_CLIENT_ID, GCPAccount.JSON_PROPERTY_CLIENT_X509_CERT_URL, + GCPAccount.JSON_PROPERTY_CLOUD_RUN_REVISION_FILTERS, GCPAccount.JSON_PROPERTY_ERRORS, GCPAccount.JSON_PROPERTY_HOST_FILTERS, GCPAccount.JSON_PROPERTY_IS_CSPM_ENABLED, @@ -60,6 +61,10 @@ public class GCPAccount { public static final String JSON_PROPERTY_CLIENT_X509_CERT_URL = "client_x509_cert_url"; private String clientX509CertUrl; + public static final String JSON_PROPERTY_CLOUD_RUN_REVISION_FILTERS = + "cloud_run_revision_filters"; + private List cloudRunRevisionFilters = null; + public static final String JSON_PROPERTY_ERRORS = "errors"; private List errors = null; @@ -219,6 +224,36 @@ public void setClientX509CertUrl(String clientX509CertUrl) { this.clientX509CertUrl = clientX509CertUrl; } + public GCPAccount cloudRunRevisionFilters(List cloudRunRevisionFilters) { + this.cloudRunRevisionFilters = cloudRunRevisionFilters; + return this; + } + + public GCPAccount addCloudRunRevisionFiltersItem(String cloudRunRevisionFiltersItem) { + if (this.cloudRunRevisionFilters == null) { + this.cloudRunRevisionFilters = new ArrayList<>(); + } + this.cloudRunRevisionFilters.add(cloudRunRevisionFiltersItem); + return this; + } + + /** + * Limit the Cloud Run revisions that are pulled into Datadog by using tags. Only Cloud Run + * revision resources that apply to specified filters are imported into Datadog. + * + * @return cloudRunRevisionFilters + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CLOUD_RUN_REVISION_FILTERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getCloudRunRevisionFilters() { + return cloudRunRevisionFilters; + } + + public void setCloudRunRevisionFilters(List cloudRunRevisionFilters) { + this.cloudRunRevisionFilters = cloudRunRevisionFilters; + } + public GCPAccount errors(List errors) { this.errors = errors; return this; @@ -502,6 +537,7 @@ public boolean equals(Object o) { && Objects.equals(this.clientEmail, gcpAccount.clientEmail) && Objects.equals(this.clientId, gcpAccount.clientId) && Objects.equals(this.clientX509CertUrl, gcpAccount.clientX509CertUrl) + && Objects.equals(this.cloudRunRevisionFilters, gcpAccount.cloudRunRevisionFilters) && Objects.equals(this.errors, gcpAccount.errors) && Objects.equals(this.hostFilters, gcpAccount.hostFilters) && Objects.equals(this.isCspmEnabled, gcpAccount.isCspmEnabled) @@ -525,6 +561,7 @@ public int hashCode() { clientEmail, clientId, clientX509CertUrl, + cloudRunRevisionFilters, errors, hostFilters, isCspmEnabled, @@ -550,6 +587,9 @@ public String toString() { sb.append(" clientEmail: ").append(toIndentedString(clientEmail)).append("\n"); sb.append(" clientId: ").append(toIndentedString(clientId)).append("\n"); sb.append(" clientX509CertUrl: ").append(toIndentedString(clientX509CertUrl)).append("\n"); + sb.append(" cloudRunRevisionFilters: ") + .append(toIndentedString(cloudRunRevisionFilters)) + .append("\n"); sb.append(" errors: ").append(toIndentedString(errors)).append("\n"); sb.append(" hostFilters: ").append(toIndentedString(hostFilters)).append("\n"); sb.append(" isCspmEnabled: ").append(toIndentedString(isCspmEnabled)).append("\n"); diff --git a/src/main/java/com/datadog/api/client/v1/model/SyntheticsAPIStepSubtype.java b/src/main/java/com/datadog/api/client/v1/model/SyntheticsAPIStepSubtype.java index c549e7f9c91..dff317ca5d3 100644 --- a/src/main/java/com/datadog/api/client/v1/model/SyntheticsAPIStepSubtype.java +++ b/src/main/java/com/datadog/api/client/v1/model/SyntheticsAPIStepSubtype.java @@ -25,9 +25,11 @@ @JsonSerialize(using = SyntheticsAPIStepSubtype.SyntheticsAPIStepSubtypeSerializer.class) public class SyntheticsAPIStepSubtype extends ModelEnum { - private static final Set allowedValues = new HashSet(Arrays.asList("http")); + private static final Set allowedValues = + new HashSet(Arrays.asList("http", "grpc")); public static final SyntheticsAPIStepSubtype HTTP = new SyntheticsAPIStepSubtype("http"); + public static final SyntheticsAPIStepSubtype GRPC = new SyntheticsAPIStepSubtype("grpc"); SyntheticsAPIStepSubtype(String value) { super(value, allowedValues); diff --git a/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java b/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java index a9130f1a0f1..41bfe7c350a 100644 --- a/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java @@ -82,7 +82,7 @@ public CompletableFuture getActiveBillingDimens /** * Get active billing dimensions for cost attribution. Cost data for a given month becomes - * available no later than the 17th of the following month. + * available no later than the 19th of the following month. * * @return ApiResponse<ActiveBillingDimensionsResponse> * @throws ApiException if fails to make API call @@ -1503,7 +1503,7 @@ public CompletableFuture getMonthlyCostAttributi /** * Get monthly cost attribution by tag across multi-org and single root-org accounts. Cost - * Attribution data for a given month becomes available no later than the 17th of the following + * Attribution data for a given month becomes available no later than the 19th of the following * month. This API endpoint is paginated. To make sure you receive all records, check if the value * of next_record_id is set in the response. If it is, make another request and pass * next_record_id as a parameter. Pseudo code example: diff --git a/src/main/java/com/datadog/api/client/v2/model/CIAppAggregateSort.java b/src/main/java/com/datadog/api/client/v2/model/CIAppAggregateSort.java index 8a35e01ac16..b7e677cf97c 100644 --- a/src/main/java/com/datadog/api/client/v2/model/CIAppAggregateSort.java +++ b/src/main/java/com/datadog/api/client/v2/model/CIAppAggregateSort.java @@ -16,7 +16,10 @@ import java.util.Map; import java.util.Objects; -/** A sort rule. */ +/** + * A sort rule. The aggregation field is required when type is + * measure. + */ @JsonPropertyOrder({ CIAppAggregateSort.JSON_PROPERTY_AGGREGATION, CIAppAggregateSort.JSON_PROPERTY_METRIC, diff --git a/src/main/java/com/datadog/api/client/v2/model/CIAppPipelinesGroupBy.java b/src/main/java/com/datadog/api/client/v2/model/CIAppPipelinesGroupBy.java index abe176b9f46..6062c2b4670 100644 --- a/src/main/java/com/datadog/api/client/v2/model/CIAppPipelinesGroupBy.java +++ b/src/main/java/com/datadog/api/client/v2/model/CIAppPipelinesGroupBy.java @@ -149,7 +149,8 @@ public CIAppPipelinesGroupBy sort(CIAppAggregateSort sort) { } /** - * A sort rule. + * A sort rule. The aggregation field is required when type is + * measure. * * @return sort */ diff --git a/src/main/java/com/datadog/api/client/v2/model/CIAppTestsGroupBy.java b/src/main/java/com/datadog/api/client/v2/model/CIAppTestsGroupBy.java index f23809dfe26..02eb647b69e 100644 --- a/src/main/java/com/datadog/api/client/v2/model/CIAppTestsGroupBy.java +++ b/src/main/java/com/datadog/api/client/v2/model/CIAppTestsGroupBy.java @@ -149,7 +149,8 @@ public CIAppTestsGroupBy sort(CIAppAggregateSort sort) { } /** - * A sort rule. + * A sort rule. The aggregation field is required when type is + * measure. * * @return sort */ diff --git a/src/main/java/com/datadog/api/client/v2/model/GCPSTSServiceAccountAttributes.java b/src/main/java/com/datadog/api/client/v2/model/GCPSTSServiceAccountAttributes.java index 94007627534..894b5ac7926 100644 --- a/src/main/java/com/datadog/api/client/v2/model/GCPSTSServiceAccountAttributes.java +++ b/src/main/java/com/datadog/api/client/v2/model/GCPSTSServiceAccountAttributes.java @@ -23,6 +23,7 @@ GCPSTSServiceAccountAttributes.JSON_PROPERTY_ACCOUNT_TAGS, GCPSTSServiceAccountAttributes.JSON_PROPERTY_AUTOMUTE, GCPSTSServiceAccountAttributes.JSON_PROPERTY_CLIENT_EMAIL, + GCPSTSServiceAccountAttributes.JSON_PROPERTY_CLOUD_RUN_REVISION_FILTERS, GCPSTSServiceAccountAttributes.JSON_PROPERTY_HOST_FILTERS, GCPSTSServiceAccountAttributes.JSON_PROPERTY_IS_CSPM_ENABLED, GCPSTSServiceAccountAttributes.JSON_PROPERTY_IS_SECURITY_COMMAND_CENTER_ENABLED, @@ -41,6 +42,10 @@ public class GCPSTSServiceAccountAttributes { public static final String JSON_PROPERTY_CLIENT_EMAIL = "client_email"; private String clientEmail; + public static final String JSON_PROPERTY_CLOUD_RUN_REVISION_FILTERS = + "cloud_run_revision_filters"; + private List cloudRunRevisionFilters = null; + public static final String JSON_PROPERTY_HOST_FILTERS = "host_filters"; private List hostFilters = null; @@ -126,6 +131,38 @@ public void setClientEmail(String clientEmail) { this.clientEmail = clientEmail; } + public GCPSTSServiceAccountAttributes cloudRunRevisionFilters( + List cloudRunRevisionFilters) { + this.cloudRunRevisionFilters = cloudRunRevisionFilters; + return this; + } + + public GCPSTSServiceAccountAttributes addCloudRunRevisionFiltersItem( + String cloudRunRevisionFiltersItem) { + if (this.cloudRunRevisionFilters == null) { + this.cloudRunRevisionFilters = new ArrayList<>(); + } + this.cloudRunRevisionFilters.add(cloudRunRevisionFiltersItem); + return this; + } + + /** + * List of filters to limit the Cloud Run revisions that are pulled into Datadog by using tags. + * Only Cloud Run revision resources that apply to specified filters are imported into Datadog. + * + * @return cloudRunRevisionFilters + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_CLOUD_RUN_REVISION_FILTERS) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public List getCloudRunRevisionFilters() { + return cloudRunRevisionFilters; + } + + public void setCloudRunRevisionFilters(List cloudRunRevisionFilters) { + this.cloudRunRevisionFilters = cloudRunRevisionFilters; + } + public GCPSTSServiceAccountAttributes hostFilters(List hostFilters) { this.hostFilters = hostFilters; return this; @@ -282,6 +319,8 @@ public boolean equals(Object o) { return Objects.equals(this.accountTags, gcpstsServiceAccountAttributes.accountTags) && Objects.equals(this.automute, gcpstsServiceAccountAttributes.automute) && Objects.equals(this.clientEmail, gcpstsServiceAccountAttributes.clientEmail) + && Objects.equals( + this.cloudRunRevisionFilters, gcpstsServiceAccountAttributes.cloudRunRevisionFilters) && Objects.equals(this.hostFilters, gcpstsServiceAccountAttributes.hostFilters) && Objects.equals(this.isCspmEnabled, gcpstsServiceAccountAttributes.isCspmEnabled) && Objects.equals( @@ -300,6 +339,7 @@ public int hashCode() { accountTags, automute, clientEmail, + cloudRunRevisionFilters, hostFilters, isCspmEnabled, isSecurityCommandCenterEnabled, @@ -314,6 +354,9 @@ public String toString() { sb.append(" accountTags: ").append(toIndentedString(accountTags)).append("\n"); sb.append(" automute: ").append(toIndentedString(automute)).append("\n"); sb.append(" clientEmail: ").append(toIndentedString(clientEmail)).append("\n"); + sb.append(" cloudRunRevisionFilters: ") + .append(toIndentedString(cloudRunRevisionFilters)) + .append("\n"); sb.append(" hostFilters: ").append(toIndentedString(hostFilters)).append("\n"); sb.append(" isCspmEnabled: ").append(toIndentedString(isCspmEnabled)).append("\n"); sb.append(" isSecurityCommandCenterEnabled: ") diff --git a/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.freeze b/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.freeze index 3677f3cb1d1..3898833e13c 100644 --- a/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.freeze +++ b/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.freeze @@ -1 +1 @@ -2023-12-20T13:18:07.717Z \ No newline at end of file +2024-01-31T21:16:03.254Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.json b/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.json index 63cb634e4d2..47560166ce7 100644 --- a/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v1/Create_a_GCP_integration_returns_OK_response.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"client_email\":\"e5bbc86fb86ab202@example.com\",\"client_id\":\"170307828717030782870\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL\",\"host_filters\":\"key:value,filter:example\",\"is_cspm_enabled\":true,\"is_security_command_center_enabled\":true,\"private_key\":\"private_key\",\"private_key_id\":\"123456789abcdefghi123456789abcdefghijklm\",\"project_id\":\"datadog-apitest\",\"resource_collection_enabled\":true,\"token_uri\":\"https://accounts.google.com/o/oauth2/token\",\"type\":\"service_account\"}" + "json": "{\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"client_email\":\"3af93b0f1c973838@example.com\",\"client_id\":\"170673576317067357630\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL\",\"cloud_run_revision_filters\":[\"dr:dre\"],\"host_filters\":\"key:value,filter:example\",\"is_cspm_enabled\":true,\"is_security_command_center_enabled\":true,\"private_key\":\"private_key\",\"private_key_id\":\"123456789abcdefghi123456789abcdefghijklm\",\"project_id\":\"datadog-apitest\",\"resource_collection_enabled\":true,\"token_uri\":\"https://accounts.google.com/o/oauth2/token\",\"type\":\"service_account\"}" }, "headers": {}, "method": "POST", @@ -27,13 +27,13 @@ "timeToLive": { "unlimited": true }, - "id": "b2cb47eb-6ade-915c-2537-254b4d580891" + "id": "39099d42-0474-c609-6e87-c89c0c161c61" }, { "httpRequest": { "body": { "type": "JSON", - "json": "{\"client_email\":\"e5bbc86fb86ab202@example.com\",\"client_id\":\"170307828717030782870\",\"project_id\":\"datadog-apitest\"}" + "json": "{\"client_email\":\"3af93b0f1c973838@example.com\",\"client_id\":\"170673576317067357630\",\"project_id\":\"datadog-apitest\"}" }, "headers": {}, "method": "DELETE", @@ -57,6 +57,6 @@ "timeToLive": { "unlimited": true }, - "id": "ec417b17-fee2-cfb4-bfe3-bcf49d0d30e7" + "id": "06f3a965-9732-2f41-7987-0a809aaab104" } ] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.freeze b/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.freeze index d9857f82457..5a6248b6359 100644 --- a/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.freeze +++ b/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.freeze @@ -1 +1 @@ -2024-01-26T10:20:27.109Z \ No newline at end of file +2024-02-14T09:56:55.385Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.json b/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.json index df6a7dcecd2..d228bf30e6c 100644 --- a/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v1/Create_a_global_variable_from_test_returns_OK_response.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\"}]},\"locations\":[\"aws:us-east-2\"],\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1706264427\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1706264427\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"subtype\":\"multi\",\"tags\":[\"testing:api\"],\"type\":\"api\"}" + "json": "{\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\"},{\"allowFailure\":false,\"assertions\":[{\"operator\":\"lessThan\",\"target\":1000,\"type\":\"responseTime\"}],\"extractedValues\":[],\"isCritical\":true,\"name\":\"GRPC CALL\",\"request\":{\"callType\":\"unary\",\"compressedJsonDescriptor\":\"eJy1lU1z2yAQhv+Lzj74I3ETH506bQ7OZOSm1w4Wa4epBARQppqM/3v5koCJJdvtxCdW77vPssCO3zMKUgHOFu/ZXvBiS6hZho/f8qe7pftYgXphWJrlA8XwxywEvNba+6PhkC2yVcVVswYp0R6ykRYlZ1SCV21SDrxsssPIeS9FJKqGfK2rqnmmSBwhWa2XlKgtaQPiDcRGCUDVfwGD2sKUqKEtc1cSoOrsMlaMOec1sySYCCgUYRSVLv2zSva2u+FQkB0pVkIw8bFuIudOOn3pOaKYVT3Iy97Pd0AYhOx5QcMsnxvRHlnuLf8ETDd3CNtrv2nejkDpRnANCmGkkFn/hsYzpBKE7jVbufgnKnV9HRM9zRPDDKPttYT61n0TdWkAAjggk9AhuxIeaXd69CYTcsGw7cBTakLVbNpRzGEgyWjkSOpMbZXkhGL6oX30R49qt3GoHrap7i0XdD41WQ+2icCNm5p1hmFqnHNlcla0riKmDZ183crDxChjbnurtxHPRE784sVhWvDfGP+SsTKibU3o5NtWHuZFGZOxP6P5VXqIOvaOSec4eYohyd7NslHuJbd1bewds85xYrNxkr2d+5IhFWF3NvaO684xjE2S5ulY+tu64Pna0fCPJgzw6vF5/WucLcYjt5xoq19O3UDptOg/OamJQRaCcPPnMTQ2QDFn+uhPvUfnCrMc99upyQY4Ui9Dlc/YoG3R/v4Cs9YE+g==\",\"host\":\"grpcbin.test.k6.io\",\"message\":\"{}\",\"metadata\":{},\"method\":\"Index\",\"port\":9000,\"service\":\"grpcbin.GRPCBin\"},\"retry\":{\"count\":0,\"interval\":300},\"subtype\":\"grpc\"}]},\"locations\":[\"aws:us-east-2\"],\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1707904615\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1707904615\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"subtype\":\"multi\",\"tags\":[\"testing:api\"],\"type\":\"api\"}" }, "headers": {}, "method": "POST", @@ -12,7 +12,7 @@ "secure": true }, "httpResponse": { - "body": "{\"public_id\":\"izb-9gc-92w\",\"name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1706264427\",\"status\":\"live\",\"type\":\"api\",\"tags\":[\"testing:api\"],\"created_at\":\"2024-01-26T10:20:27.717659+00:00\",\"modified_at\":\"2024-01-26T10:20:27.717659+00:00\",\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\",\"id\":\"79d-ysr-wwj\"}]},\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1706264427\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"locations\":[\"aws:us-east-2\"],\"subtype\":\"multi\",\"created_by\":{\"name\":\"Frog\",\"handle\":\"frog@datadoghq.com\",\"email\":\"frog@datadoghq.com\"},\"deleted_at\":null,\"monitor_id\":138446065,\"org_id\":569509,\"modified_by\":{\"name\":\"Frog\",\"handle\":\"frog@datadoghq.com\",\"email\":\"frog@datadoghq.com\"}}", + "body": "{\"public_id\":\"6td-hmb-t6f\",\"name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1707904615\",\"status\":\"live\",\"type\":\"api\",\"tags\":[\"testing:api\"],\"created_at\":\"2024-02-14T09:56:55.729504+00:00\",\"modified_at\":\"2024-02-14T09:56:55.729504+00:00\",\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\",\"id\":\"7g9-x3d-mid\"},{\"allowFailure\":false,\"assertions\":[{\"operator\":\"lessThan\",\"target\":1000,\"type\":\"responseTime\"}],\"extractedValues\":[],\"isCritical\":true,\"name\":\"GRPC CALL\",\"request\":{\"callType\":\"unary\",\"compressedJsonDescriptor\":\"eJy1lU1z2yAQhv+Lzj74I3ETH506bQ7OZOSm1w4Wa4epBARQppqM/3v5koCJJdvtxCdW77vPssCO3zMKUgHOFu/ZXvBiS6hZho/f8qe7pftYgXphWJrlA8XwxywEvNba+6PhkC2yVcVVswYp0R6ykRYlZ1SCV21SDrxsssPIeS9FJKqGfK2rqnmmSBwhWa2XlKgtaQPiDcRGCUDVfwGD2sKUqKEtc1cSoOrsMlaMOec1sySYCCgUYRSVLv2zSva2u+FQkB0pVkIw8bFuIudOOn3pOaKYVT3Iy97Pd0AYhOx5QcMsnxvRHlnuLf8ETDd3CNtrv2nejkDpRnANCmGkkFn/hsYzpBKE7jVbufgnKnV9HRM9zRPDDKPttYT61n0TdWkAAjggk9AhuxIeaXd69CYTcsGw7cBTakLVbNpRzGEgyWjkSOpMbZXkhGL6oX30R49qt3GoHrap7i0XdD41WQ+2icCNm5p1hmFqnHNlcla0riKmDZ183crDxChjbnurtxHPRE784sVhWvDfGP+SsTKibU3o5NtWHuZFGZOxP6P5VXqIOvaOSec4eYohyd7NslHuJbd1bewds85xYrNxkr2d+5IhFWF3NvaO684xjE2S5ulY+tu64Pna0fCPJgzw6vF5/WucLcYjt5xoq19O3UDptOg/OamJQRaCcPPnMTQ2QDFn+uhPvUfnCrMc99upyQY4Ui9Dlc/YoG3R/v4Cs9YE+g==\",\"host\":\"grpcbin.test.k6.io\",\"message\":\"{}\",\"metadata\":{},\"method\":\"Index\",\"port\":9000,\"service\":\"grpcbin.GRPCBin\"},\"retry\":{\"count\":0,\"interval\":300},\"subtype\":\"grpc\",\"id\":\"xnr-5zr-293\"}]},\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_a_global_variable_from_test_returns_OK_response-1707904615\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"locations\":[\"aws:us-east-2\"],\"subtype\":\"multi\",\"created_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"email\":\"team-intg-tools-libs-spam@datadoghq.com\"},\"deleted_at\":null,\"monitor_id\":139518955,\"org_id\":321813,\"modified_by\":{\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"email\":\"team-intg-tools-libs-spam@datadoghq.com\"}}", "headers": { "Content-Type": [ "application/json" @@ -27,13 +27,13 @@ "timeToLive": { "unlimited": true }, - "id": "6f009174-df89-cdc1-a7f6-59377b3e4c0f" + "id": "4726b482-6095-9663-751f-d8e1e5058a6d" }, { "httpRequest": { "body": { "type": "JSON", - "json": "{\"description\":\"\",\"name\":\"GLOBAL_VARIABLE_PAYLOAD_TESTCREATEAGLOBALVARIABLEFROMTESTRETURNSOKRESPONSE1706264427\",\"parse_test_options\":{\"localVariableName\":\"EXTRACTED_VALUE\",\"type\":\"local_variable\"},\"parse_test_public_id\":\"izb-9gc-92w\",\"tags\":[],\"value\":{\"options\":{\"totp_parameters\":{\"digits\":6,\"refresh_interval\":30}},\"secure\":false,\"value\":\"\"}}" + "json": "{\"description\":\"\",\"name\":\"GLOBAL_VARIABLE_PAYLOAD_TESTCREATEAGLOBALVARIABLEFROMTESTRETURNSOKRESPONSE1707904615\",\"parse_test_options\":{\"localVariableName\":\"EXTRACTED_VALUE\",\"type\":\"local_variable\"},\"parse_test_public_id\":\"6td-hmb-t6f\",\"tags\":[],\"value\":{\"options\":{\"totp_parameters\":{\"digits\":6,\"refresh_interval\":30}},\"secure\":false,\"value\":\"\"}}" }, "headers": {}, "method": "POST", @@ -42,7 +42,7 @@ "secure": true }, "httpResponse": { - "body": "{\"id\":\"a586a64d-cd9f-4983-8d00-81dcefb919ac\",\"name\":\"GLOBAL_VARIABLE_PAYLOAD_TESTCREATEAGLOBALVARIABLEFROMTESTRETURNSOKRESPONSE1706264427\",\"description\":\"\",\"type\":\"variable\",\"tags\":[],\"parse_test_public_id\":\"izb-9gc-92w\",\"parse_test_name\":null,\"parse_test_options\":{\"localVariableName\":\"EXTRACTED_VALUE\",\"type\":\"local_variable\"},\"parse_test_extracted_at\":null,\"is_totp\":null,\"is_fido\":null,\"last_error\":null,\"value\":{\"options\":{\"totp_parameters\":{\"digits\":6,\"refresh_interval\":30}},\"secure\":false,\"value\":\"\"}}\n", + "body": "{\"id\":\"b8daafc5-09e1-4f63-9f44-c973b2ec57dc\",\"name\":\"GLOBAL_VARIABLE_PAYLOAD_TESTCREATEAGLOBALVARIABLEFROMTESTRETURNSOKRESPONSE1707904615\",\"description\":\"\",\"type\":\"variable\",\"tags\":[],\"parse_test_public_id\":\"6td-hmb-t6f\",\"parse_test_name\":null,\"parse_test_options\":{\"localVariableName\":\"EXTRACTED_VALUE\",\"type\":\"local_variable\"},\"parse_test_extracted_at\":null,\"is_totp\":null,\"is_fido\":null,\"last_error\":null,\"value\":{\"options\":{\"totp_parameters\":{\"digits\":6,\"refresh_interval\":30}},\"secure\":false,\"value\":\"\"}}\n", "headers": { "Content-Type": [ "application/json" @@ -57,13 +57,13 @@ "timeToLive": { "unlimited": true }, - "id": "0d92c2e4-7792-06e8-c45c-02f652cb21e4" + "id": "847424fb-dd46-9b07-8c91-3a9b3f81056e" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v1/synthetics/variables/a586a64d-cd9f-4983-8d00-81dcefb919ac", + "path": "/api/v1/synthetics/variables/b8daafc5-09e1-4f63-9f44-c973b2ec57dc", "keepAlive": false, "secure": true }, @@ -82,13 +82,13 @@ "timeToLive": { "unlimited": true }, - "id": "dcaa0b38-3566-7c0a-688e-7b90e24d285e" + "id": "171e1644-a37e-1d95-7f11-cf7d90cef236" }, { "httpRequest": { "body": { "type": "JSON", - "json": "{\"public_ids\":[\"izb-9gc-92w\"]}" + "json": "{\"public_ids\":[\"6td-hmb-t6f\"]}" }, "headers": {}, "method": "POST", @@ -97,7 +97,7 @@ "secure": true }, "httpResponse": { - "body": "{\"deleted_tests\":[{\"public_id\":\"izb-9gc-92w\",\"deleted_at\":\"2024-01-26T10:20:29.374347+00:00\"}]}\n", + "body": "{\"deleted_tests\":[{\"public_id\":\"6td-hmb-t6f\",\"deleted_at\":\"2024-02-14T09:56:56.985642+00:00\"}]}\n", "headers": { "Content-Type": [ "application/json" @@ -112,6 +112,6 @@ "timeToLive": { "unlimited": true }, - "id": "86267211-1e7e-ed0d-259e-2f235ae804a3" + "id": "0e9cc95d-8a70-460b-3da2-08961d72ca43" } ] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.freeze b/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.freeze index 8113d86f364..5786b386acd 100644 --- a/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.freeze +++ b/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.freeze @@ -1 +1 @@ -2024-01-26T10:20:47.505Z \ No newline at end of file +2024-02-14T09:52:43.647Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.json b/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.json index e7b60ba52b3..8f8064d7385 100644 --- a/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.json +++ b/src/test/resources/cassettes/features/v1/Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\"}]},\"locations\":[\"aws:us-east-2\"],\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1706264447\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1706264447\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"subtype\":\"multi\",\"tags\":[\"testing:api\"],\"type\":\"api\"}" + "json": "{\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\"},{\"allowFailure\":false,\"assertions\":[{\"operator\":\"lessThan\",\"target\":1000,\"type\":\"responseTime\"}],\"extractedValues\":[],\"isCritical\":true,\"name\":\"GRPC CALL\",\"request\":{\"callType\":\"unary\",\"compressedJsonDescriptor\":\"eJy1lU1z2yAQhv+Lzj74I3ETH506bQ7OZOSm1w4Wa4epBARQppqM/3v5koCJJdvtxCdW77vPssCO3zMKUgHOFu/ZXvBiS6hZho/f8qe7pftYgXphWJrlA8XwxywEvNba+6PhkC2yVcVVswYp0R6ykRYlZ1SCV21SDrxsssPIeS9FJKqGfK2rqnmmSBwhWa2XlKgtaQPiDcRGCUDVfwGD2sKUqKEtc1cSoOrsMlaMOec1sySYCCgUYRSVLv2zSva2u+FQkB0pVkIw8bFuIudOOn3pOaKYVT3Iy97Pd0AYhOx5QcMsnxvRHlnuLf8ETDd3CNtrv2nejkDpRnANCmGkkFn/hsYzpBKE7jVbufgnKnV9HRM9zRPDDKPttYT61n0TdWkAAjggk9AhuxIeaXd69CYTcsGw7cBTakLVbNpRzGEgyWjkSOpMbZXkhGL6oX30R49qt3GoHrap7i0XdD41WQ+2icCNm5p1hmFqnHNlcla0riKmDZ183crDxChjbnurtxHPRE784sVhWvDfGP+SsTKibU3o5NtWHuZFGZOxP6P5VXqIOvaOSec4eYohyd7NslHuJbd1bewds85xYrNxkr2d+5IhFWF3NvaO684xjE2S5ulY+tu64Pna0fCPJgzw6vF5/WucLcYjt5xoq19O3UDptOg/OamJQRaCcPPnMTQ2QDFn+uhPvUfnCrMc99upyQY4Ui9Dlc/YoG3R/v4Cs9YE+g==\",\"host\":\"grpcbin.test.k6.io\",\"message\":\"{}\",\"metadata\":{},\"method\":\"Index\",\"port\":9000,\"service\":\"grpcbin.GRPCBin\"},\"retry\":{\"count\":0,\"interval\":300},\"subtype\":\"grpc\"}]},\"locations\":[\"aws:us-east-2\"],\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1707904363\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1707904363\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"subtype\":\"multi\",\"tags\":[\"testing:api\"],\"type\":\"api\"}" }, "headers": {}, "method": "POST", @@ -12,7 +12,7 @@ "secure": true }, "httpResponse": { - "body": "{\"public_id\":\"gvd-8ek-8j4\",\"name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1706264447\",\"status\":\"live\",\"type\":\"api\",\"tags\":[\"testing:api\"],\"created_at\":\"2024-01-26T10:20:47.990304+00:00\",\"modified_at\":\"2024-01-26T10:20:47.990304+00:00\",\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\",\"id\":\"tj8-64v-kmn\"}]},\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1706264447\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"locations\":[\"aws:us-east-2\"],\"subtype\":\"multi\",\"created_by\":{\"name\":\"Frog\",\"handle\":\"frog@datadoghq.com\",\"email\":\"frog@datadoghq.com\"},\"deleted_at\":null,\"monitor_id\":138446072,\"org_id\":569509,\"modified_by\":{\"name\":\"Frog\",\"handle\":\"frog@datadoghq.com\",\"email\":\"frog@datadoghq.com\"}}", + "body": "{\"public_id\":\"49h-gaa-dte\",\"name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1707904363\",\"status\":\"live\",\"type\":\"api\",\"tags\":[\"testing:api\"],\"created_at\":\"2024-02-14T09:52:44.302597+00:00\",\"modified_at\":\"2024-02-14T09:52:44.302597+00:00\",\"config\":{\"configVariables\":[{\"example\":\"content-type\",\"name\":\"PROPERTY\",\"pattern\":\"content-type\",\"type\":\"text\"}],\"steps\":[{\"allowFailure\":true,\"assertions\":[{\"operator\":\"is\",\"target\":200,\"type\":\"statusCode\"}],\"extractedValues\":[{\"field\":\"server\",\"name\":\"EXTRACTED_VALUE\",\"parser\":{\"type\":\"raw\"},\"secure\":true,\"type\":\"http_header\"}],\"isCritical\":true,\"name\":\"request is sent\",\"request\":{\"method\":\"GET\",\"timeout\":10,\"url\":\"https://datadoghq.com\"},\"retry\":{\"count\":5,\"interval\":1000},\"subtype\":\"http\",\"id\":\"nt6-mfm-kis\"},{\"allowFailure\":false,\"assertions\":[{\"operator\":\"lessThan\",\"target\":1000,\"type\":\"responseTime\"}],\"extractedValues\":[],\"isCritical\":true,\"name\":\"GRPC CALL\",\"request\":{\"callType\":\"unary\",\"compressedJsonDescriptor\":\"eJy1lU1z2yAQhv+Lzj74I3ETH506bQ7OZOSm1w4Wa4epBARQppqM/3v5koCJJdvtxCdW77vPssCO3zMKUgHOFu/ZXvBiS6hZho/f8qe7pftYgXphWJrlA8XwxywEvNba+6PhkC2yVcVVswYp0R6ykRYlZ1SCV21SDrxsssPIeS9FJKqGfK2rqnmmSBwhWa2XlKgtaQPiDcRGCUDVfwGD2sKUqKEtc1cSoOrsMlaMOec1sySYCCgUYRSVLv2zSva2u+FQkB0pVkIw8bFuIudOOn3pOaKYVT3Iy97Pd0AYhOx5QcMsnxvRHlnuLf8ETDd3CNtrv2nejkDpRnANCmGkkFn/hsYzpBKE7jVbufgnKnV9HRM9zRPDDKPttYT61n0TdWkAAjggk9AhuxIeaXd69CYTcsGw7cBTakLVbNpRzGEgyWjkSOpMbZXkhGL6oX30R49qt3GoHrap7i0XdD41WQ+2icCNm5p1hmFqnHNlcla0riKmDZ183crDxChjbnurtxHPRE784sVhWvDfGP+SsTKibU3o5NtWHuZFGZOxP6P5VXqIOvaOSec4eYohyd7NslHuJbd1bewds85xYrNxkr2d+5IhFWF3NvaO684xjE2S5ulY+tu64Pna0fCPJgzw6vF5/WucLcYjt5xoq19O3UDptOg/OamJQRaCcPPnMTQ2QDFn+uhPvUfnCrMc99upyQY4Ui9Dlc/YoG3R/v4Cs9YE+g==\",\"host\":\"grpcbin.test.k6.io\",\"message\":\"{}\",\"metadata\":{},\"method\":\"Index\",\"port\":9000,\"service\":\"grpcbin.GRPCBin\"},\"retry\":{\"count\":0,\"interval\":300},\"subtype\":\"grpc\",\"id\":\"ksz-bri-vu5\"}]},\"message\":\"BDD test payload: synthetics_api_test_multi_step_payload.json\",\"options\":{\"accept_self_signed\":false,\"allow_insecure\":true,\"follow_redirects\":true,\"min_failure_duration\":10,\"min_location_failed\":1,\"monitor_name\":\"Test-Create_an_API_test_with_multi_subtype_returns_OK_Returns_the_created_test_details_response-1707904363\",\"monitor_priority\":5,\"retry\":{\"count\":3,\"interval\":1000},\"tick_every\":60},\"locations\":[\"aws:us-east-2\"],\"subtype\":\"multi\",\"created_by\":{\"name\":\"Frog\",\"handle\":\"frog@datadoghq.com\",\"email\":\"frog@datadoghq.com\"},\"deleted_at\":null,\"monitor_id\":139518783,\"org_id\":569509,\"modified_by\":{\"name\":\"Frog\",\"handle\":\"frog@datadoghq.com\",\"email\":\"frog@datadoghq.com\"}}", "headers": { "Content-Type": [ "application/json" @@ -27,13 +27,13 @@ "timeToLive": { "unlimited": true }, - "id": "16b71032-f529-c6bd-020d-ab1b921b5307" + "id": "f71c7ca7-9265-b019-27f0-1c9f8f766912" }, { "httpRequest": { "body": { "type": "JSON", - "json": "{\"public_ids\":[\"gvd-8ek-8j4\"]}" + "json": "{\"public_ids\":[\"49h-gaa-dte\"]}" }, "headers": {}, "method": "POST", @@ -42,7 +42,7 @@ "secure": true }, "httpResponse": { - "body": "{\"deleted_tests\":[{\"public_id\":\"gvd-8ek-8j4\",\"deleted_at\":\"2024-01-26T10:20:48.529333+00:00\"}]}\n", + "body": "{\"deleted_tests\":[{\"public_id\":\"49h-gaa-dte\",\"deleted_at\":\"2024-02-14T09:52:44.978031+00:00\"}]}\n", "headers": { "Content-Type": [ "application/json" @@ -57,6 +57,6 @@ "timeToLive": { "unlimited": true }, - "id": "1ccaa9c7-993a-7509-c179-1a7b61c7f3b6" + "id": "5bdd6ed7-88b8-23f3-e96b-63759879ebeb" } ] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Update_a_GCP_integration_cloud_run_revision_filters_returns_OK_response.freeze b/src/test/resources/cassettes/features/v1/Update_a_GCP_integration_cloud_run_revision_filters_returns_OK_response.freeze new file mode 100644 index 00000000000..6f951f6ba55 --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Update_a_GCP_integration_cloud_run_revision_filters_returns_OK_response.freeze @@ -0,0 +1 @@ +2024-01-31T21:16:03.829Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v1/Update_a_GCP_integration_cloud_run_revision_filters_returns_OK_response.json b/src/test/resources/cassettes/features/v1/Update_a_GCP_integration_cloud_run_revision_filters_returns_OK_response.json new file mode 100644 index 00000000000..fecb06c658e --- /dev/null +++ b/src/test/resources/cassettes/features/v1/Update_a_GCP_integration_cloud_run_revision_filters_returns_OK_response.json @@ -0,0 +1,92 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"client_email\":\"edcdf6542ac6e6b6@example.com\",\"client_id\":\"170673576317067357630\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL\",\"host_filters\":\"key:value,filter:example\",\"is_cspm_enabled\":true,\"is_security_command_center_enabled\":true,\"private_key\":\"private_key\",\"private_key_id\":\"123456789abcdefghi123456789abcdefghijklm\",\"project_id\":\"datadog-apitest\",\"resource_collection_enabled\":true,\"token_uri\":\"https://accounts.google.com/o/oauth2/token\",\"type\":\"service_account\"}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v1/integration/gcp", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "d5af362c-fd17-a774-8951-26db7016b73d" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"auth_provider_x509_cert_url\":\"https://www.googleapis.com/oauth2/v1/certs\",\"auth_uri\":\"https://accounts.google.com/o/oauth2/auth\",\"client_email\":\"edcdf6542ac6e6b6@example.com\",\"client_id\":\"170673576317067357630\",\"client_x509_cert_url\":\"https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL\",\"cloud_run_revision_filters\":[\"merp:derp\"],\"host_filters\":\"key:value,filter:example\",\"is_cspm_enabled\":true,\"is_security_command_center_enabled\":true,\"private_key\":\"private_key\",\"private_key_id\":\"123456789abcdefghi123456789abcdefghijklm\",\"project_id\":\"datadog-apitest\",\"resource_collection_enabled\":true,\"token_uri\":\"https://accounts.google.com/o/oauth2/token\",\"type\":\"service_account\"}" + }, + "headers": {}, + "method": "PUT", + "path": "/api/v1/integration/gcp", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "b6bc74a2-d4a7-d7dc-d8c4-a4480213d777" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"client_email\":\"edcdf6542ac6e6b6@example.com\",\"client_id\":\"170673576317067357630\",\"project_id\":\"datadog-apitest\"}" + }, + "headers": {}, + "method": "DELETE", + "path": "/api/v1/integration/gcp", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 200, + "reasonPhrase": "OK" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "a91e4fae-e284-89f6-9bbc-f410954d7806" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_new_entry_for_your_service_account_with_cloud_run_revision_filters_enabled_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Create_a_new_entry_for_your_service_account_with_cloud_run_revision_filters_enabled_returns_OK_response.freeze new file mode 100644 index 00000000000..5078f78fe6d --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_new_entry_for_your_service_account_with_cloud_run_revision_filters_enabled_returns_OK_response.freeze @@ -0,0 +1 @@ +2024-01-31T21:16:04.924Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_a_new_entry_for_your_service_account_with_cloud_run_revision_filters_enabled_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Create_a_new_entry_for_your_service_account_with_cloud_run_revision_filters_enabled_returns_OK_response.json new file mode 100644 index 00000000000..3de251f3887 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Create_a_new_entry_for_your_service_account_with_cloud_run_revision_filters_enabled_returns_OK_response.json @@ -0,0 +1,57 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"client_email\":\"feb37f50ee7be467@test-project.iam.gserviceaccount.com\",\"cloud_run_revision_filters\":[\"meh:bleh\"],\"host_filters\":[]},\"type\":\"gcp_service_account\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/integration/gcp/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"type\":\"gcp_service_account\",\"attributes\":{\"cloud_run_revision_filters\":[\"meh:bleh\"],\"resource_collection_enabled\":false,\"host_filters\":[],\"automute\":false,\"is_cspm_enabled\":false,\"account_tags\":[],\"client_email\":\"feb37f50ee7be467@test-project.iam.gserviceaccount.com\",\"is_security_command_center_enabled\":false},\"id\":\"e1157377-8d5c-4a94-9730-10c3fa9d6ff5\"}}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "47a66398-572b-0d1d-83f9-556e64ce5555" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/integration/gcp/accounts/e1157377-8d5c-4a94-9730-10c3fa9d6ff5", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": { + "Content-Type": [ + "text/html; charset=utf-8" + ] + }, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "1a91e883-4df7-6cf0-f341-faea9cbad7e6" + } +] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_STS_Service_Account_returns_OK_response_with_cloud_run_revision_filters.freeze b/src/test/resources/cassettes/features/v2/Update_STS_Service_Account_returns_OK_response_with_cloud_run_revision_filters.freeze new file mode 100644 index 00000000000..92757ea39aa --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_STS_Service_Account_returns_OK_response_with_cloud_run_revision_filters.freeze @@ -0,0 +1 @@ +2024-01-31T21:16:05.705Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_STS_Service_Account_returns_OK_response_with_cloud_run_revision_filters.json b/src/test/resources/cassettes/features/v2/Update_STS_Service_Account_returns_OK_response_with_cloud_run_revision_filters.json new file mode 100644 index 00000000000..dfb03b623d7 --- /dev/null +++ b/src/test/resources/cassettes/features/v2/Update_STS_Service_Account_returns_OK_response_with_cloud_run_revision_filters.json @@ -0,0 +1,87 @@ +[ + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"client_email\":\"a8e08a7fa29a1adb@example.com\",\"host_filters\":[]},\"type\":\"gcp_service_account\"}}" + }, + "headers": {}, + "method": "POST", + "path": "/api/v2/integration/gcp/accounts", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"type\":\"gcp_service_account\",\"id\":\"3e6ad31b-2da5-4ad4-878a-4d290520173b\",\"attributes\":{\"account_tags\":[],\"resource_collection_enabled\":false,\"is_cspm_enabled\":false,\"automute\":false,\"host_filters\":[],\"is_security_command_center_enabled\":false,\"cloud_run_revision_filters\":[],\"client_email\":\"a8e08a7fa29a1adb@example.com\"}}}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "2c875aa6-d8b2-2095-3d2b-892ece8be85c" + }, + { + "httpRequest": { + "body": { + "type": "JSON", + "json": "{\"data\":{\"attributes\":{\"client_email\":\"a8e08a7fa29a1adb@example.com\",\"cloud_run_revision_filters\":[\"merp:derp\"]},\"id\":\"3e6ad31b-2da5-4ad4-878a-4d290520173b\",\"type\":\"gcp_service_account\"}}" + }, + "headers": {}, + "method": "PATCH", + "path": "/api/v2/integration/gcp/accounts/3e6ad31b-2da5-4ad4-878a-4d290520173b", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "body": "{\"data\":{\"type\":\"gcp_service_account\",\"id\":\"3e6ad31b-2da5-4ad4-878a-4d290520173b\",\"attributes\":{\"cloud_run_revision_filters\":[\"merp:derp\"],\"host_filters\":[],\"automute\":false,\"is_security_command_center_enabled\":false,\"account_tags\":[],\"client_email\":\"a8e08a7fa29a1adb@example.com\",\"is_cspm_enabled\":false,\"resource_collection_enabled\":false}}}\n", + "headers": { + "Content-Type": [ + "application/json" + ] + }, + "statusCode": 201, + "reasonPhrase": "Created" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "c442f49c-76e2-3033-c03e-a5ff456fe64a" + }, + { + "httpRequest": { + "headers": {}, + "method": "DELETE", + "path": "/api/v2/integration/gcp/accounts/3e6ad31b-2da5-4ad4-878a-4d290520173b", + "keepAlive": false, + "secure": true + }, + "httpResponse": { + "headers": { + "Content-Type": [ + "text/html; charset=utf-8" + ] + }, + "statusCode": 204, + "reasonPhrase": "No Content" + }, + "times": { + "remainingTimes": 1 + }, + "timeToLive": { + "unlimited": true + }, + "id": "749dee69-7030-13d2-fdb2-a6627dea1d7f" + } +] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v1/api/gcp_integration.feature b/src/test/resources/com/datadog/api/client/v1/api/gcp_integration.feature index cc078be2f03..2b656ab2023 100644 --- a/src/test/resources/com/datadog/api/client/v1/api/gcp_integration.feature +++ b/src/test/resources/com/datadog/api/client/v1/api/gcp_integration.feature @@ -13,21 +13,21 @@ Feature: GCP Integration @generated @skip @team:DataDog/gcp-integrations Scenario: Create a GCP integration returns "Bad Request" response Given new "CreateGCPIntegration" request - And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "api-dev@datadog-sandbox.iam.gserviceaccount.com", "client_id": "123456712345671234567", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "errors": ["*"], "host_filters": "key:value,filter:example", "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} + And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "api-dev@datadog-sandbox.iam.gserviceaccount.com", "client_id": "123456712345671234567", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "cloud_run_revision_filters": ["$KEY:$VALUE"], "errors": ["*"], "host_filters": "key:value,filter:example", "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} When the request is sent Then the response status is 400 Bad Request @team:DataDog/gcp-integrations Scenario: Create a GCP integration returns "OK" response Given new "CreateGCPIntegration" request - And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "{{unique_hash}}@example.com", "client_id": "{{ timestamp("now") }}{{ timestamp("now") }}0", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "host_filters": "key:value,filter:example", "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} + And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "{{unique_hash}}@example.com", "client_id": "{{ timestamp("now") }}{{ timestamp("now") }}0", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "host_filters": "key:value,filter:example", "cloud_run_revision_filters": ["dr:dre"], "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} When the request is sent Then the response status is 200 OK @generated @skip @team:DataDog/gcp-integrations Scenario: Delete a GCP integration returns "Bad Request" response Given new "DeleteGCPIntegration" request - And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "api-dev@datadog-sandbox.iam.gserviceaccount.com", "client_id": "123456712345671234567", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "errors": ["*"], "host_filters": "key:value,filter:example", "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} + And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "api-dev@datadog-sandbox.iam.gserviceaccount.com", "client_id": "123456712345671234567", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "cloud_run_revision_filters": ["$KEY:$VALUE"], "errors": ["*"], "host_filters": "key:value,filter:example", "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} When the request is sent Then the response status is 400 Bad Request @@ -51,10 +51,18 @@ Feature: GCP Integration When the request is sent Then the response status is 200 OK + @team:DataDog/gcp-integrations + Scenario: Update a GCP integration cloud run revision filters returns "OK" response + Given there is a valid "gcp_account" in the system + And new "UpdateGCPIntegration" request + And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "{{unique_hash}}@example.com", "client_id": "{{ timestamp("now") }}{{ timestamp("now") }}0", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "host_filters": "key:value,filter:example", "cloud_run_revision_filters": ["merp:derp"], "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} + When the request is sent + Then the response status is 200 OK + @generated @skip @team:DataDog/gcp-integrations Scenario: Update a GCP integration returns "Bad Request" response Given new "UpdateGCPIntegration" request - And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "api-dev@datadog-sandbox.iam.gserviceaccount.com", "client_id": "123456712345671234567", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "errors": ["*"], "host_filters": "key:value,filter:example", "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} + And body with value {"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "client_email": "api-dev@datadog-sandbox.iam.gserviceaccount.com", "client_id": "123456712345671234567", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/$CLIENT_EMAIL", "cloud_run_revision_filters": ["$KEY:$VALUE"], "errors": ["*"], "host_filters": "key:value,filter:example", "is_cspm_enabled": true, "is_security_command_center_enabled": true, "private_key": "private_key", "private_key_id": "123456789abcdefghi123456789abcdefghijklm", "project_id": "datadog-apitest", "resource_collection_enabled": true, "token_uri": "https://accounts.google.com/o/oauth2/token", "type": "service_account"} When the request is sent Then the response status is 400 Bad Request diff --git a/src/test/resources/com/datadog/api/client/v1/api/given.json b/src/test/resources/com/datadog/api/client/v1/api/given.json index 205b1ecb2f1..6ba2f4e62d0 100644 --- a/src/test/resources/com/datadog/api/client/v1/api/given.json +++ b/src/test/resources/com/datadog/api/client/v1/api/given.json @@ -250,7 +250,7 @@ "parameters": [ { "name": "body", - "value": "{\n \"config\": {\n \"configVariables\": [\n {\n \"example\": \"content-type\",\n \"name\": \"PROPERTY\",\n \"pattern\": \"content-type\",\n \"type\": \"text\"\n }\n ],\n \"steps\": [\n {\n \"allowFailure\": true,\n \"assertions\": [\n {\n \"operator\": \"is\",\n \"type\": \"statusCode\",\n \"target\": 200\n }\n ],\n \"extractedValues\": [\n {\n \"field\": \"server\",\n \"name\": \"EXTRACTED_VALUE\",\n \"parser\": {\n \"type\": \"raw\"\n },\n \"type\": \"http_header\",\n \"secure\": true\n }\n ],\n \"isCritical\": true,\n \"name\": \"request is sent\",\n \"request\": {\n \"method\": \"GET\",\n \"timeout\": 10,\n \"url\": \"https://datadoghq.com\"\n },\n \"retry\": {\n \"count\": 5,\n \"interval\": 1000\n },\n \"subtype\": \"http\"\n }\n ]\n },\n \"locations\": [\"aws:us-east-2\"],\n \"message\": \"BDD test payload: synthetics_api_test_multi_step_payload.json\",\n \"name\": \"{{ unique }}\",\n \"options\": {\n \"accept_self_signed\": false,\n \"allow_insecure\": true,\n \"follow_redirects\": true,\n \"min_failure_duration\": 10,\n \"min_location_failed\": 1,\n \"monitor_name\": \"{{ unique }}\",\n \"monitor_priority\": 5,\n \"retry\": { \"count\": 3, \"interval\": 1000 },\n \"tick_every\": 60\n },\n \"subtype\": \"multi\",\n \"tags\": [\"testing:api\"],\n \"type\": \"api\"\n}\n" + "value": "{\n \"config\": {\n \"configVariables\": [\n {\n \"example\": \"content-type\",\n \"name\": \"PROPERTY\",\n \"pattern\": \"content-type\",\n \"type\": \"text\"\n }\n ],\n \"steps\": [\n {\n \"allowFailure\": true,\n \"assertions\": [\n {\n \"operator\": \"is\",\n \"type\": \"statusCode\",\n \"target\": 200\n }\n ],\n \"extractedValues\": [\n {\n \"field\": \"server\",\n \"name\": \"EXTRACTED_VALUE\",\n \"parser\": {\n \"type\": \"raw\"\n },\n \"type\": \"http_header\",\n \"secure\": true\n }\n ],\n \"isCritical\": true,\n \"name\": \"request is sent\",\n \"request\": {\n \"method\": \"GET\",\n \"timeout\": 10,\n \"url\": \"https://datadoghq.com\"\n },\n \"retry\": {\n \"count\": 5,\n \"interval\": 1000\n },\n \"subtype\": \"http\"\n },\n {\n \"name\": \"GRPC CALL\",\n \"subtype\": \"grpc\",\n \"extractedValues\": [],\n \"allowFailure\": false,\n \"isCritical\": true,\n \"retry\": {\n \"count\": 0,\n \"interval\": 300\n },\n \"assertions\": [\n {\n \"operator\": \"lessThan\",\n \"type\": \"responseTime\",\n \"target\": 1000\n }\n ],\n \"request\": {\n \"host\": \"grpcbin.test.k6.io\",\n \"port\": 9000,\n \"service\": \"grpcbin.GRPCBin\",\n \"method\": \"Index\",\n \"message\": \"{}\",\n \"compressedJsonDescriptor\": \"eJy1lU1z2yAQhv+Lzj74I3ETH506bQ7OZOSm1w4Wa4epBARQppqM/3v5koCJJdvtxCdW77vPssCO3zMKUgHOFu/ZXvBiS6hZho/f8qe7pftYgXphWJrlA8XwxywEvNba+6PhkC2yVcVVswYp0R6ykRYlZ1SCV21SDrxsssPIeS9FJKqGfK2rqnmmSBwhWa2XlKgtaQPiDcRGCUDVfwGD2sKUqKEtc1cSoOrsMlaMOec1sySYCCgUYRSVLv2zSva2u+FQkB0pVkIw8bFuIudOOn3pOaKYVT3Iy97Pd0AYhOx5QcMsnxvRHlnuLf8ETDd3CNtrv2nejkDpRnANCmGkkFn/hsYzpBKE7jVbufgnKnV9HRM9zRPDDKPttYT61n0TdWkAAjggk9AhuxIeaXd69CYTcsGw7cBTakLVbNpRzGEgyWjkSOpMbZXkhGL6oX30R49qt3GoHrap7i0XdD41WQ+2icCNm5p1hmFqnHNlcla0riKmDZ183crDxChjbnurtxHPRE784sVhWvDfGP+SsTKibU3o5NtWHuZFGZOxP6P5VXqIOvaOSec4eYohyd7NslHuJbd1bewds85xYrNxkr2d+5IhFWF3NvaO684xjE2S5ulY+tu64Pna0fCPJgzw6vF5/WucLcYjt5xoq19O3UDptOg/OamJQRaCcPPnMTQ2QDFn+uhPvUfnCrMc99upyQY4Ui9Dlc/YoG3R/v4Cs9YE+g==\",\n \"metadata\": {},\n \"callType\": \"unary\"\n }\n }\n ]\n },\n \"locations\": [\"aws:us-east-2\"],\n \"message\": \"BDD test payload: synthetics_api_test_multi_step_payload.json\",\n \"name\": \"{{ unique }}\",\n \"options\": {\n \"accept_self_signed\": false,\n \"allow_insecure\": true,\n \"follow_redirects\": true,\n \"min_failure_duration\": 10,\n \"min_location_failed\": 1,\n \"monitor_name\": \"{{ unique }}\",\n \"monitor_priority\": 5,\n \"retry\": { \"count\": 3, \"interval\": 1000 },\n \"tick_every\": 60\n },\n \"subtype\": \"multi\",\n \"tags\": [\"testing:api\"],\n \"type\": \"api\"\n}\n" } ], "step": "there is a valid \"synthetics_api_test_multi_step\" in the system", diff --git a/src/test/resources/com/datadog/api/client/v1/api/synthetics.feature b/src/test/resources/com/datadog/api/client/v1/api/synthetics.feature index 9b9722550cc..36f74743154 100644 --- a/src/test/resources/com/datadog/api/client/v1/api/synthetics.feature +++ b/src/test/resources/com/datadog/api/client/v1/api/synthetics.feature @@ -203,6 +203,7 @@ Feature: Synthetics And the response "config.steps[0].retry.count" is equal to 5 And the response "config.steps[0].retry.interval" is equal to 1000 And the response "config.steps[0].extractedValues[0].secure" is equal to true + And the response "config.steps[1].request.host" is equal to "grpcbin.test.k6.io" @generated @skip @team:DataDog/synthetics-app Scenario: Delete a global variable returns "JSON format is wrong" response diff --git a/src/test/resources/com/datadog/api/client/v1/api/synthetics_api_test_multi_step_payload.json b/src/test/resources/com/datadog/api/client/v1/api/synthetics_api_test_multi_step_payload.json index f514958caa2..28778436156 100644 --- a/src/test/resources/com/datadog/api/client/v1/api/synthetics_api_test_multi_step_payload.json +++ b/src/test/resources/com/datadog/api/client/v1/api/synthetics_api_test_multi_step_payload.json @@ -41,6 +41,34 @@ "interval": 1000 }, "subtype": "http" + }, + { + "name": "GRPC CALL", + "subtype": "grpc", + "extractedValues": [], + "allowFailure": false, + "isCritical": true, + "retry": { + "count": 0, + "interval": 300 + }, + "assertions": [ + { + "operator": "lessThan", + "type": "responseTime", + "target": 1000 + } + ], + "request": { + "host": "grpcbin.test.k6.io", + "port": 9000, + "service": "grpcbin.GRPCBin", + "method": "Index", + "message": "{}", + "compressedJsonDescriptor": "eJy1lU1z2yAQhv+Lzj74I3ETH506bQ7OZOSm1w4Wa4epBARQppqM/3v5koCJJdvtxCdW77vPssCO3zMKUgHOFu/ZXvBiS6hZho/f8qe7pftYgXphWJrlA8XwxywEvNba+6PhkC2yVcVVswYp0R6ykRYlZ1SCV21SDrxsssPIeS9FJKqGfK2rqnmmSBwhWa2XlKgtaQPiDcRGCUDVfwGD2sKUqKEtc1cSoOrsMlaMOec1sySYCCgUYRSVLv2zSva2u+FQkB0pVkIw8bFuIudOOn3pOaKYVT3Iy97Pd0AYhOx5QcMsnxvRHlnuLf8ETDd3CNtrv2nejkDpRnANCmGkkFn/hsYzpBKE7jVbufgnKnV9HRM9zRPDDKPttYT61n0TdWkAAjggk9AhuxIeaXd69CYTcsGw7cBTakLVbNpRzGEgyWjkSOpMbZXkhGL6oX30R49qt3GoHrap7i0XdD41WQ+2icCNm5p1hmFqnHNlcla0riKmDZ183crDxChjbnurtxHPRE784sVhWvDfGP+SsTKibU3o5NtWHuZFGZOxP6P5VXqIOvaOSec4eYohyd7NslHuJbd1bewds85xYrNxkr2d+5IhFWF3NvaO684xjE2S5ulY+tu64Pna0fCPJgzw6vF5/WucLcYjt5xoq19O3UDptOg/OamJQRaCcPPnMTQ2QDFn+uhPvUfnCrMc99upyQY4Ui9Dlc/YoG3R/v4Cs9YE+g==", + "metadata": {}, + "callType": "unary" + } } ] }, diff --git a/src/test/resources/com/datadog/api/client/v2/api/gcp_integration.feature b/src/test/resources/com/datadog/api/client/v2/api/gcp_integration.feature index e18714ba2e8..6085d6ed2f8 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/gcp_integration.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/gcp_integration.feature @@ -34,14 +34,14 @@ Feature: GCP Integration @generated @skip @team:DataDog/gcp-integrations Scenario: Create a new entry for your service account returns "Bad Request" response Given new "CreateGCPSTSAccount" request - And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "host_filters": [], "is_security_command_center_enabled": true}, "type": "gcp_service_account"}} + And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": [], "is_security_command_center_enabled": true}, "type": "gcp_service_account"}} When the request is sent Then the response status is 400 Bad Request @generated @skip @team:DataDog/gcp-integrations Scenario: Create a new entry for your service account returns "Conflict" response Given new "CreateGCPSTSAccount" request - And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "host_filters": [], "is_security_command_center_enabled": true}, "type": "gcp_service_account"}} + And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": [], "is_security_command_center_enabled": true}, "type": "gcp_service_account"}} When the request is sent Then the response status is 409 Conflict @@ -64,6 +64,16 @@ Feature: GCP Integration And the response "data.attributes.client_email" is equal to "{{ unique_hash }}@test-project.iam.gserviceaccount.com" And the response "data.attributes.account_tags" is equal to ["lorem", "ipsum"] + @team:DataDog/gcp-integrations + Scenario: Create a new entry for your service account with cloud run revision filters enabled returns "OK" response + Given new "CreateGCPSTSAccount" request + And body with value {"data": {"attributes": {"cloud_run_revision_filters": ["meh:bleh"], "client_email": "{{ unique_hash }}@test-project.iam.gserviceaccount.com", "host_filters": []}, "type": "gcp_service_account"}} + When the request is sent + Then the response status is 201 OK + And the response "data.type" is equal to "gcp_service_account" + And the response "data.attributes.client_email" is equal to "{{ unique_hash }}@test-project.iam.gserviceaccount.com" + And the response "data.attributes.cloud_run_revision_filters" is equal to ["meh:bleh"] + @team:DataDog/gcp-integrations Scenario: Create a new entry for your service account with cspm enabled returns "OK" response Given new "CreateGCPSTSAccount" request @@ -140,7 +150,7 @@ Feature: GCP Integration Scenario: Update STS Service Account returns "Bad Request" response Given new "UpdateGCPSTSAccount" request And request contains "account_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "host_filters": [], "is_security_command_center_enabled": true}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}} + And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": [], "is_security_command_center_enabled": true}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}} When the request is sent Then the response status is 400 Bad Request @@ -148,7 +158,7 @@ Feature: GCP Integration Scenario: Update STS Service Account returns "Not Found" response Given new "UpdateGCPSTSAccount" request And request contains "account_id" parameter from "REPLACE.ME" - And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "host_filters": [], "is_security_command_center_enabled": true}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}} + And body with value {"data": {"attributes": {"account_tags": [], "client_email": "datadog-service-account@test-project.iam.gserviceaccount.com", "cloud_run_revision_filters": ["$KEY:$VALUE"], "host_filters": [], "is_security_command_center_enabled": true}, "id": "d291291f-12c2-22g4-j290-123456678897", "type": "gcp_service_account"}} When the request is sent Then the response status is 404 Not Found @@ -161,6 +171,15 @@ Feature: GCP Integration When the request is sent Then the response status is 201 OK + @team:DataDog/gcp-integrations + Scenario: Update STS Service Account returns "OK" response with cloud run revision filters + Given there is a valid "gcp_sts_account" in the system + And new "UpdateGCPSTSAccount" request + And request contains "account_id" parameter from "gcp_sts_account.data.id" + And body with value {"data": {"attributes": {"client_email": "{{ unique_hash }}@example.com", "cloud_run_revision_filters": ["merp:derp"]}, "id": "{{ gcp_sts_account.data.id }}", "type": "gcp_service_account"}} + When the request is sent + Then the response status is 201 OK + @team:DataDog/gcp-integrations Scenario: Update STS Service Account returns "OK" response with enable resource collection turned on Given there is a valid "gcp_sts_account" in the system