diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index fd91a63251b..6de1beba222 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -70755,6 +70755,32 @@ components: required: - data type: object + MonitorConfigPolicyDowntimePolicy: + additionalProperties: false + description: Downtime duration attributes of a monitor configuration policy. + properties: + max_duration_ms: + description: The maximum allowed downtime duration, in milliseconds. + example: 3600000 + format: int64 + minimum: 1 + type: integer + required: + - max_duration_ms + type: object + MonitorConfigPolicyDowntimePolicyCreateRequest: + additionalProperties: false + description: Downtime duration attributes of a monitor configuration policy. + properties: + max_duration_ms: + description: The maximum allowed downtime duration, in milliseconds. + example: 3600000 + format: int64 + minimum: 1 + type: integer + required: + - max_duration_ms + type: object MonitorConfigPolicyEditData: description: A monitor configuration policy data. properties: @@ -70792,10 +70818,12 @@ components: description: Configuration for the policy. oneOf: - $ref: '#/components/schemas/MonitorConfigPolicyTagPolicy' + - $ref: '#/components/schemas/MonitorConfigPolicyDowntimePolicy' MonitorConfigPolicyPolicyCreateRequest: description: Configuration for the policy. oneOf: - $ref: '#/components/schemas/MonitorConfigPolicyTagPolicyCreateRequest' + - $ref: '#/components/schemas/MonitorConfigPolicyDowntimePolicyCreateRequest' MonitorConfigPolicyResourceType: default: monitor-config-policy description: Monitor configuration policy resource type. @@ -70824,6 +70852,7 @@ components: $ref: '#/components/schemas/MonitorConfigPolicyResourceType' type: object MonitorConfigPolicyTagPolicy: + additionalProperties: false description: Tag attributes of a monitor configuration policy. properties: tag_key: @@ -70845,6 +70874,7 @@ components: type: array type: object MonitorConfigPolicyTagPolicyCreateRequest: + additionalProperties: false description: Tag attributes of a monitor configuration policy. properties: tag_key: @@ -70871,13 +70901,18 @@ components: type: object MonitorConfigPolicyType: default: tag - description: The monitor configuration policy type. + description: |- + The monitor configuration policy type. + `tag` enforces required tags on monitors. + `downtime` sets a maximum downtime duration for the organization. enum: - tag + - downtime example: "tag" type: string x-enum-varnames: - TAG + - DOWNTIME MonitorDowntimeMatchResourceType: default: downtime_match description: Monitor Downtime Match resource type. @@ -181032,6 +181067,16 @@ paths: policy_type: tag id: "00000000-0000-1234-0000-000000000000" type: monitor-config-policy + downtime: + summary: Downtime duration policy + value: + data: + - attributes: + policy: + max_duration_ms: 3600000 + policy_type: downtime + id: "00000000-0000-1234-0000-000000000000" + type: monitor-config-policy schema: $ref: '#/components/schemas/MonitorConfigPolicyListResponse' description: OK @@ -181074,6 +181119,15 @@ paths: - staging policy_type: tag type: monitor-config-policy + downtime: + summary: Downtime duration policy + value: + data: + attributes: + policy: + max_duration_ms: 3600000 + policy_type: downtime + type: monitor-config-policy schema: $ref: '#/components/schemas/MonitorConfigPolicyCreateRequest' description: Create a monitor configuration policy request body. @@ -181096,6 +181150,16 @@ paths: policy_type: tag id: "00000000-0000-1234-0000-000000000000" type: monitor-config-policy + downtime: + summary: Downtime duration policy + value: + data: + attributes: + policy: + max_duration_ms: 3600000 + policy_type: downtime + id: "00000000-0000-1234-0000-000000000000" + type: monitor-config-policy schema: $ref: '#/components/schemas/MonitorConfigPolicyResponse' description: OK @@ -181192,6 +181256,16 @@ paths: policy_type: tag id: "00000000-0000-1234-0000-000000000000" type: monitor-config-policy + downtime: + summary: Downtime duration policy + value: + data: + attributes: + policy: + max_duration_ms: 3600000 + policy_type: downtime + id: "00000000-0000-1234-0000-000000000000" + type: monitor-config-policy schema: $ref: '#/components/schemas/MonitorConfigPolicyResponse' description: OK @@ -181249,6 +181323,16 @@ paths: policy_type: tag id: 00000000-0000-1234-0000-000000000000 type: monitor-config-policy + downtime: + summary: Downtime duration policy + value: + data: + attributes: + policy: + max_duration_ms: 3600000 + policy_type: downtime + id: 00000000-0000-1234-0000-000000000000 + type: monitor-config-policy schema: $ref: '#/components/schemas/MonitorConfigPolicyEditRequest' description: Description of the update. @@ -181271,6 +181355,16 @@ paths: policy_type: tag id: "00000000-0000-1234-0000-000000000000" type: monitor-config-policy + downtime: + summary: Downtime duration policy + value: + data: + attributes: + policy: + max_duration_ms: 3600000 + policy_type: downtime + id: "00000000-0000-1234-0000-000000000000" + type: monitor-config-policy schema: $ref: '#/components/schemas/MonitorConfigPolicyResponse' description: OK diff --git a/examples/v2/monitors/CreateMonitorConfigPolicy_1934105875.java b/examples/v2/monitors/CreateMonitorConfigPolicy_1934105875.java new file mode 100644 index 00000000000..d21b8487b8a --- /dev/null +++ b/examples/v2/monitors/CreateMonitorConfigPolicy_1934105875.java @@ -0,0 +1,44 @@ +// Create a downtime duration monitor configuration policy returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.MonitorsApi; +import com.datadog.api.client.v2.model.MonitorConfigPolicyAttributeCreateRequest; +import com.datadog.api.client.v2.model.MonitorConfigPolicyCreateData; +import com.datadog.api.client.v2.model.MonitorConfigPolicyCreateRequest; +import com.datadog.api.client.v2.model.MonitorConfigPolicyDowntimePolicyCreateRequest; +import com.datadog.api.client.v2.model.MonitorConfigPolicyPolicyCreateRequest; +import com.datadog.api.client.v2.model.MonitorConfigPolicyResourceType; +import com.datadog.api.client.v2.model.MonitorConfigPolicyResponse; +import com.datadog.api.client.v2.model.MonitorConfigPolicyType; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + MonitorsApi apiInstance = new MonitorsApi(defaultClient); + + MonitorConfigPolicyCreateRequest body = + new MonitorConfigPolicyCreateRequest() + .data( + new MonitorConfigPolicyCreateData() + .attributes( + new MonitorConfigPolicyAttributeCreateRequest() + .policyType(MonitorConfigPolicyType.DOWNTIME) + .policy( + new MonitorConfigPolicyPolicyCreateRequest( + new MonitorConfigPolicyDowntimePolicyCreateRequest() + .maxDurationMs(3600000L)))) + .type(MonitorConfigPolicyResourceType.MONITOR_CONFIG_POLICY)); + + try { + MonitorConfigPolicyResponse result = apiInstance.createMonitorConfigPolicy(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling MonitorsApi#createMonitorConfigPolicy"); + 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/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeCreateRequest.java index 7da8b44cdb3..9df6131a995 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeCreateRequest.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeCreateRequest.java @@ -78,7 +78,8 @@ public MonitorConfigPolicyAttributeCreateRequest policyType(MonitorConfigPolicyT } /** - * The monitor configuration policy type. + * The monitor configuration policy type. tag enforces required tags on monitors. + * downtime sets a maximum downtime duration for the organization. * * @return policyType */ diff --git a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeEditRequest.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeEditRequest.java index e28d95b418e..ac1df8db090 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeEditRequest.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeEditRequest.java @@ -76,7 +76,8 @@ public MonitorConfigPolicyAttributeEditRequest policyType(MonitorConfigPolicyTyp } /** - * The monitor configuration policy type. + * The monitor configuration policy type. tag enforces required tags on monitors. + * downtime sets a maximum downtime duration for the organization. * * @return policyType */ diff --git a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeResponse.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeResponse.java index 5db1084b8eb..30851999f0c 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeResponse.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyAttributeResponse.java @@ -63,7 +63,8 @@ public MonitorConfigPolicyAttributeResponse policyType(MonitorConfigPolicyType p } /** - * The monitor configuration policy type. + * The monitor configuration policy type. tag enforces required tags on monitors. + * downtime sets a maximum downtime duration for the organization. * * @return policyType */ diff --git a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyDowntimePolicy.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyDowntimePolicy.java new file mode 100644 index 00000000000..b7d494d26b3 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyDowntimePolicy.java @@ -0,0 +1,90 @@ +/* + * 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.Objects; + +/** Downtime duration attributes of a monitor configuration policy. */ +@JsonPropertyOrder({MonitorConfigPolicyDowntimePolicy.JSON_PROPERTY_MAX_DURATION_MS}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class MonitorConfigPolicyDowntimePolicy { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_MAX_DURATION_MS = "max_duration_ms"; + private Long maxDurationMs; + + public MonitorConfigPolicyDowntimePolicy() {} + + @JsonCreator + public MonitorConfigPolicyDowntimePolicy( + @JsonProperty(required = true, value = JSON_PROPERTY_MAX_DURATION_MS) Long maxDurationMs) { + this.maxDurationMs = maxDurationMs; + } + + public MonitorConfigPolicyDowntimePolicy maxDurationMs(Long maxDurationMs) { + this.maxDurationMs = maxDurationMs; + return this; + } + + /** + * The maximum allowed downtime duration, in milliseconds. minimum: 1 + * + * @return maxDurationMs + */ + @JsonProperty(JSON_PROPERTY_MAX_DURATION_MS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getMaxDurationMs() { + return maxDurationMs; + } + + public void setMaxDurationMs(Long maxDurationMs) { + this.maxDurationMs = maxDurationMs; + } + + /** Return true if this MonitorConfigPolicyDowntimePolicy object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + MonitorConfigPolicyDowntimePolicy monitorConfigPolicyDowntimePolicy = + (MonitorConfigPolicyDowntimePolicy) o; + return Objects.equals(this.maxDurationMs, monitorConfigPolicyDowntimePolicy.maxDurationMs); + } + + @Override + public int hashCode() { + return Objects.hash(maxDurationMs); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class MonitorConfigPolicyDowntimePolicy {\n"); + sb.append(" maxDurationMs: ").append(toIndentedString(maxDurationMs)).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/MonitorConfigPolicyDowntimePolicyCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyDowntimePolicyCreateRequest.java new file mode 100644 index 00000000000..94e4bff54cf --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyDowntimePolicyCreateRequest.java @@ -0,0 +1,91 @@ +/* + * 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.Objects; + +/** Downtime duration attributes of a monitor configuration policy. */ +@JsonPropertyOrder({MonitorConfigPolicyDowntimePolicyCreateRequest.JSON_PROPERTY_MAX_DURATION_MS}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class MonitorConfigPolicyDowntimePolicyCreateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_MAX_DURATION_MS = "max_duration_ms"; + private Long maxDurationMs; + + public MonitorConfigPolicyDowntimePolicyCreateRequest() {} + + @JsonCreator + public MonitorConfigPolicyDowntimePolicyCreateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_MAX_DURATION_MS) Long maxDurationMs) { + this.maxDurationMs = maxDurationMs; + } + + public MonitorConfigPolicyDowntimePolicyCreateRequest maxDurationMs(Long maxDurationMs) { + this.maxDurationMs = maxDurationMs; + return this; + } + + /** + * The maximum allowed downtime duration, in milliseconds. minimum: 1 + * + * @return maxDurationMs + */ + @JsonProperty(JSON_PROPERTY_MAX_DURATION_MS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getMaxDurationMs() { + return maxDurationMs; + } + + public void setMaxDurationMs(Long maxDurationMs) { + this.maxDurationMs = maxDurationMs; + } + + /** Return true if this MonitorConfigPolicyDowntimePolicyCreateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + MonitorConfigPolicyDowntimePolicyCreateRequest monitorConfigPolicyDowntimePolicyCreateRequest = + (MonitorConfigPolicyDowntimePolicyCreateRequest) o; + return Objects.equals( + this.maxDurationMs, monitorConfigPolicyDowntimePolicyCreateRequest.maxDurationMs); + } + + @Override + public int hashCode() { + return Objects.hash(maxDurationMs); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class MonitorConfigPolicyDowntimePolicyCreateRequest {\n"); + sb.append(" maxDurationMs: ").append(toIndentedString(maxDurationMs)).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/MonitorConfigPolicyPolicy.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyPolicy.java index b82b7173103..5703bb946cf 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyPolicy.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyPolicy.java @@ -125,6 +125,52 @@ public MonitorConfigPolicyPolicy deserialize(JsonParser jp, DeserializationConte log.log(Level.FINER, "Input data does not match schema 'MonitorConfigPolicyTagPolicy'", e); } + // deserialize MonitorConfigPolicyDowntimePolicy + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (MonitorConfigPolicyDowntimePolicy.class.equals(Integer.class) + || MonitorConfigPolicyDowntimePolicy.class.equals(Long.class) + || MonitorConfigPolicyDowntimePolicy.class.equals(Float.class) + || MonitorConfigPolicyDowntimePolicy.class.equals(Double.class) + || MonitorConfigPolicyDowntimePolicy.class.equals(Boolean.class) + || MonitorConfigPolicyDowntimePolicy.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((MonitorConfigPolicyDowntimePolicy.class.equals(Integer.class) + || MonitorConfigPolicyDowntimePolicy.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((MonitorConfigPolicyDowntimePolicy.class.equals(Float.class) + || MonitorConfigPolicyDowntimePolicy.class.equals(Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (MonitorConfigPolicyDowntimePolicy.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (MonitorConfigPolicyDowntimePolicy.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = tree.traverse(jp.getCodec()).readValueAs(MonitorConfigPolicyDowntimePolicy.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 (!((MonitorConfigPolicyDowntimePolicy) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log(Level.FINER, "Input data matches schema 'MonitorConfigPolicyDowntimePolicy'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, "Input data does not match schema 'MonitorConfigPolicyDowntimePolicy'", e); + } + MonitorConfigPolicyPolicy ret = new MonitorConfigPolicyPolicy(); if (match == 1) { ret.setActualInstance(deserialized); @@ -159,8 +205,16 @@ public MonitorConfigPolicyPolicy(MonitorConfigPolicyTagPolicy o) { setActualInstance(o); } + public MonitorConfigPolicyPolicy(MonitorConfigPolicyDowntimePolicy o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + static { schemas.put("MonitorConfigPolicyTagPolicy", new GenericType() {}); + schemas.put( + "MonitorConfigPolicyDowntimePolicy", + new GenericType() {}); JSON.registerDescendants(MonitorConfigPolicyPolicy.class, Collections.unmodifiableMap(schemas)); } @@ -171,7 +225,8 @@ public Map getSchemas() { /** * Set the instance that matches the oneOf child schema, check the instance parameter is valid - * against the oneOf child schemas: MonitorConfigPolicyTagPolicy + * against the oneOf child schemas: MonitorConfigPolicyTagPolicy, + * MonitorConfigPolicyDowntimePolicy * *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a * composed schema (allOf, anyOf, oneOf). @@ -182,18 +237,26 @@ public void setActualInstance(Object instance) { super.setActualInstance(instance); return; } + if (JSON.isInstanceOf( + MonitorConfigPolicyDowntimePolicy.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 MonitorConfigPolicyTagPolicy"); + throw new RuntimeException( + "Invalid instance type. Must be MonitorConfigPolicyTagPolicy," + + " MonitorConfigPolicyDowntimePolicy"); } /** - * Get the actual instance, which can be the following: MonitorConfigPolicyTagPolicy + * Get the actual instance, which can be the following: MonitorConfigPolicyTagPolicy, + * MonitorConfigPolicyDowntimePolicy * - * @return The actual instance (MonitorConfigPolicyTagPolicy) + * @return The actual instance (MonitorConfigPolicyTagPolicy, MonitorConfigPolicyDowntimePolicy) */ @Override public Object getActualInstance() { @@ -210,4 +273,16 @@ public Object getActualInstance() { public MonitorConfigPolicyTagPolicy getMonitorConfigPolicyTagPolicy() throws ClassCastException { return (MonitorConfigPolicyTagPolicy) super.getActualInstance(); } + + /** + * Get the actual instance of `MonitorConfigPolicyDowntimePolicy`. If the actual instance is not + * `MonitorConfigPolicyDowntimePolicy`, the ClassCastException will be thrown. + * + * @return The actual instance of `MonitorConfigPolicyDowntimePolicy` + * @throws ClassCastException if the instance is not `MonitorConfigPolicyDowntimePolicy` + */ + public MonitorConfigPolicyDowntimePolicy getMonitorConfigPolicyDowntimePolicy() + throws ClassCastException { + return (MonitorConfigPolicyDowntimePolicy) super.getActualInstance(); + } } diff --git a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyPolicyCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyPolicyCreateRequest.java index f67122bc389..50e16cb7587 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyPolicyCreateRequest.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyPolicyCreateRequest.java @@ -141,6 +141,59 @@ public MonitorConfigPolicyPolicyCreateRequest deserialize( e); } + // deserialize MonitorConfigPolicyDowntimePolicyCreateRequest + try { + boolean attemptParsing = true; + // ensure that we respect type coercion as set on the client ObjectMapper + if (MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Integer.class) + || MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Long.class) + || MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Float.class) + || MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Double.class) + || MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Boolean.class) + || MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(String.class)) { + attemptParsing = typeCoercion; + if (!attemptParsing) { + attemptParsing |= + ((MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Integer.class) + || MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Long.class)) + && token == JsonToken.VALUE_NUMBER_INT); + attemptParsing |= + ((MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Float.class) + || MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals( + Double.class)) + && (token == JsonToken.VALUE_NUMBER_FLOAT + || token == JsonToken.VALUE_NUMBER_INT)); + attemptParsing |= + (MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(Boolean.class) + && (token == JsonToken.VALUE_FALSE || token == JsonToken.VALUE_TRUE)); + attemptParsing |= + (MonitorConfigPolicyDowntimePolicyCreateRequest.class.equals(String.class) + && token == JsonToken.VALUE_STRING); + } + } + if (attemptParsing) { + tmp = + tree.traverse(jp.getCodec()) + .readValueAs(MonitorConfigPolicyDowntimePolicyCreateRequest.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 (!((MonitorConfigPolicyDowntimePolicyCreateRequest) tmp).unparsed) { + deserialized = tmp; + match++; + } + log.log( + Level.FINER, + "Input data matches schema 'MonitorConfigPolicyDowntimePolicyCreateRequest'"); + } + } catch (Exception e) { + // deserialization failed, continue + log.log( + Level.FINER, + "Input data does not match schema 'MonitorConfigPolicyDowntimePolicyCreateRequest'", + e); + } + MonitorConfigPolicyPolicyCreateRequest ret = new MonitorConfigPolicyPolicyCreateRequest(); if (match == 1) { ret.setActualInstance(deserialized); @@ -176,10 +229,18 @@ public MonitorConfigPolicyPolicyCreateRequest(MonitorConfigPolicyTagPolicyCreate setActualInstance(o); } + public MonitorConfigPolicyPolicyCreateRequest(MonitorConfigPolicyDowntimePolicyCreateRequest o) { + super("oneOf", Boolean.FALSE); + setActualInstance(o); + } + static { schemas.put( "MonitorConfigPolicyTagPolicyCreateRequest", new GenericType() {}); + schemas.put( + "MonitorConfigPolicyDowntimePolicyCreateRequest", + new GenericType() {}); JSON.registerDescendants( MonitorConfigPolicyPolicyCreateRequest.class, Collections.unmodifiableMap(schemas)); } @@ -191,7 +252,8 @@ public Map getSchemas() { /** * Set the instance that matches the oneOf child schema, check the instance parameter is valid - * against the oneOf child schemas: MonitorConfigPolicyTagPolicyCreateRequest + * against the oneOf child schemas: MonitorConfigPolicyTagPolicyCreateRequest, + * MonitorConfigPolicyDowntimePolicyCreateRequest * *

