diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 12e9531700e..3bc4a350cbc 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -20960,6 +20960,29 @@ components: type: string type: array type: object + DeploymentRuleOptionsFaultyDeploymentDetectionResponse: + additionalProperties: false + description: Faulty deployment detection options returned in deployment rule + responses. The `excluded_resources` field is always present, which allows + disambiguating this type from monitor options when both share a `duration` + field. + properties: + duration: + description: The duration for faulty deployment detection. + example: 3600 + format: int64 + type: integer + excluded_resources: + description: Resources to exclude from faulty deployment detection. + example: + - resource1 + - resource2 + items: + type: string + type: array + required: + - excluded_resources + type: object DeploymentRuleOptionsMonitor: additionalProperties: false description: Monitor options for deployment rules. @@ -21022,7 +21045,7 @@ components: example: My deployment rule type: string options: - $ref: '#/components/schemas/DeploymentRulesOptions' + $ref: '#/components/schemas/DeploymentRulesOptionsResponse' type: $ref: '#/components/schemas/DeploymentRuleResponseDataAttributesType' updated_at: @@ -21087,11 +21110,18 @@ components: - id type: object DeploymentRulesOptions: - description: Options for deployment rule response representing either faulty + description: Options for deployment rule requests representing either faulty deployment detection or monitor options. oneOf: - $ref: '#/components/schemas/DeploymentRuleOptionsFaultyDeploymentDetection' - $ref: '#/components/schemas/DeploymentRuleOptionsMonitor' + DeploymentRulesOptionsResponse: + description: Options returned in deployment rule responses representing either + faulty deployment detection or monitor options. Faulty deployment detection + responses always include `excluded_resources`, making the two variants unambiguous. + oneOf: + - $ref: '#/components/schemas/DeploymentRuleOptionsFaultyDeploymentDetectionResponse' + - $ref: '#/components/schemas/DeploymentRuleOptionsMonitor' DetachCaseRequest: description: Request for detaching security findings from their case. properties: diff --git a/src/main/java/com/datadog/api/client/v2/model/CreateDeploymentRuleParamsDataAttributes.java b/src/main/java/com/datadog/api/client/v2/model/CreateDeploymentRuleParamsDataAttributes.java index 14bb4bc93e2..70a694cd6fe 100644 --- a/src/main/java/com/datadog/api/client/v2/model/CreateDeploymentRuleParamsDataAttributes.java +++ b/src/main/java/com/datadog/api/client/v2/model/CreateDeploymentRuleParamsDataAttributes.java @@ -101,7 +101,7 @@ public CreateDeploymentRuleParamsDataAttributes options(DeploymentRulesOptions o } /** - * Options for deployment rule response representing either faulty deployment detection or monitor + * Options for deployment rule requests representing either faulty deployment detection or monitor * options. * * @return options diff --git a/src/main/java/com/datadog/api/client/v2/model/DeploymentRuleOptionsFaultyDeploymentDetectionResponse.java b/src/main/java/com/datadog/api/client/v2/model/DeploymentRuleOptionsFaultyDeploymentDetectionResponse.java new file mode 100644 index 00000000000..268e8676ce7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/DeploymentRuleOptionsFaultyDeploymentDetectionResponse.java @@ -0,0 +1,140 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +/** + * Faulty deployment detection options returned in deployment rule responses. The + * excluded_resources field is always present, which allows disambiguating this type from + * monitor options when both share a duration field. + */ +@JsonPropertyOrder({ + DeploymentRuleOptionsFaultyDeploymentDetectionResponse.JSON_PROPERTY_DURATION, + DeploymentRuleOptionsFaultyDeploymentDetectionResponse.JSON_PROPERTY_EXCLUDED_RESOURCES +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class DeploymentRuleOptionsFaultyDeploymentDetectionResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DURATION = "duration"; + private Long duration; + + public static final String JSON_PROPERTY_EXCLUDED_RESOURCES = "excluded_resources"; + private List excludedResources = new ArrayList<>(); + + public DeploymentRuleOptionsFaultyDeploymentDetectionResponse() {} + + @JsonCreator + public DeploymentRuleOptionsFaultyDeploymentDetectionResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_EXCLUDED_RESOURCES) + List excludedResources) { + this.excludedResources = excludedResources; + } + + public DeploymentRuleOptionsFaultyDeploymentDetectionResponse duration(Long duration) { + this.duration = duration; + return this; + } + + /** + * The duration for faulty deployment detection. + * + * @return duration + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DURATION) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public Long getDuration() { + return duration; + } + + public void setDuration(Long duration) { + this.duration = duration; + } + + public DeploymentRuleOptionsFaultyDeploymentDetectionResponse excludedResources( + List excludedResources) { + this.excludedResources = excludedResources; + return this; + } + + public DeploymentRuleOptionsFaultyDeploymentDetectionResponse addExcludedResourcesItem( + String excludedResourcesItem) { + this.excludedResources.add(excludedResourcesItem); + return this; + } + + /** + * Resources to exclude from faulty deployment detection. + * + * @return excludedResources + */ + @JsonProperty(JSON_PROPERTY_EXCLUDED_RESOURCES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getExcludedResources() { + return excludedResources; + } + + public void setExcludedResources(List excludedResources) { + this.excludedResources = excludedResources; + } + + /** + * Return true if this DeploymentRuleOptionsFaultyDeploymentDetectionResponse object is equal to + * o. + */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + DeploymentRuleOptionsFaultyDeploymentDetectionResponse + deploymentRuleOptionsFaultyDeploymentDetectionResponse = + (DeploymentRuleOptionsFaultyDeploymentDetectionResponse) o; + return Objects.equals( + this.duration, deploymentRuleOptionsFaultyDeploymentDetectionResponse.duration) + && Objects.equals( + this.excludedResources, + deploymentRuleOptionsFaultyDeploymentDetectionResponse.excludedResources); + } + + @Override + public int hashCode() { + return Objects.hash(duration, excludedResources); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class DeploymentRuleOptionsFaultyDeploymentDetectionResponse {\n"); + sb.append(" duration: ").append(toIndentedString(duration)).append("\n"); + sb.append(" excludedResources: ").append(toIndentedString(excludedResources)).append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/DeploymentRuleResponseDataAttributes.java b/src/main/java/com/datadog/api/client/v2/model/DeploymentRuleResponseDataAttributes.java index bf82bcbd45d..8f7b5c95e60 100644 --- a/src/main/java/com/datadog/api/client/v2/model/DeploymentRuleResponseDataAttributes.java +++ b/src/main/java/com/datadog/api/client/v2/model/DeploymentRuleResponseDataAttributes.java @@ -50,7 +50,7 @@ public class DeploymentRuleResponseDataAttributes { private String name; public static final String JSON_PROPERTY_OPTIONS = "options"; - private DeploymentRulesOptions options; + private DeploymentRulesOptionsResponse options; public static final String JSON_PROPERTY_TYPE = "type"; private DeploymentRuleResponseDataAttributesType type; @@ -71,7 +71,8 @@ public DeploymentRuleResponseDataAttributes( @JsonProperty(required = true, value = JSON_PROPERTY_DRY_RUN) Boolean dryRun, @JsonProperty(required = true, value = JSON_PROPERTY_GATE_ID) String gateId, @JsonProperty(required = true, value = JSON_PROPERTY_NAME) String name, - @JsonProperty(required = true, value = JSON_PROPERTY_OPTIONS) DeploymentRulesOptions options, + @JsonProperty(required = true, value = JSON_PROPERTY_OPTIONS) + DeploymentRulesOptionsResponse options, @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) DeploymentRuleResponseDataAttributesType type) { this.createdAt = createdAt; @@ -188,25 +189,26 @@ public void setName(String name) { this.name = name; } - public DeploymentRuleResponseDataAttributes options(DeploymentRulesOptions options) { + public DeploymentRuleResponseDataAttributes options(DeploymentRulesOptionsResponse options) { this.options = options; this.unparsed |= options.unparsed; return this; } /** - * Options for deployment rule response representing either faulty deployment detection or monitor - * options. + * Options returned in deployment rule responses representing either faulty deployment detection + * or monitor options. Faulty deployment detection responses always include + * excluded_resources, making the two variants unambiguous. * * @return options */ @JsonProperty(JSON_PROPERTY_OPTIONS) @JsonInclude(value = JsonInclude.Include.ALWAYS) - public DeploymentRulesOptions getOptions() { + public DeploymentRulesOptionsResponse getOptions() { return options; } - public void setOptions(DeploymentRulesOptions options) { + public void setOptions(DeploymentRulesOptionsResponse options) { this.options = options; } diff --git a/src/main/java/com/datadog/api/client/v2/model/DeploymentRulesOptionsResponse.java b/src/main/java/com/datadog/api/client/v2/model/DeploymentRulesOptionsResponse.java new file mode 100644 index 00000000000..446e9c706c9 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/DeploymentRulesOptionsResponse.java @@ -0,0 +1,307 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.AbstractOpenApiSchema; +import com.datadog.api.client.JSON; +import com.datadog.api.client.UnparsedObject; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonDeserialize; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import jakarta.ws.rs.core.GenericType; +import java.io.IOException; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +@JsonDeserialize( + using = DeploymentRulesOptionsResponse.DeploymentRulesOptionsResponseDeserializer.class) +@JsonSerialize( + using = DeploymentRulesOptionsResponse.DeploymentRulesOptionsResponseSerializer.class) +public class DeploymentRulesOptionsResponse extends AbstractOpenApiSchema { + private static final Logger log = + Logger.getLogger(DeploymentRulesOptionsResponse.class.getName()); + + @JsonIgnore public boolean unparsed = false; + + public static class DeploymentRulesOptionsResponseSerializer + extends StdSerializer { + public DeploymentRulesOptionsResponseSerializer(Class t) { + super(t); + } + + public DeploymentRulesOptionsResponseSerializer() { + this(null); + } + + @Override + public void serialize( + DeploymentRulesOptionsResponse value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.getActualInstance()); + } + } + + public static class DeploymentRulesOptionsResponseDeserializer + extends StdDeserializer { + public DeploymentRulesOptionsResponseDeserializer() { + this(DeploymentRulesOptionsResponse.class); + } + + public DeploymentRulesOptionsResponseDeserializer(Class vc) { + super(vc); + } + + @Override + public DeploymentRulesOptionsResponse deserialize(JsonParser jp, DeserializationContext ctxt) + throws IOException, JsonProcessingException { + JsonNode tree = jp.readValueAsTree(); + Object deserialized = null; + Object tmp = null; + boolean typeCoercion = ctxt.isEnabled(MapperFeature.ALLOW_COERCION_OF_SCALARS); + int match = 0; + JsonToken token = tree.traverse(jp.getCodec()).nextToken(); + // deserialize DeploymentRuleOptionsFaultyDeploymentDetectionResponse + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Integer.class) + || DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Long.class) + || DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Float.class) + || DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Double.class) + || DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Boolean.class) + || DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Integer.class) + || DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals( + Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Float.class) + || DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals( + Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((DeploymentRuleOptionsFaultyDeploymentDetectionResponse) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'DeploymentRuleOptionsFaultyDeploymentDetectionResponse'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema" + + " 'DeploymentRuleOptionsFaultyDeploymentDetectionResponse'", + e); + } + + // deserialize DeploymentRuleOptionsMonitor + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (DeploymentRuleOptionsMonitor.class.equals(Integer.class) + || DeploymentRuleOptionsMonitor.class.equals(Long.class) + || DeploymentRuleOptionsMonitor.class.equals(Float.class) + || DeploymentRuleOptionsMonitor.class.equals(Double.class) + || DeploymentRuleOptionsMonitor.class.equals(Boolean.class) + || DeploymentRuleOptionsMonitor.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((DeploymentRuleOptionsMonitor.class.equals(Integer.class) + || DeploymentRuleOptionsMonitor.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((DeploymentRuleOptionsMonitor.class.equals(Float.class) + || DeploymentRuleOptionsMonitor.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (DeploymentRuleOptionsMonitor.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (DeploymentRuleOptionsMonitor.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(DeploymentRuleOptionsMonitor.class); + // TODO: there is no validation against JSON schema constraints + // (min, max, enum, pattern...), this does not perform a strict JSON + // validation, which means the 'match' count may be higher than it should be. + if (!((DeploymentRuleOptionsMonitor) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'DeploymentRuleOptionsMonitor'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log(Level.FINER, "Input data does not match schema 'DeploymentRuleOptionsMonitor'", e); + } + + DeploymentRulesOptionsResponse ret = new DeploymentRulesOptionsResponse(); + if (match == 1) { + ret.setActualInstance(deserialized); + } else { + Map res = + new ObjectMapper() + .readValue( + tree.traverse(jp.getCodec()).readValueAsTree().toString(), + new TypeReference>() {}); + ret.setActualInstance(new UnparsedObject(res)); + } + return ret; + } + + /** Handle deserialization of the 'null' value. */ + @Override + public DeploymentRulesOptionsResponse getNullValue(DeserializationContext ctxt) + throws JsonMappingException { + throw new JsonMappingException( + ctxt.getParser(), "DeploymentRulesOptionsResponse cannot be null"); + } + } + + // store a list of schema names defined in oneOf + public static final Map schemas = new HashMap(); + + public DeploymentRulesOptionsResponse() { + super("oneOf", Boolean.FALSE); + } + + public DeploymentRulesOptionsResponse(DeploymentRuleOptionsFaultyDeploymentDetectionResponse o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + public DeploymentRulesOptionsResponse(DeploymentRuleOptionsMonitor o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + + static { + schemas.put( + "DeploymentRuleOptionsFaultyDeploymentDetectionResponse", + new GenericType() {}); + schemas.put("DeploymentRuleOptionsMonitor", new GenericType() {}); + JSON.registerDescendants( + DeploymentRulesOptionsResponse.class, Collections.unmodifiableMap(schemas)); + } + + @Override + public Map getSchemas() { + return DeploymentRulesOptionsResponse.schemas; + } + + /** + * Set the instance that matches the oneOf child schema, check the instance parameter is valid + * against the oneOf child schemas: DeploymentRuleOptionsFaultyDeploymentDetectionResponse, + * DeploymentRuleOptionsMonitor + * + *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a + * composed schema (allOf, anyOf, oneOf). + */ + @Override + public void setActualInstance(Object instance) { + if (JSON.isInstanceOf( + DeploymentRuleOptionsFaultyDeploymentDetectionResponse.class, + instance, + new HashSet>())) { + super.setActualInstance(instance); + return; + } + if (JSON.isInstanceOf(DeploymentRuleOptionsMonitor.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + + if (JSON.isInstanceOf(UnparsedObject.class, instance, new HashSet>())) { + super.setActualInstance(instance); + return; + } + throw new RuntimeException( + "Invalid instance type. Must be DeploymentRuleOptionsFaultyDeploymentDetectionResponse," + + " DeploymentRuleOptionsMonitor"); + } + + /** + * Get the actual instance, which can be the following: + * DeploymentRuleOptionsFaultyDeploymentDetectionResponse, DeploymentRuleOptionsMonitor + * + * @return The actual instance (DeploymentRuleOptionsFaultyDeploymentDetectionResponse, + * DeploymentRuleOptionsMonitor) + */ + @Override + public Object getActualInstance() { + return super.getActualInstance(); + } + + /** + * Get the actual instance of `DeploymentRuleOptionsFaultyDeploymentDetectionResponse`. If the + * actual instance is not `DeploymentRuleOptionsFaultyDeploymentDetectionResponse`, the + * ClassCastException will be thrown. + * + * @return The actual instance of `DeploymentRuleOptionsFaultyDeploymentDetectionResponse` + * @throws ClassCastException if the instance is not + * `DeploymentRuleOptionsFaultyDeploymentDetectionResponse` + */ + public DeploymentRuleOptionsFaultyDeploymentDetectionResponse + getDeploymentRuleOptionsFaultyDeploymentDetectionResponse() throws ClassCastException { + return (DeploymentRuleOptionsFaultyDeploymentDetectionResponse) super.getActualInstance(); + } + + /** + * Get the actual instance of `DeploymentRuleOptionsMonitor`. If the actual instance is not + * `DeploymentRuleOptionsMonitor`, the ClassCastException will be thrown. + * + * @return The actual instance of `DeploymentRuleOptionsMonitor` + * @throws ClassCastException if the instance is not `DeploymentRuleOptionsMonitor` + */ + public DeploymentRuleOptionsMonitor getDeploymentRuleOptionsMonitor() throws ClassCastException { + return (DeploymentRuleOptionsMonitor) super.getActualInstance(); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/UpdateDeploymentRuleParamsDataAttributes.java b/src/main/java/com/datadog/api/client/v2/model/UpdateDeploymentRuleParamsDataAttributes.java index 7159bb00ecc..caac3c57d51 100644 --- a/src/main/java/com/datadog/api/client/v2/model/UpdateDeploymentRuleParamsDataAttributes.java +++ b/src/main/java/com/datadog/api/client/v2/model/UpdateDeploymentRuleParamsDataAttributes.java @@ -97,7 +97,7 @@ public UpdateDeploymentRuleParamsDataAttributes options(DeploymentRulesOptions o } /** - * Options for deployment rule response representing either faulty deployment detection or monitor + * Options for deployment rule requests representing either faulty deployment detection or monitor * options. * * @return options diff --git a/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.freeze index 63e0f66692d..106c0df9922 100644 --- a/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.freeze +++ b/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.freeze @@ -1 +1 @@ -2025-12-10T09:23:50.780Z \ No newline at end of file +2026-03-11T14:49:58.105Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.json index e3637d640df..02e5519c0e6 100644 --- a/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Create_deployment_rule_returns_OK_response.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testcreatedeploymentrulereturnsokresponse1765358630\",\"service\":\"my-service\"},\"type\":\"deployment_gate\"}}" + "json": "{\"data\":{\"attributes\":{\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testcreatedeploymentrulereturnsokresponse1773240598\",\"service\":\"my-service\"},\"type\":\"deployment_gate\"}}" }, "headers": {}, "method": "POST", @@ -12,7 +12,7 @@ "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"24d967fe-1dec-4957-bf77-7eda18a65d47\",\"type\":\"deployment_gate\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:50.813397Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testcreatedeploymentrulereturnsokresponse1765358630\",\"service\":\"my-service\",\"updated_at\":\"2025-12-10T09:23:50.813397Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"2f5dd6f5-d95a-484e-854d-deef73efb664\",\"type\":\"deployment_gate\",\"attributes\":{\"created_at\":\"2026-03-11T14:49:58.708133Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testcreatedeploymentrulereturnsokresponse1773240598\",\"service\":\"my-service\",\"updated_at\":\"2026-03-11T14:49:58.708133Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "92892c4c-9c44-828e-e567-a62a33c65db5" + "id": "1119e004-ecf4-3549-e331-fa26e52d5296" }, { "httpRequest": { @@ -37,12 +37,12 @@ }, "headers": {}, "method": "POST", - "path": "/api/v2/deployment_gates/24d967fe-1dec-4957-bf77-7eda18a65d47/rules", + "path": "/api/v2/deployment_gates/2f5dd6f5-d95a-484e-854d-deef73efb664/rules", "keepAlive": false, "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"ebe85a93-a82d-49ec-8925-6d3d569012bb\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:50.871951Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"24d967fe-1dec-4957-bf77-7eda18a65d47\",\"name\":\"My deployment rule\",\"options\":{},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2025-12-10T09:23:50.871951Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"cd2c3087-0e8b-4696-a8a1-7af14e218e46\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2026-03-11T14:49:59.023723Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"2f5dd6f5-d95a-484e-854d-deef73efb664\",\"name\":\"My deployment rule\",\"options\":{\"excluded_resources\":[]},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2026-03-11T14:49:59.023723Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -57,13 +57,13 @@ "timeToLive": { "unlimited": true }, - "id": "a6096f20-df6f-977f-0a0c-05986e123041" + "id": "48b2035b-74e6-fdc1-2694-799fc9437d23" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v2/deployment_gates/24d967fe-1dec-4957-bf77-7eda18a65d47/rules/ebe85a93-a82d-49ec-8925-6d3d569012bb", + "path": "/api/v2/deployment_gates/2f5dd6f5-d95a-484e-854d-deef73efb664/rules/cd2c3087-0e8b-4696-a8a1-7af14e218e46", "keepAlive": false, "secure": true }, @@ -78,13 +78,13 @@ "timeToLive": { "unlimited": true }, - "id": "1168ae44-d6cd-cdbd-a562-8c4385d3551f" + "id": "7f4732dd-48ab-b1cf-3832-0cc54fde12ae" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v2/deployment_gates/24d967fe-1dec-4957-bf77-7eda18a65d47", + "path": "/api/v2/deployment_gates/2f5dd6f5-d95a-484e-854d-deef73efb664", "keepAlive": false, "secure": true }, @@ -99,6 +99,6 @@ "timeToLive": { "unlimited": true }, - "id": "43164807-eaa9-7682-b506-1adf0a1f3fe1" + "id": "25e624aa-5053-f03b-ca8c-e3bba844a872" } ] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.freeze index 3a24fa14046..96c9be060e0 100644 --- a/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.freeze +++ b/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.freeze @@ -1 +1 @@ -2025-12-10T09:23:51.998Z \ No newline at end of file +2026-03-11T14:49:59.730Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.json index f628d8f04ed..f1c35047ab5 100644 --- a/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Get_deployment_rule_returns_OK_response.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testgetdeploymentrulereturnsokresponse1765358631\",\"service\":\"my-service\"},\"type\":\"deployment_gate\"}}" + "json": "{\"data\":{\"attributes\":{\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testgetdeploymentrulereturnsokresponse1773240599\",\"service\":\"my-service\"},\"type\":\"deployment_gate\"}}" }, "headers": {}, "method": "POST", @@ -12,7 +12,7 @@ "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"6177e46c-44dc-453d-8af8-8af86aa93c29\",\"type\":\"deployment_gate\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:52.029575Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testgetdeploymentrulereturnsokresponse1765358631\",\"service\":\"my-service\",\"updated_at\":\"2025-12-10T09:23:52.029575Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"90ad7166-3050-4215-8613-4d7c6b4dda91\",\"type\":\"deployment_gate\",\"attributes\":{\"created_at\":\"2026-03-11T14:49:59.951101Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testgetdeploymentrulereturnsokresponse1773240599\",\"service\":\"my-service\",\"updated_at\":\"2026-03-11T14:49:59.951101Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "5a8b836c-5bac-769d-09a2-26f15b892174" + "id": "52c42513-80ce-34ea-03bd-2e68d9faeed1" }, { "httpRequest": { @@ -37,12 +37,12 @@ }, "headers": {}, "method": "POST", - "path": "/api/v2/deployment_gates/6177e46c-44dc-453d-8af8-8af86aa93c29/rules", + "path": "/api/v2/deployment_gates/90ad7166-3050-4215-8613-4d7c6b4dda91/rules", "keepAlive": false, "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"38e32cd3-d245-49c1-85c5-b039ef868a18\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:52.079318Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"6177e46c-44dc-453d-8af8-8af86aa93c29\",\"name\":\"My deployment rule\",\"options\":{},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2025-12-10T09:23:52.079318Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"734c6f92-ac07-42ea-afbb-84a1f5971b57\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2026-03-11T14:50:00.24535Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"90ad7166-3050-4215-8613-4d7c6b4dda91\",\"name\":\"My deployment rule\",\"options\":{\"excluded_resources\":[]},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2026-03-11T14:50:00.24535Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -57,18 +57,18 @@ "timeToLive": { "unlimited": true }, - "id": "cbab2cf6-714d-4812-323a-ba60fbdde284" + "id": "9e5b9265-5ceb-5b2f-d529-b81368bf7295" }, { "httpRequest": { "headers": {}, "method": "GET", - "path": "/api/v2/deployment_gates/6177e46c-44dc-453d-8af8-8af86aa93c29/rules/38e32cd3-d245-49c1-85c5-b039ef868a18", + "path": "/api/v2/deployment_gates/90ad7166-3050-4215-8613-4d7c6b4dda91/rules/734c6f92-ac07-42ea-afbb-84a1f5971b57", "keepAlive": false, "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"38e32cd3-d245-49c1-85c5-b039ef868a18\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:52.079318Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"6177e46c-44dc-453d-8af8-8af86aa93c29\",\"name\":\"My deployment rule\",\"options\":{},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2025-12-10T09:23:52.079318Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"734c6f92-ac07-42ea-afbb-84a1f5971b57\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2026-03-11T14:50:00.24535Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"90ad7166-3050-4215-8613-4d7c6b4dda91\",\"name\":\"My deployment rule\",\"options\":{\"excluded_resources\":[]},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2026-03-11T14:50:00.24535Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -83,13 +83,13 @@ "timeToLive": { "unlimited": true }, - "id": "51579ab8-6f86-51fb-e286-a5194ecc35da" + "id": "c5d15a18-f288-0e68-47a2-5817f9fd5f50" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v2/deployment_gates/6177e46c-44dc-453d-8af8-8af86aa93c29/rules/38e32cd3-d245-49c1-85c5-b039ef868a18", + "path": "/api/v2/deployment_gates/90ad7166-3050-4215-8613-4d7c6b4dda91/rules/734c6f92-ac07-42ea-afbb-84a1f5971b57", "keepAlive": false, "secure": true }, @@ -104,13 +104,13 @@ "timeToLive": { "unlimited": true }, - "id": "1c77bf1c-234d-46db-9690-f756de42ad13" + "id": "763a0a71-ff53-1ae5-a548-a83745537c64" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v2/deployment_gates/6177e46c-44dc-453d-8af8-8af86aa93c29", + "path": "/api/v2/deployment_gates/90ad7166-3050-4215-8613-4d7c6b4dda91", "keepAlive": false, "secure": true }, @@ -125,6 +125,6 @@ "timeToLive": { "unlimited": true }, - "id": "4ffe6539-7452-6b7b-fdea-1f939ca6c842" + "id": "f4dc7210-41fd-c479-7288-3e1ab952d484" } ] \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.freeze b/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.freeze index aceddb95a6c..e74a02fe592 100644 --- a/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.freeze +++ b/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.freeze @@ -1 +1 @@ -2025-12-10T09:23:52.700Z \ No newline at end of file +2026-03-11T14:50:01.182Z \ No newline at end of file diff --git a/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.json b/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.json index 3297b791ce4..d83ab198054 100644 --- a/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.json +++ b/src/test/resources/cassettes/features/v2/Update_deployment_rule_returns_OK_response.json @@ -3,7 +3,7 @@ "httpRequest": { "body": { "type": "JSON", - "json": "{\"data\":{\"attributes\":{\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testupdatedeploymentrulereturnsokresponse1765358632\",\"service\":\"my-service\"},\"type\":\"deployment_gate\"}}" + "json": "{\"data\":{\"attributes\":{\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testupdatedeploymentrulereturnsokresponse1773240601\",\"service\":\"my-service\"},\"type\":\"deployment_gate\"}}" }, "headers": {}, "method": "POST", @@ -12,7 +12,7 @@ "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"3acb9ac2-abba-4579-8697-79493b221d41\",\"type\":\"deployment_gate\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:52.735765Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testupdatedeploymentrulereturnsokresponse1765358632\",\"service\":\"my-service\",\"updated_at\":\"2025-12-10T09:23:52.735765Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"ad028916-c8f6-4489-bce4-f6216adfc63e\",\"type\":\"deployment_gate\",\"attributes\":{\"created_at\":\"2026-03-11T14:50:01.37369Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"env\":\"production\",\"identifier\":\"my-gate-testupdatedeploymentrulereturnsokresponse1773240601\",\"service\":\"my-service\",\"updated_at\":\"2026-03-11T14:50:01.37369Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -27,7 +27,7 @@ "timeToLive": { "unlimited": true }, - "id": "145162f9-d6a7-5cd5-9467-fc55d184ba15" + "id": "cd06c94d-4052-259d-1129-3508524e6e17" }, { "httpRequest": { @@ -37,12 +37,12 @@ }, "headers": {}, "method": "POST", - "path": "/api/v2/deployment_gates/3acb9ac2-abba-4579-8697-79493b221d41/rules", + "path": "/api/v2/deployment_gates/ad028916-c8f6-4489-bce4-f6216adfc63e/rules", "keepAlive": false, "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"ee04f24f-a980-4a28-a839-29911a632978\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:52.782282Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"3acb9ac2-abba-4579-8697-79493b221d41\",\"name\":\"My deployment rule\",\"options\":{},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2025-12-10T09:23:52.782282Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"930a603b-c799-4749-a465-3a9b4beb7dfb\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2026-03-11T14:50:01.635616Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"ad028916-c8f6-4489-bce4-f6216adfc63e\",\"name\":\"My deployment rule\",\"options\":{\"excluded_resources\":[]},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2026-03-11T14:50:01.635616Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -57,7 +57,7 @@ "timeToLive": { "unlimited": true }, - "id": "af285184-8e2e-cb60-1efa-5e586ac3acb9" + "id": "a750500e-ac5d-8423-0bb3-c7078d066e70" }, { "httpRequest": { @@ -67,12 +67,12 @@ }, "headers": {}, "method": "PUT", - "path": "/api/v2/deployment_gates/3acb9ac2-abba-4579-8697-79493b221d41/rules/ee04f24f-a980-4a28-a839-29911a632978", + "path": "/api/v2/deployment_gates/ad028916-c8f6-4489-bce4-f6216adfc63e/rules/930a603b-c799-4749-a465-3a9b4beb7dfb", "keepAlive": false, "secure": true }, "httpResponse": { - "body": "{\"data\":{\"id\":\"ee04f24f-a980-4a28-a839-29911a632978\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2025-12-10T09:23:52.782282Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"3acb9ac2-abba-4579-8697-79493b221d41\",\"name\":\"Updated deployment rule\",\"options\":{},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2025-12-10T09:23:52.843771Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", + "body": "{\"data\":{\"id\":\"930a603b-c799-4749-a465-3a9b4beb7dfb\",\"type\":\"deployment_rule\",\"attributes\":{\"created_at\":\"2026-03-11T14:50:01.635616Z\",\"created_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"},\"dry_run\":false,\"gate_id\":\"ad028916-c8f6-4489-bce4-f6216adfc63e\",\"name\":\"Updated deployment rule\",\"options\":{\"excluded_resources\":[]},\"type\":\"faulty_deployment_detection\",\"updated_at\":\"2026-03-11T14:50:01.929612Z\",\"updated_by\":{\"id\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\",\"name\":\"CI Account\",\"handle\":\"9919ec9b-ebc7-49ee-8dc8-03626e717cca\"}}}}", "headers": { "Content-Type": [ "application/vnd.api+json" @@ -87,13 +87,13 @@ "timeToLive": { "unlimited": true }, - "id": "8e74cbf3-c27b-5335-5cbf-770661a67aa9" + "id": "611544fc-1204-bd62-0ded-5a08710dcad9" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v2/deployment_gates/3acb9ac2-abba-4579-8697-79493b221d41/rules/ee04f24f-a980-4a28-a839-29911a632978", + "path": "/api/v2/deployment_gates/ad028916-c8f6-4489-bce4-f6216adfc63e/rules/930a603b-c799-4749-a465-3a9b4beb7dfb", "keepAlive": false, "secure": true }, @@ -108,13 +108,13 @@ "timeToLive": { "unlimited": true }, - "id": "c8425d41-2083-3bc3-bf28-f3ad164ffc22" + "id": "bf43e431-a699-514b-5bf9-fb3a95681b1a" }, { "httpRequest": { "headers": {}, "method": "DELETE", - "path": "/api/v2/deployment_gates/3acb9ac2-abba-4579-8697-79493b221d41", + "path": "/api/v2/deployment_gates/ad028916-c8f6-4489-bce4-f6216adfc63e", "keepAlive": false, "secure": true }, @@ -129,6 +129,6 @@ "timeToLive": { "unlimited": true }, - "id": "0da16de6-8d6d-7baf-f55b-b71f9e912045" + "id": "54fd4a89-1566-1086-0e15-9058b5448047" } ] \ No newline at end of file diff --git a/src/test/resources/com/datadog/api/client/v2/api/deployment_gates.feature b/src/test/resources/com/datadog/api/client/v2/api/deployment_gates.feature index cb0c5a1262d..7dc5575c56b 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/deployment_gates.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/deployment_gates.feature @@ -62,6 +62,7 @@ Feature: Deployment Gates And body with value {"data": {"attributes": {"dry_run": false, "name": "My deployment rule", "options": {"excluded_resources": []}, "type": "faulty_deployment_detection"}, "type": "deployment_rule"}} When the request is sent Then the response status is 200 OK + And the response "data.attributes.options.excluded_resources" is equal to [] @team:DataDog/ci-app-backend Scenario: Delete deployment gate returns "Bad Request" response @@ -206,6 +207,7 @@ Feature: Deployment Gates And request contains "id" parameter from "deployment_rule.data.id" When the request is sent Then the response status is 200 OK + And the response "data.attributes.options.excluded_resources" is equal to [] @generated @skip @team:DataDog/ci-app-backend Scenario: Get rules for a deployment gate returns "Bad request." response @@ -304,3 +306,4 @@ Feature: Deployment Gates And body with value {"data": {"attributes": {"dry_run": false, "name": "Updated deployment rule", "options": {"excluded_resources": []}}, "type": "deployment_rule"}} When the request is sent Then the response status is 200 OK + And the response "data.attributes.options.excluded_resources" is equal to []