It could be an instance of the 'oneOf' schemas. The oneOf child schemas may themselves be a * composed schema (allOf, anyOf, oneOf). @@ -203,19 +265,27 @@ public void setActualInstance(Object instance) { super.setActualInstance(instance); return; } + if (JSON.isInstanceOf( + MonitorConfigPolicyDowntimePolicyCreateRequest.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 MonitorConfigPolicyTagPolicyCreateRequest"); + "Invalid instance type. Must be MonitorConfigPolicyTagPolicyCreateRequest," + + " MonitorConfigPolicyDowntimePolicyCreateRequest"); } /** - * Get the actual instance, which can be the following: MonitorConfigPolicyTagPolicyCreateRequest + * Get the actual instance, which can be the following: MonitorConfigPolicyTagPolicyCreateRequest, + * MonitorConfigPolicyDowntimePolicyCreateRequest * - * @return The actual instance (MonitorConfigPolicyTagPolicyCreateRequest) + * @return The actual instance (MonitorConfigPolicyTagPolicyCreateRequest, + * MonitorConfigPolicyDowntimePolicyCreateRequest) */ @Override public Object getActualInstance() { @@ -233,4 +303,18 @@ public MonitorConfigPolicyTagPolicyCreateRequest getMonitorConfigPolicyTagPolicy throws ClassCastException { return (MonitorConfigPolicyTagPolicyCreateRequest) super.getActualInstance(); } + + /** + * Get the actual instance of `MonitorConfigPolicyDowntimePolicyCreateRequest`. If the actual + * instance is not `MonitorConfigPolicyDowntimePolicyCreateRequest`, the ClassCastException will + * be thrown. + * + * @return The actual instance of `MonitorConfigPolicyDowntimePolicyCreateRequest` + * @throws ClassCastException if the instance is not + * `MonitorConfigPolicyDowntimePolicyCreateRequest` + */ + public MonitorConfigPolicyDowntimePolicyCreateRequest + getMonitorConfigPolicyDowntimePolicyCreateRequest() throws ClassCastException { + return (MonitorConfigPolicyDowntimePolicyCreateRequest) super.getActualInstance(); + } } diff --git a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicy.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicy.java index 62fbdfd2334..f2efa713b93 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicy.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicy.java @@ -6,16 +6,12 @@ package com.datadog.api.client.v2.model; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; 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.HashMap; import java.util.List; -import java.util.Map; import java.util.Objects; /** Tag attributes of a monitor configuration policy. */ @@ -108,52 +104,6 @@ public void setValidTagValues(List validTagValues) { this.validTagValues = validTagValues; } - /** - * A container for additional, undeclared properties. This is a holder for any undeclared - * properties as specified with the 'additionalProperties' keyword in the OAS document. - */ - private Map additionalProperties; - - /** - * Set the additional (undeclared) property with the specified name and value. If the property - * does not already exist, create it otherwise replace it. - * - * @param key The arbitrary key to set - * @param value The associated value - * @return MonitorConfigPolicyTagPolicy - */ - @JsonAnySetter - public MonitorConfigPolicyTagPolicy putAdditionalProperty(String key, Object value) { - if (this.additionalProperties == null) { - this.additionalProperties = new HashMap(); - } - this.additionalProperties.put(key, value); - return this; - } - - /** - * Return the additional (undeclared) property. - * - * @return The additional properties - */ - @JsonAnyGetter - public Map getAdditionalProperties() { - return additionalProperties; - } - - /** - * Return the additional (undeclared) property with the specified name. - * - * @param key The arbitrary key to get - * @return The specific additional property for the given key - */ - public Object getAdditionalProperty(String key) { - if (this.additionalProperties == null) { - return null; - } - return this.additionalProperties.get(key); - } - /** Return true if this MonitorConfigPolicyTagPolicy object is equal to o. */ @Override public boolean equals(Object o) { @@ -166,14 +116,12 @@ public boolean equals(Object o) { MonitorConfigPolicyTagPolicy monitorConfigPolicyTagPolicy = (MonitorConfigPolicyTagPolicy) o; return Objects.equals(this.tagKey, monitorConfigPolicyTagPolicy.tagKey) && Objects.equals(this.tagKeyRequired, monitorConfigPolicyTagPolicy.tagKeyRequired) - && Objects.equals(this.validTagValues, monitorConfigPolicyTagPolicy.validTagValues) - && Objects.equals( - this.additionalProperties, monitorConfigPolicyTagPolicy.additionalProperties); + && Objects.equals(this.validTagValues, monitorConfigPolicyTagPolicy.validTagValues); } @Override public int hashCode() { - return Objects.hash(tagKey, tagKeyRequired, validTagValues, additionalProperties); + return Objects.hash(tagKey, tagKeyRequired, validTagValues); } @Override @@ -183,9 +131,6 @@ public String toString() { sb.append(" tagKey: ").append(toIndentedString(tagKey)).append("\n"); sb.append(" tagKeyRequired: ").append(toIndentedString(tagKeyRequired)).append("\n"); sb.append(" validTagValues: ").append(toIndentedString(validTagValues)).append("\n"); - sb.append(" additionalProperties: ") - .append(toIndentedString(additionalProperties)) - .append("\n"); sb.append('}'); return sb.toString(); } diff --git a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicyCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicyCreateRequest.java index 0ff2c3db77d..b3d26e5bae8 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicyCreateRequest.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyTagPolicyCreateRequest.java @@ -6,17 +6,13 @@ package com.datadog.api.client.v2.model; -import com.fasterxml.jackson.annotation.JsonAnyGetter; -import com.fasterxml.jackson.annotation.JsonAnySetter; 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.HashMap; import java.util.List; -import java.util.Map; import java.util.Objects; /** Tag attributes of a monitor configuration policy. */ @@ -117,52 +113,6 @@ public void setValidTagValues(List validTagValues) { this.validTagValues = validTagValues; } - /** - * A container for additional, undeclared properties. This is a holder for any undeclared - * properties as specified with the 'additionalProperties' keyword in the OAS document. - */ - private Map additionalProperties; - - /** - * Set the additional (undeclared) property with the specified name and value. If the property - * does not already exist, create it otherwise replace it. - * - * @param key The arbitrary key to set - * @param value The associated value - * @return MonitorConfigPolicyTagPolicyCreateRequest - */ - @JsonAnySetter - public MonitorConfigPolicyTagPolicyCreateRequest putAdditionalProperty(String key, Object value) { - if (this.additionalProperties == null) { - this.additionalProperties = new HashMap(); - } - this.additionalProperties.put(key, value); - return this; - } - - /** - * Return the additional (undeclared) property. - * - * @return The additional properties - */ - @JsonAnyGetter - public Map getAdditionalProperties() { - return additionalProperties; - } - - /** - * Return the additional (undeclared) property with the specified name. - * - * @param key The arbitrary key to get - * @return The specific additional property for the given key - */ - public Object getAdditionalProperty(String key) { - if (this.additionalProperties == null) { - return null; - } - return this.additionalProperties.get(key); - } - /** Return true if this MonitorConfigPolicyTagPolicyCreateRequest object is equal to o. */ @Override public boolean equals(Object o) { @@ -178,15 +128,12 @@ public boolean equals(Object o) { && Objects.equals( this.tagKeyRequired, monitorConfigPolicyTagPolicyCreateRequest.tagKeyRequired) && Objects.equals( - this.validTagValues, monitorConfigPolicyTagPolicyCreateRequest.validTagValues) - && Objects.equals( - this.additionalProperties, - monitorConfigPolicyTagPolicyCreateRequest.additionalProperties); + this.validTagValues, monitorConfigPolicyTagPolicyCreateRequest.validTagValues); } @Override public int hashCode() { - return Objects.hash(tagKey, tagKeyRequired, validTagValues, additionalProperties); + return Objects.hash(tagKey, tagKeyRequired, validTagValues); } @Override @@ -196,9 +143,6 @@ public String toString() { sb.append(" tagKey: ").append(toIndentedString(tagKey)).append("\n"); sb.append(" tagKeyRequired: ").append(toIndentedString(tagKeyRequired)).append("\n"); sb.append(" validTagValues: ").append(toIndentedString(validTagValues)).append("\n"); - sb.append(" additionalProperties: ") - .append(toIndentedString(additionalProperties)) - .append("\n"); sb.append('}'); return sb.toString(); } diff --git a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyType.java b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyType.java index fc3f5e6d4d5..794be73a6d1 100644 --- a/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyType.java +++ b/src/main/java/com/datadog/api/client/v2/model/MonitorConfigPolicyType.java @@ -18,13 +18,18 @@ import java.util.HashSet; import java.util.Set; -/** The monitor configuration policy type. */ +/** + * The monitor configuration policy type. tag enforces required tags on monitors. + * downtime sets a maximum downtime duration for the organization. + */ @JsonSerialize(using = MonitorConfigPolicyType.MonitorConfigPolicyTypeSerializer.class) public class MonitorConfigPolicyType extends ModelEnum { - private static final Set allowedValues = new HashSet(Arrays.asList("tag")); + private static final Set allowedValues = + new HashSet(Arrays.asList("tag", "downtime")); public static final MonitorConfigPolicyType TAG = new MonitorConfigPolicyType("tag"); + public static final MonitorConfigPolicyType DOWNTIME = new MonitorConfigPolicyType("downtime"); MonitorConfigPolicyType(String value) { super(value, allowedValues); diff --git a/src/test/resources/com/datadog/api/client/v2/api/given.json b/src/test/resources/com/datadog/api/client/v2/api/given.json index 89abdd8c369..2f37013a774 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/given.json +++ b/src/test/resources/com/datadog/api/client/v2/api/given.json @@ -1050,6 +1050,18 @@ "tag": "Monitors", "operationId": "CreateMonitorNotificationRule" }, + { + "parameters": [ + { + "name": "body", + "value": "{\n \"data\": {\n \"type\": \"monitor-config-policy\",\n \"attributes\": {\n \"policy_type\": \"downtime\",\n \"policy\": {\n \"max_duration_ms\": 3600000\n }\n }\n }\n}" + } + ], + "step": "there is a valid \"monitor_configuration_downtime_policy\" in the system", + "key": "monitor_configuration_downtime_policy", + "tag": "Monitors", + "operationId": "CreateMonitorConfigPolicy" + }, { "parameters": [ { diff --git a/src/test/resources/com/datadog/api/client/v2/api/monitors.feature b/src/test/resources/com/datadog/api/client/v2/api/monitors.feature index 1e7e907c9f0..8d30dee5af0 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/monitors.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/monitors.feature @@ -11,6 +11,16 @@ Feature: Monitors And a valid "appKeyAuth" key in the system And an instance of "Monitors" API + @team:DataDog/monitor-app + Scenario: Create a downtime duration monitor configuration policy returns "OK" response + Given new "CreateMonitorConfigPolicy" request + And body with value {"data": {"attributes": {"policy_type": "downtime", "policy": {"max_duration_ms": 3600000}}, "type": "monitor-config-policy"}} + When the request is sent + Then the response status is 200 OK + And the response "data.type" is equal to "monitor-config-policy" + And the response "data.attributes.policy_type" is equal to "downtime" + And the response "data.attributes.policy.max_duration_ms" is equal to 3600000 + @skip-validation @team:DataDog/monitor-app Scenario: Create a monitor configuration policy returns "Bad Request" response Given new "CreateMonitorConfigPolicy" request diff --git a/src/test/resources/generated-test/test-runner-data/manifest.json b/src/test/resources/generated-test/test-runner-data/manifest.json index 3baf593f3b5..796d64c10fd 100644 --- a/src/test/resources/generated-test/test-runner-data/manifest.json +++ b/src/test/resources/generated-test/test-runner-data/manifest.json @@ -7413,6 +7413,13 @@ "scenario": "Unstar a Model Lab project returns \"No Content\" response", "version": "v2" }, + { + "feature": "Monitors", + "feature_file": "../../com/datadog/api/client/v2/api/monitors.feature", + "file": "v2/monitors/create-a-downtime-duration-monitor-configuration-policy-returns-ok-response.json", + "scenario": "Create a downtime duration monitor configuration policy returns \"OK\" response", + "version": "v2" + }, { "feature": "Monitors", "feature_file": "../../com/datadog/api/client/v2/api/monitors.feature", diff --git a/src/test/resources/generated-test/test-runner-data/v2/monitors/create-a-downtime-duration-monitor-configuration-policy-returns-ok-response.json b/src/test/resources/generated-test/test-runner-data/v2/monitors/create-a-downtime-duration-monitor-configuration-policy-returns-ok-response.json new file mode 100644 index 00000000000..bf45418e0f8 --- /dev/null +++ b/src/test/resources/generated-test/test-runner-data/v2/monitors/create-a-downtime-duration-monitor-configuration-policy-returns-ok-response.json @@ -0,0 +1,36 @@ +{ + "api": "Monitors", + "expected_status": 200, + "feature": "Monitors", + "id": "v2/Monitors/Create a downtime duration monitor configuration policy returns \"OK\" response", + "operation_id": "CreateMonitorConfigPolicy", + "request": { + "body": { + "schema": { + "format": null, + "ref": "MonitorConfigPolicyCreateRequest", + "type": "object" + }, + "source": "inline", + "value": { + "data": { + "attributes": { + "policy": { + "max_duration_ms": 3600000 + }, + "policy_type": "downtime" + }, + "type": "monitor-config-policy" + } + } + }, + "content_type": "application/json", + "method": "POST", + "pagination": false, + "parameters": [], + "path": "/api/v2/monitor/policy" + }, + "scenario": "Create a downtime duration monitor configuration policy returns \"OK\" response", + "schema_version": 1, + "version": "v2" +} diff --git a/src/test/resources/generated-test/test-server-data/v2/monitors.json b/src/test/resources/generated-test/test-server-data/v2/monitors.json index 764ff7d6081..bec7dd9efd2 100644 --- a/src/test/resources/generated-test/test-server-data/v2/monitors.json +++ b/src/test/resources/generated-test/test-server-data/v2/monitors.json @@ -1,6 +1,70 @@ { "feature": "Monitors", "recordings": [ + { + "feature": "Monitors", + "frozen_at": "2026-09-09T18:01:07.161Z", + "interactions": [ + { + "request": { + "body": { + "type": "json", + "value": { + "data": { + "attributes": { + "policy": { + "max_duration_ms": 3600000 + }, + "policy_type": "downtime" + }, + "type": "monitor-config-policy" + } + } + }, + "content_type": "application/json", + "method": "POST", + "path": "/api/v2/monitor/policy", + "query": [] + }, + "response": { + "body": { + "encoding": "text", + "value": "{\"data\":{\"type\":\"monitor-config-policy\",\"id\":\"6fdd7893-ba30-4ddc-bb64-5dd94321edb2\",\"attributes\":{\"policy_type\":\"downtime\",\"policy\":{\"max_duration_ms\":3600000}}}}\n" + }, + "headers": { + "content-type": "application/json" + }, + "reason": "OK", + "status": 200 + } + }, + { + "request": { + "body": { + "type": "empty", + "value": null + }, + "content_type": "", + "method": "DELETE", + "path": "/api/v2/monitor/policy/6fdd7893-ba30-4ddc-bb64-5dd94321edb2", + "query": [] + }, + "response": { + "body": { + "encoding": "text", + "value": "" + }, + "headers": { + "content-type": "text/html; charset=utf-8" + }, + "reason": "No Content", + "status": 204 + } + } + ], + "scenario": "Create a downtime duration monitor configuration policy returns \"OK\" response", + "version": "v2" + }, { "feature": "Monitors", "frozen_at": "2025-05-29T02:36:15.011Z",