T getOrDefault(T value, T defaultValue) {
@@ -85,6 +111,14 @@ public OciCircuitBreaker getCircuitBreaker() {
return this.circuitBreaker;
}
+ public boolean isSyncRequestsAsyncCoreThreadTimeoutEnabled() {
+ return this.syncRequestsAsyncCoreThreadTimeoutEnabled;
+ }
+
+ public boolean isAsyncRequestsAsyncCoreThreadTimeoutEnabled() {
+ return this.asyncRequestsAsyncCoreThreadTimeoutEnabled;
+ }
+
public String toString() {
return "ClientConfiguration(connectionTimeoutMillis="
+ this.getConnectionTimeoutMillis()
@@ -98,6 +132,10 @@ public String toString() {
+ this.getCircuitBreakerConfiguration()
+ ", circuitBreaker="
+ this.getCircuitBreaker()
+ + ", syncRequestsAsyncCoreThreadTimeoutEnabled="
+ + this.isSyncRequestsAsyncCoreThreadTimeoutEnabled()
+ + ", asyncRequestsAsyncCoreThreadTimeoutEnabled="
+ + this.isAsyncRequestsAsyncCoreThreadTimeoutEnabled()
+ ")";
}
@@ -110,6 +148,8 @@ public static class ClientConfigurationBuilder {
private CircuitBreakerConfiguration circuitBreakerConfiguration;
private OciCircuitBreaker circuitBreaker;
+ private Boolean syncRequestsAsyncCoreThreadTimeoutEnabled;
+ private Boolean asyncRequestsAsyncCoreThreadTimeoutEnabled;
ClientConfigurationBuilder() {}
@@ -151,6 +191,40 @@ public ClientConfigurationBuilder circuitBreaker(OciCircuitBreaker circuitBreake
return this;
}
+ /**
+ * Opt in to allowing idle core threads in the SDK-managed async HTTP executor to time out.
+ * If unset, the default is controlled by the {@code
+ * oci.javasdk.sync.requests.async.core.thread.timeout.enabled} system property, or false if
+ * the property is absent.
+ *
+ * @param syncRequestsAsyncCoreThreadTimeoutEnabled whether idle core async executor threads
+ * may time out for sync request execution
+ * @return this builder
+ */
+ public ClientConfigurationBuilder syncRequestsAsyncCoreThreadTimeoutEnabled(
+ Boolean syncRequestsAsyncCoreThreadTimeoutEnabled) {
+ this.syncRequestsAsyncCoreThreadTimeoutEnabled =
+ syncRequestsAsyncCoreThreadTimeoutEnabled;
+ return this;
+ }
+
+ /**
+ * Opt in to allowing idle core threads in the SDK-managed async HTTP executor to time out
+ * for async request execution. If unset, the default is controlled by the {@code
+ * oci.javasdk.async.requests.async.core.thread.timeout.enabled} system property, or false
+ * if the property is absent.
+ *
+ * @param asyncRequestsAsyncCoreThreadTimeoutEnabled whether idle core async executor
+ * threads may time out for async request execution
+ * @return this builder
+ */
+ public ClientConfigurationBuilder asyncRequestsAsyncCoreThreadTimeoutEnabled(
+ Boolean asyncRequestsAsyncCoreThreadTimeoutEnabled) {
+ this.asyncRequestsAsyncCoreThreadTimeoutEnabled =
+ asyncRequestsAsyncCoreThreadTimeoutEnabled;
+ return this;
+ }
+
public ClientConfiguration build() {
return new ClientConfiguration(
connectionTimeoutMillis,
@@ -159,7 +233,9 @@ public ClientConfiguration build() {
disableDataBufferingOnUpload,
retryConfiguration,
circuitBreakerConfiguration,
- circuitBreaker);
+ circuitBreaker,
+ syncRequestsAsyncCoreThreadTimeoutEnabled,
+ asyncRequestsAsyncCoreThreadTimeoutEnabled);
}
public String toString() {
@@ -177,6 +253,10 @@ public String toString() {
+ this.circuitBreakerConfiguration
+ ", circuitBreaker="
+ this.circuitBreaker
+ + ", syncRequestsAsyncCoreThreadTimeoutEnabled="
+ + this.syncRequestsAsyncCoreThreadTimeoutEnabled
+ + ", asyncRequestsAsyncCoreThreadTimeoutEnabled="
+ + this.asyncRequestsAsyncCoreThreadTimeoutEnabled
+ ")";
}
}
diff --git a/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java b/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java
index eb0334e7ff2..c51f737f85d 100644
--- a/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java
+++ b/bmc-common/src/main/java/com/oracle/bmc/http/internal/BaseClient.java
@@ -355,6 +355,9 @@ public final synchronized void setEndpoint(String endpoint) {
.property(
StandardClientProperties.ASYNC_POOL_SIZE,
clientConfigurationToUse.getMaxAsyncThreads())
+ .property(
+ StandardClientProperties.ASYNC_POOL_CORE_THREAD_TIMEOUT_ENABLED,
+ isAsyncThreadPoolCoreThreadTimeoutEnabled())
.registerRequestInterceptor(
Priorities.AUTHENTICATION,
new AuthnClientFilter(defaultRequestSigner, requestSigners))
@@ -375,6 +378,12 @@ public final synchronized void setEndpoint(String endpoint) {
httpClient, circuitBreakerConfiguration);
}
+ private boolean isAsyncThreadPoolCoreThreadTimeoutEnabled() {
+ return this instanceof BaseAsyncClient
+ ? clientConfigurationToUse.isAsyncRequestsAsyncCoreThreadTimeoutEnabled()
+ : clientConfigurationToUse.isSyncRequestsAsyncCoreThreadTimeoutEnabled();
+ }
+
/**
* Get the endpoint of the client.
*
diff --git a/bmc-common/src/test/java/com/oracle/bmc/ClientConfigurationTest.java b/bmc-common/src/test/java/com/oracle/bmc/ClientConfigurationTest.java
new file mode 100644
index 00000000000..58a01c6035c
--- /dev/null
+++ b/bmc-common/src/test/java/com/oracle/bmc/ClientConfigurationTest.java
@@ -0,0 +1,42 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc;
+
+import org.junit.Test;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+public class ClientConfigurationTest {
+ @Test
+ public void asyncThreadPoolCoreThreadTimeoutControlsDisabledByDefault() {
+ ClientConfiguration configuration = ClientConfiguration.builder().build();
+
+ assertFalse(configuration.isSyncRequestsAsyncCoreThreadTimeoutEnabled());
+ assertFalse(configuration.isAsyncRequestsAsyncCoreThreadTimeoutEnabled());
+ }
+
+ @Test
+ public void syncRequestsAsyncCoreThreadTimeoutEnabledWhenOptedIn() {
+ ClientConfiguration configuration =
+ ClientConfiguration.builder()
+ .syncRequestsAsyncCoreThreadTimeoutEnabled(true)
+ .build();
+
+ assertTrue(configuration.isSyncRequestsAsyncCoreThreadTimeoutEnabled());
+ assertFalse(configuration.isAsyncRequestsAsyncCoreThreadTimeoutEnabled());
+ }
+
+ @Test
+ public void asyncRequestsAsyncCoreThreadTimeoutEnabledWhenOptedIn() {
+ ClientConfiguration configuration =
+ ClientConfiguration.builder()
+ .asyncRequestsAsyncCoreThreadTimeoutEnabled(true)
+ .build();
+
+ assertFalse(configuration.isSyncRequestsAsyncCoreThreadTimeoutEnabled());
+ assertTrue(configuration.isAsyncRequestsAsyncCoreThreadTimeoutEnabled());
+ }
+}
diff --git a/bmc-computecloudatcustomer/pom.xml b/bmc-computecloudatcustomer/pom.xml
index 5287d44e5c0..10e2fb2246e 100644
--- a/bmc-computecloudatcustomer/pom.xml
+++ b/bmc-computecloudatcustomer/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.86.2
+ 3.87.0
../pom.xml
oci-java-sdk-computecloudatcustomer
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.86.2
+ 3.87.0
\ No newline at end of file
diff --git a/bmc-computeinstanceagent/pom.xml b/bmc-computeinstanceagent/pom.xml
index bd613e86828..30db1f7be7d 100644
--- a/bmc-computeinstanceagent/pom.xml
+++ b/bmc-computeinstanceagent/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.86.2
+ 3.87.0
../pom.xml
oci-java-sdk-computeinstanceagent
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.86.2
+ 3.87.0
\ No newline at end of file
diff --git a/bmc-containerengine/pom.xml b/bmc-containerengine/pom.xml
index e48fad07429..49e12a03b1d 100644
--- a/bmc-containerengine/pom.xml
+++ b/bmc-containerengine/pom.xml
@@ -5,7 +5,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.86.2
+ 3.87.0
../pom.xml
@@ -18,7 +18,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.86.2
+ 3.87.0
diff --git a/bmc-containerinstances/pom.xml b/bmc-containerinstances/pom.xml
index b7cf231101a..0424fe0cd22 100644
--- a/bmc-containerinstances/pom.xml
+++ b/bmc-containerinstances/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.86.2
+ 3.87.0
../pom.xml
oci-java-sdk-containerinstances
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.86.2
+ 3.87.0
\ No newline at end of file
diff --git a/bmc-containerregistry/pom.xml b/bmc-containerregistry/pom.xml
index 859263e3c21..143ccbbd8a8 100644
--- a/bmc-containerregistry/pom.xml
+++ b/bmc-containerregistry/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.86.2
+ 3.87.0
../pom.xml
oci-java-sdk-containerregistry
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.86.2
+ 3.87.0
\ No newline at end of file
diff --git a/bmc-core/pom.xml b/bmc-core/pom.xml
index dffd864bfe7..6e2dd8b8e09 100644
--- a/bmc-core/pom.xml
+++ b/bmc-core/pom.xml
@@ -5,7 +5,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.86.2
+ 3.87.0
../pom.xml
@@ -18,12 +18,12 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.86.2
+ 3.87.0
com.oracle.oci.sdk
oci-java-sdk-workrequests
- 3.86.2
+ 3.87.0
diff --git a/bmc-costad/pom.xml b/bmc-costad/pom.xml
new file mode 100644
index 00000000000..ade8c33cc1c
--- /dev/null
+++ b/bmc-costad/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ com.oracle.oci.sdk
+ oci-java-sdk
+ 3.87.0
+ ../pom.xml
+
+ oci-java-sdk-costad
+ Oracle Cloud Infrastructure SDK - Costad
+ This project contains the SDK used for Oracle Cloud Infrastructure Costad
+ https://docs.cloud.oracle.com/Content/API/SDKDocs/javasdk.htm
+
+
+ com.oracle.oci.sdk
+ oci-java-sdk-common
+ 3.87.0
+
+
+
\ No newline at end of file
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAd.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAd.java
new file mode 100644
index 00000000000..c6e5ad0faa1
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAd.java
@@ -0,0 +1,354 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad;
+
+import com.oracle.bmc.costad.requests.*;
+import com.oracle.bmc.costad.responses.*;
+
+/**
+ * Use the CostAd API to manage cost monitor, cost anomaly events and subscription list. For more
+ * information, see [Cost Anomaly Detection
+ * Overview](https://docs.oracle.com/iaas/Content/Billing/Concepts/costanomalydetectionoverview.htm).
+ * This service client uses CircuitBreakerUtils.DEFAULT_CIRCUIT_BREAKER for all the operations by
+ * default if no circuit breaker configuration is defined by the user.
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+public interface CostAd extends AutoCloseable {
+
+ /** Rebuilds the client from scratch. Useful to refresh certificates. */
+ void refreshClient();
+
+ /**
+ * Sets the endpoint to call (ex, https://www.example.com).
+ *
+ * @param endpoint The endpoint of the service.
+ */
+ void setEndpoint(String endpoint);
+
+ /** Gets the set endpoint for REST call (ex, https://www.example.com) */
+ String getEndpoint();
+
+ /**
+ * Sets the region to call (ex, Region.US_PHOENIX_1).
+ *
+ * Note, this will call {@link #setEndpoint(String) setEndpoint} after resolving the
+ * endpoint. If the service is not available in this Region, however, an
+ * IllegalArgumentException will be raised.
+ *
+ * @param region The region of the service.
+ */
+ void setRegion(com.oracle.bmc.Region region);
+
+ /**
+ * Sets the region to call (ex, 'us-phoenix-1').
+ *
+ *
Note, this will first try to map the region ID to a known Region and call {@link
+ * #setRegion(Region) setRegion}.
+ *
+ *
If no known Region could be determined, it will create an endpoint based on the default
+ * endpoint format ({@link com.oracle.bmc.Region#formatDefaultRegionEndpoint(Service, String)}
+ * and then call {@link #setEndpoint(String) setEndpoint}.
+ *
+ * @param regionId The public region ID.
+ */
+ void setRegion(String regionId);
+
+ /**
+ * Determines whether realm specific endpoint should be used or not. Set
+ * realmSpecificEndpointTemplateEnabled to "true" if the user wants to enable use of realm
+ * specific endpoint template, otherwise set it to "false"
+ *
+ * @param realmSpecificEndpointTemplateEnabled flag to enable the use of realm specific endpoint
+ * template
+ */
+ void useRealmSpecificEndpointTemplate(boolean realmSpecificEndpointTemplateEnabled);
+
+ /**
+ * Creates a new CostAlert Subscription.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * CreateCostAlertSubscription API.
+ */
+ CreateCostAlertSubscriptionResponse createCostAlertSubscription(
+ CreateCostAlertSubscriptionRequest request);
+
+ /**
+ * Creates a new costAnomaly Monitor.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * CreateCostAnomalyMonitor API.
+ */
+ CreateCostAnomalyMonitorResponse createCostAnomalyMonitor(
+ CreateCostAnomalyMonitorRequest request);
+
+ /**
+ * Deletes a specified CostAlertSubscription resource.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * DeleteCostAlertSubscription API.
+ */
+ DeleteCostAlertSubscriptionResponse deleteCostAlertSubscription(
+ DeleteCostAlertSubscriptionRequest request);
+
+ /**
+ * Deletes a specified CostAnomalyMonitor resource.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * DeleteCostAnomalyMonitor API.
+ */
+ DeleteCostAnomalyMonitorResponse deleteCostAnomalyMonitor(
+ DeleteCostAnomalyMonitorRequest request);
+
+ /**
+ * Disables the cost anomaly monitor. This stops cost anomaly detection for targeted
+ * resource(s).
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * DisableCostAnomalyMonitor API.
+ */
+ DisableCostAnomalyMonitorResponse disableCostAnomalyMonitor(
+ DisableCostAnomalyMonitorRequest request);
+
+ /**
+ * Enables the cost anomaly monitor. This (re)starts the cost anomaly detection for targeted
+ * resource(s).
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * EnableCostAnomalyMonitor API.
+ */
+ EnableCostAnomalyMonitorResponse enableCostAnomalyMonitor(
+ EnableCostAnomalyMonitorRequest request);
+
+ /**
+ * Gets a CostAlertSubscription by the identifier.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * GetCostAlertSubscription API.
+ */
+ GetCostAlertSubscriptionResponse getCostAlertSubscription(
+ GetCostAlertSubscriptionRequest request);
+
+ /**
+ * Gets a CostAnomalyEvent by the identifier.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use GetCostAnomalyEvent
+ * API.
+ */
+ GetCostAnomalyEventResponse getCostAnomalyEvent(GetCostAnomalyEventRequest request);
+
+ /**
+ * Gets a CostAnomalyMonitor by the identifier.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * GetCostAnomalyMonitor API.
+ */
+ GetCostAnomalyMonitorResponse getCostAnomalyMonitor(GetCostAnomalyMonitorRequest request);
+
+ /**
+ * Gets a list of Cost Alert Subscription in a compartment.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * ListCostAlertSubscriptions API.
+ */
+ ListCostAlertSubscriptionsResponse listCostAlertSubscriptions(
+ ListCostAlertSubscriptionsRequest request);
+
+ /**
+ * Gets a list of Cost Anomaly Event in a compartment.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * ListCostAnomalyEvents API.
+ */
+ ListCostAnomalyEventsResponse listCostAnomalyEvents(ListCostAnomalyEventsRequest request);
+
+ /**
+ * Gets a list of Cost Anomaly Monitors in a compartment.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * ListCostAnomalyMonitors API.
+ */
+ ListCostAnomalyMonitorsResponse listCostAnomalyMonitors(ListCostAnomalyMonitorsRequest request);
+
+ /**
+ * Gets a list of Cost Anomaly Events analytics summary - aggregated metrics for a given time
+ * period.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * SummarizeCostAnomalyEventAnalytics API.
+ */
+ SummarizeCostAnomalyEventAnalyticsResponse summarizeCostAnomalyEventAnalytics(
+ SummarizeCostAnomalyEventAnalyticsRequest request);
+
+ /**
+ * Update a CostAlertSubscription identified by the OCID.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * UpdateCostAlertSubscription API.
+ */
+ UpdateCostAlertSubscriptionResponse updateCostAlertSubscription(
+ UpdateCostAlertSubscriptionRequest request);
+
+ /**
+ * Update a CostAnomalyEvent identified by the OCID.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * UpdateCostAnomalyEvent API.
+ */
+ UpdateCostAnomalyEventResponse updateCostAnomalyEvent(UpdateCostAnomalyEventRequest request);
+
+ /**
+ * Update a CostAnomalyMonitor identified by the OCID.
+ *
+ * @param request The request object containing the details to send
+ * @return A response object containing details about the completed operation
+ * @throws BmcException when an error occurs. This operation uses
+ * RetryConfiguration.SDK_DEFAULT_RETRY_CONFIGURATION as default if no retry strategy is
+ * provided. The specifics of the default retry strategy are described here
+ * https://docs.oracle.com/en-us/iaas/Content/API/SDKDocs/javasdkconcepts.htm#javasdkconcepts_topic_Retries
+ *
Example: Click here to see how to use
+ * UpdateCostAnomalyMonitor API.
+ */
+ UpdateCostAnomalyMonitorResponse updateCostAnomalyMonitor(
+ UpdateCostAnomalyMonitorRequest request);
+
+ /**
+ * Gets the pre-configured waiters available for resources for this service.
+ *
+ * @return The service waiters.
+ */
+ CostAdWaiters getWaiters();
+
+ /**
+ * Gets the pre-configured paginators available for list operations in this service which may
+ * return multiple pages of data. These paginators provide an {@link java.lang.Iterable}
+ * interface so that service responses, or resources/records, can be iterated through without
+ * having to manually deal with pagination and page tokens.
+ *
+ * @return The service paginators.
+ */
+ CostAdPaginators getPaginators();
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdAsync.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdAsync.java
new file mode 100644
index 00000000000..3fdf1f03c10
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdAsync.java
@@ -0,0 +1,326 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad;
+
+import com.oracle.bmc.costad.requests.*;
+import com.oracle.bmc.costad.responses.*;
+
+/**
+ * Use the CostAd API to manage cost monitor, cost anomaly events and subscription list. For more
+ * information, see [Cost Anomaly Detection
+ * Overview](https://docs.oracle.com/iaas/Content/Billing/Concepts/costanomalydetectionoverview.htm).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+public interface CostAdAsync extends AutoCloseable {
+
+ /** Rebuilds the client from scratch. Useful to refresh certificates. */
+ void refreshClient();
+
+ /**
+ * Sets the endpoint to call (ex, https://www.example.com).
+ *
+ * @param endpoint The endpoint of the serice.
+ */
+ void setEndpoint(String endpoint);
+
+ /** Gets the set endpoint for REST call (ex, https://www.example.com) */
+ String getEndpoint();
+
+ /**
+ * Sets the region to call (ex, Region.US_PHOENIX_1).
+ *
+ *
Note, this will call {@link #setEndpoint(String) setEndpoint} after resolving the
+ * endpoint. If the service is not available in this region, however, an
+ * IllegalArgumentException will be raised.
+ *
+ * @param region The region of the service.
+ */
+ void setRegion(com.oracle.bmc.Region region);
+
+ /**
+ * Sets the region to call (ex, 'us-phoenix-1').
+ *
+ *
Note, this will first try to map the region ID to a known Region and call {@link
+ * #setRegion(Region) setRegion}.
+ *
+ *
If no known Region could be determined, it will create an endpoint based on the default
+ * endpoint format ({@link com.oracle.bmc.Region#formatDefaultRegionEndpoint(Service, String)}
+ * and then call {@link #setEndpoint(String) setEndpoint}.
+ *
+ * @param regionId The public region ID.
+ */
+ void setRegion(String regionId);
+
+ /**
+ * Determines whether realm specific endpoint should be used or not. Set
+ * realmSpecificEndpointTemplateEnabled to "true" if the user wants to enable use of realm
+ * specific endpoint template, otherwise set it to "false"
+ *
+ * @param realmSpecificEndpointTemplateEnabled flag to enable the use of realm specific endpoint
+ * template
+ */
+ void useRealmSpecificEndpointTemplate(boolean realmSpecificEndpointTemplateEnabled);
+
+ /**
+ * Creates a new CostAlert Subscription.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future createCostAlertSubscription(
+ CreateCostAlertSubscriptionRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ CreateCostAlertSubscriptionRequest, CreateCostAlertSubscriptionResponse>
+ handler);
+
+ /**
+ * Creates a new costAnomaly Monitor.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future createCostAnomalyMonitor(
+ CreateCostAnomalyMonitorRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ CreateCostAnomalyMonitorRequest, CreateCostAnomalyMonitorResponse>
+ handler);
+
+ /**
+ * Deletes a specified CostAlertSubscription resource.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future deleteCostAlertSubscription(
+ DeleteCostAlertSubscriptionRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ DeleteCostAlertSubscriptionRequest, DeleteCostAlertSubscriptionResponse>
+ handler);
+
+ /**
+ * Deletes a specified CostAnomalyMonitor resource.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future deleteCostAnomalyMonitor(
+ DeleteCostAnomalyMonitorRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ DeleteCostAnomalyMonitorRequest, DeleteCostAnomalyMonitorResponse>
+ handler);
+
+ /**
+ * Disables the cost anomaly monitor. This stops cost anomaly detection for targeted
+ * resource(s).
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future disableCostAnomalyMonitor(
+ DisableCostAnomalyMonitorRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ DisableCostAnomalyMonitorRequest, DisableCostAnomalyMonitorResponse>
+ handler);
+
+ /**
+ * Enables the cost anomaly monitor. This (re)starts the cost anomaly detection for targeted
+ * resource(s).
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future enableCostAnomalyMonitor(
+ EnableCostAnomalyMonitorRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ EnableCostAnomalyMonitorRequest, EnableCostAnomalyMonitorResponse>
+ handler);
+
+ /**
+ * Gets a CostAlertSubscription by the identifier.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future getCostAlertSubscription(
+ GetCostAlertSubscriptionRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ GetCostAlertSubscriptionRequest, GetCostAlertSubscriptionResponse>
+ handler);
+
+ /**
+ * Gets a CostAnomalyEvent by the identifier.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future getCostAnomalyEvent(
+ GetCostAnomalyEventRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ GetCostAnomalyEventRequest, GetCostAnomalyEventResponse>
+ handler);
+
+ /**
+ * Gets a CostAnomalyMonitor by the identifier.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future getCostAnomalyMonitor(
+ GetCostAnomalyMonitorRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ GetCostAnomalyMonitorRequest, GetCostAnomalyMonitorResponse>
+ handler);
+
+ /**
+ * Gets a list of Cost Alert Subscription in a compartment.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future listCostAlertSubscriptions(
+ ListCostAlertSubscriptionsRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ ListCostAlertSubscriptionsRequest, ListCostAlertSubscriptionsResponse>
+ handler);
+
+ /**
+ * Gets a list of Cost Anomaly Event in a compartment.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future listCostAnomalyEvents(
+ ListCostAnomalyEventsRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ ListCostAnomalyEventsRequest, ListCostAnomalyEventsResponse>
+ handler);
+
+ /**
+ * Gets a list of Cost Anomaly Monitors in a compartment.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future listCostAnomalyMonitors(
+ ListCostAnomalyMonitorsRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ ListCostAnomalyMonitorsRequest, ListCostAnomalyMonitorsResponse>
+ handler);
+
+ /**
+ * Gets a list of Cost Anomaly Events analytics summary - aggregated metrics for a given time
+ * period.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future
+ summarizeCostAnomalyEventAnalytics(
+ SummarizeCostAnomalyEventAnalyticsRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ SummarizeCostAnomalyEventAnalyticsRequest,
+ SummarizeCostAnomalyEventAnalyticsResponse>
+ handler);
+
+ /**
+ * Update a CostAlertSubscription identified by the OCID.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future updateCostAlertSubscription(
+ UpdateCostAlertSubscriptionRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ UpdateCostAlertSubscriptionRequest, UpdateCostAlertSubscriptionResponse>
+ handler);
+
+ /**
+ * Update a CostAnomalyEvent identified by the OCID.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future updateCostAnomalyEvent(
+ UpdateCostAnomalyEventRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ UpdateCostAnomalyEventRequest, UpdateCostAnomalyEventResponse>
+ handler);
+
+ /**
+ * Update a CostAnomalyMonitor identified by the OCID.
+ *
+ * @param request The request object containing the details to send
+ * @param handler The request handler to invoke upon completion, may be null.
+ * @return A Future that can be used to get the response if no AsyncHandler was provided. Note,
+ * if you provide an AsyncHandler and use the Future, some types of responses (like
+ * java.io.InputStream) may not be able to be read in both places as the underlying stream
+ * may only be consumed once.
+ */
+ java.util.concurrent.Future updateCostAnomalyMonitor(
+ UpdateCostAnomalyMonitorRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ UpdateCostAnomalyMonitorRequest, UpdateCostAnomalyMonitorResponse>
+ handler);
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdAsyncClient.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdAsyncClient.java
new file mode 100644
index 00000000000..4fda30d001a
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdAsyncClient.java
@@ -0,0 +1,805 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad;
+
+import com.oracle.bmc.util.internal.Validate;
+import com.oracle.bmc.costad.requests.*;
+import com.oracle.bmc.costad.responses.*;
+
+import java.util.Objects;
+
+/**
+ * Async client implementation for CostAd service.
+ * There are two ways to use async client: 1. Use AsyncHandler: using AsyncHandler, if the response
+ * to the call is an {@link java.io.InputStream}, like getObject Api in object storage service,
+ * developers need to process the stream in AsyncHandler, and not anywhere else, because the stream
+ * will be closed right after the AsyncHandler is invoked.
+ * 2. Use Java Future: using Java Future, developers need to close the stream after they are done
+ * with the Java Future.
+ * Accessing the result should be done in a mutually exclusive manner, either through the Future or
+ * the AsyncHandler, but not both. If the Future is used, the caller should pass in null as the
+ * AsyncHandler. If the AsyncHandler is used, it is still safe to use the Future to determine
+ * whether or not the request was completed via Future.isDone/isCancelled.
+ * Please refer to
+ * https://github.com/oracle/oci-java-sdk/blob/master/bmc-examples/src/main/java/ResteasyClientWithObjectStorageExample.java
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+public class CostAdAsyncClient extends com.oracle.bmc.http.internal.BaseAsyncClient
+ implements CostAdAsync {
+ /** Service instance for CostAd. */
+ public static final com.oracle.bmc.Service SERVICE =
+ com.oracle.bmc.Services.serviceBuilder()
+ .serviceName(CostAdClient.class.getName())
+ .serviceEndpointPrefix("")
+ .serviceEndpointTemplate("https://costad.{region}.oci.{secondLevelDomain}")
+ .build();
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(CostAdAsyncClient.class);
+
+ CostAdAsyncClient(
+ com.oracle.bmc.common.ClientBuilderBase, ?> builder,
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider
+ authenticationDetailsProvider) {
+ super(builder, authenticationDetailsProvider);
+ }
+
+ /**
+ * Create a builder for this client.
+ *
+ * @return builder
+ */
+ public static Builder builder() {
+ return new Builder(SERVICE);
+ }
+
+ /**
+ * Builder class for this client. The "authenticationDetailsProvider" is required and must be
+ * passed to the {@link #build(AbstractAuthenticationDetailsProvider)} method.
+ */
+ public static class Builder
+ extends com.oracle.bmc.common.RegionalClientBuilder {
+ private Builder(com.oracle.bmc.Service service) {
+ super(service);
+ final String packageName = "costad";
+ com.oracle.bmc.internal.Alloy.throwDisabledServiceExceptionIfAppropriate(packageName);
+ requestSignerFactory =
+ new com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory(
+ com.oracle.bmc.http.signing.SigningStrategy.STANDARD);
+ }
+
+ /**
+ * Build the client.
+ *
+ * @param authenticationDetailsProvider authentication details provider
+ * @return the client
+ */
+ public CostAdAsyncClient build(
+ @jakarta.annotation.Nonnull
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider
+ authenticationDetailsProvider) {
+ return new CostAdAsyncClient(this, authenticationDetailsProvider);
+ }
+ }
+
+ @Override
+ public void setRegion(com.oracle.bmc.Region region) {
+ super.setRegion(region);
+ }
+
+ @Override
+ public void setRegion(String regionId) {
+ super.setRegion(regionId);
+ }
+
+ @Override
+ public java.util.concurrent.Future
+ createCostAlertSubscription(
+ CreateCostAlertSubscriptionRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ CreateCostAlertSubscriptionRequest,
+ CreateCostAlertSubscriptionResponse>
+ handler) {
+ Objects.requireNonNull(
+ request.getCreateCostAlertSubscriptionDetails(),
+ "createCostAlertSubscriptionDetails is required");
+
+ return clientCall(request, CreateCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "createCostAlertSubscription")
+ .serviceDetails("CostAd", "CreateCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(CreateCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .accept("application/json")
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscription.class,
+ CreateCostAlertSubscriptionResponse.Builder::costAlertSubscription)
+ .handleResponseHeaderString(
+ "opc-request-id", CreateCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "etag", CreateCostAlertSubscriptionResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future createCostAnomalyMonitor(
+ CreateCostAnomalyMonitorRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ CreateCostAnomalyMonitorRequest, CreateCostAnomalyMonitorResponse>
+ handler) {
+ Objects.requireNonNull(
+ request.getCreateCostAnomalyMonitorDetails(),
+ "createCostAnomalyMonitorDetails is required");
+
+ return clientCall(request, CreateCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "createCostAnomalyMonitor")
+ .serviceDetails("CostAd", "CreateCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(CreateCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .accept("application/json")
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ CreateCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString(
+ "opc-request-id", CreateCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", CreateCostAnomalyMonitorResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future
+ deleteCostAlertSubscription(
+ DeleteCostAlertSubscriptionRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ DeleteCostAlertSubscriptionRequest,
+ DeleteCostAlertSubscriptionResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAlertSubscriptionId(), "costAlertSubscriptionId must not be blank");
+
+ return clientCall(request, DeleteCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "deleteCostAlertSubscription")
+ .serviceDetails("CostAd", "DeleteCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(DeleteCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendPathParam(request.getCostAlertSubscriptionId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleResponseHeaderString(
+ "opc-request-id", DeleteCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future deleteCostAnomalyMonitor(
+ DeleteCostAnomalyMonitorRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ DeleteCostAnomalyMonitorRequest, DeleteCostAnomalyMonitorResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, DeleteCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "deleteCostAnomalyMonitor")
+ .serviceDetails("CostAd", "DeleteCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(DeleteCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleResponseHeaderString(
+ "opc-request-id", DeleteCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future disableCostAnomalyMonitor(
+ DisableCostAnomalyMonitorRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ DisableCostAnomalyMonitorRequest, DisableCostAnomalyMonitorResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, DisableCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "disableCostAnomalyMonitor")
+ .serviceDetails("CostAd", "DisableCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(DisableCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .appendPathParam("actions")
+ .appendPathParam("disable")
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ DisableCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString("etag", DisableCostAnomalyMonitorResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", DisableCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future enableCostAnomalyMonitor(
+ EnableCostAnomalyMonitorRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ EnableCostAnomalyMonitorRequest, EnableCostAnomalyMonitorResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, EnableCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "enableCostAnomalyMonitor")
+ .serviceDetails("CostAd", "EnableCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(EnableCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .appendPathParam("actions")
+ .appendPathParam("enable")
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ EnableCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString("etag", EnableCostAnomalyMonitorResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", EnableCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future getCostAlertSubscription(
+ GetCostAlertSubscriptionRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ GetCostAlertSubscriptionRequest, GetCostAlertSubscriptionResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAlertSubscriptionId(), "costAlertSubscriptionId must not be blank");
+
+ return clientCall(request, GetCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "getCostAlertSubscription")
+ .serviceDetails("CostAd", "GetCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendPathParam(request.getCostAlertSubscriptionId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscription.class,
+ GetCostAlertSubscriptionResponse.Builder::costAlertSubscription)
+ .handleResponseHeaderString(
+ "opc-request-id", GetCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", GetCostAlertSubscriptionResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future getCostAnomalyEvent(
+ GetCostAnomalyEventRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ GetCostAnomalyEventRequest, GetCostAnomalyEventResponse>
+ handler) {
+
+ Validate.notBlank(request.getCostAnomalyEventId(), "costAnomalyEventId must not be blank");
+
+ return clientCall(request, GetCostAnomalyEventResponse::builder)
+ .logger(LOG, "getCostAnomalyEvent")
+ .serviceDetails("CostAd", "GetCostAnomalyEvent", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetCostAnomalyEventRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEvents")
+ .appendPathParam(request.getCostAnomalyEventId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEvent.class,
+ GetCostAnomalyEventResponse.Builder::costAnomalyEvent)
+ .handleResponseHeaderString(
+ "opc-request-id", GetCostAnomalyEventResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", GetCostAnomalyEventResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future getCostAnomalyMonitor(
+ GetCostAnomalyMonitorRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ GetCostAnomalyMonitorRequest, GetCostAnomalyMonitorResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, GetCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "getCostAnomalyMonitor")
+ .serviceDetails("CostAd", "GetCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ GetCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString(
+ "opc-request-id", GetCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", GetCostAnomalyMonitorResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future
+ listCostAlertSubscriptions(
+ ListCostAlertSubscriptionsRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ListCostAlertSubscriptionsRequest,
+ ListCostAlertSubscriptionsResponse>
+ handler) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, ListCostAlertSubscriptionsResponse::builder)
+ .logger(LOG, "listCostAlertSubscriptions")
+ .serviceDetails("CostAd", "ListCostAlertSubscriptions", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListCostAlertSubscriptionsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendQueryParam("name", request.getName())
+ .appendEnumQueryParam("lifecycleState", request.getLifecycleState())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscriptionCollection.class,
+ ListCostAlertSubscriptionsResponse.Builder::costAlertSubscriptionCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListCostAlertSubscriptionsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListCostAlertSubscriptionsResponse.Builder::opcNextPage)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future listCostAnomalyEvents(
+ ListCostAnomalyEventsRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ListCostAnomalyEventsRequest, ListCostAnomalyEventsResponse>
+ handler) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, ListCostAnomalyEventsResponse::builder)
+ .logger(LOG, "listCostAnomalyEvents")
+ .serviceDetails("CostAd", "ListCostAnomalyEvents", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListCostAnomalyEventsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEvents")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendQueryParam("name", request.getName())
+ .appendQueryParam("costAnomalyMonitorId", request.getCostAnomalyMonitorId())
+ .appendListQueryParam(
+ "targetTenantId",
+ request.getTargetTenantId(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam(
+ "timeAnomalyEventStartDate", request.getTimeAnomalyEventStartDate())
+ .appendQueryParam("timeAnomalyEventEndDate", request.getTimeAnomalyEventEndDate())
+ .appendListQueryParam(
+ "region",
+ request.getRegion(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam("costImpact", request.getCostImpact())
+ .appendQueryParam("costImpactPercentage", request.getCostImpactPercentage())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEventCollection.class,
+ ListCostAnomalyEventsResponse.Builder::costAnomalyEventCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListCostAnomalyEventsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListCostAnomalyEventsResponse.Builder::opcNextPage)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future listCostAnomalyMonitors(
+ ListCostAnomalyMonitorsRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ListCostAnomalyMonitorsRequest, ListCostAnomalyMonitorsResponse>
+ handler) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, ListCostAnomalyMonitorsResponse::builder)
+ .logger(LOG, "listCostAnomalyMonitors")
+ .serviceDetails("CostAd", "ListCostAnomalyMonitors", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListCostAnomalyMonitorsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendEnumQueryParam("lifecycleState", request.getLifecycleState())
+ .appendQueryParam("name", request.getName())
+ .appendListQueryParam(
+ "targetTenantId",
+ request.getTargetTenantId(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendListQueryParam(
+ "region",
+ request.getRegion(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitorCollection.class,
+ ListCostAnomalyMonitorsResponse.Builder::costAnomalyMonitorCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListCostAnomalyMonitorsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListCostAnomalyMonitorsResponse.Builder::opcNextPage)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future
+ summarizeCostAnomalyEventAnalytics(
+ SummarizeCostAnomalyEventAnalyticsRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ SummarizeCostAnomalyEventAnalyticsRequest,
+ SummarizeCostAnomalyEventAnalyticsResponse>
+ handler) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, SummarizeCostAnomalyEventAnalyticsResponse::builder)
+ .logger(LOG, "summarizeCostAnomalyEventAnalytics")
+ .serviceDetails("CostAd", "SummarizeCostAnomalyEventAnalytics", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(SummarizeCostAnomalyEventAnalyticsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEventAnalytics")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendQueryParam("name", request.getName())
+ .appendQueryParam("costAnomalyMonitorId", request.getCostAnomalyMonitorId())
+ .appendListQueryParam(
+ "targetTenantId",
+ request.getTargetTenantId(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam(
+ "timeAnomalyEventStartDate", request.getTimeAnomalyEventStartDate())
+ .appendQueryParam("timeAnomalyEventEndDate", request.getTimeAnomalyEventEndDate())
+ .appendListQueryParam(
+ "region",
+ request.getRegion(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam("costImpact", request.getCostImpact())
+ .appendQueryParam("costImpactPercentage", request.getCostImpactPercentage())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEventAnalyticCollection.class,
+ SummarizeCostAnomalyEventAnalyticsResponse.Builder
+ ::costAnomalyEventAnalyticCollection)
+ .handleResponseHeaderString(
+ "opc-request-id",
+ SummarizeCostAnomalyEventAnalyticsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page",
+ SummarizeCostAnomalyEventAnalyticsResponse.Builder::opcNextPage)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future
+ updateCostAlertSubscription(
+ UpdateCostAlertSubscriptionRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ UpdateCostAlertSubscriptionRequest,
+ UpdateCostAlertSubscriptionResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAlertSubscriptionId(), "costAlertSubscriptionId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateCostAlertSubscriptionDetails(),
+ "updateCostAlertSubscriptionDetails is required");
+
+ return clientCall(request, UpdateCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "updateCostAlertSubscription")
+ .serviceDetails("CostAd", "UpdateCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendPathParam(request.getCostAlertSubscriptionId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscription.class,
+ UpdateCostAlertSubscriptionResponse.Builder::costAlertSubscription)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "etag", UpdateCostAlertSubscriptionResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future updateCostAnomalyEvent(
+ UpdateCostAnomalyEventRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ UpdateCostAnomalyEventRequest, UpdateCostAnomalyEventResponse>
+ handler) {
+
+ Validate.notBlank(request.getCostAnomalyEventId(), "costAnomalyEventId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateCostAnomalyEventDetails(),
+ "updateCostAnomalyEventDetails is required");
+
+ return clientCall(request, UpdateCostAnomalyEventResponse::builder)
+ .logger(LOG, "updateCostAnomalyEvent")
+ .serviceDetails("CostAd", "UpdateCostAnomalyEvent", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateCostAnomalyEventRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEvents")
+ .appendPathParam(request.getCostAnomalyEventId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEvent.class,
+ UpdateCostAnomalyEventResponse.Builder::costAnomalyEvent)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateCostAnomalyEventResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", UpdateCostAnomalyEventResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future updateCostAnomalyMonitor(
+ UpdateCostAnomalyMonitorRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ UpdateCostAnomalyMonitorRequest, UpdateCostAnomalyMonitorResponse>
+ handler) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateCostAnomalyMonitorDetails(),
+ "updateCostAnomalyMonitorDetails is required");
+
+ return clientCall(request, UpdateCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "updateCostAnomalyMonitor")
+ .serviceDetails("CostAd", "UpdateCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ UpdateCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", UpdateCostAnomalyMonitorResponse.Builder::etag)
+ .callAsync(handler);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdAsyncClient(
+ com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider) {
+ this(builder(), authenticationDetailsProvider);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdAsyncClient(
+ com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration) {
+ this(builder().configuration(configuration), authenticationDetailsProvider);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdAsyncClient(
+ com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator) {
+ this(
+ builder().configuration(configuration).clientConfigurator(clientConfigurator),
+ authenticationDetailsProvider);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdAsyncClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory),
+ authenticationDetailsProvider);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @param additionalClientConfigurators {@link Builder#additionalClientConfigurators}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdAsyncClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory,
+ java.util.List additionalClientConfigurators) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory)
+ .additionalClientConfigurators(additionalClientConfigurators),
+ authenticationDetailsProvider);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @param additionalClientConfigurators {@link Builder#additionalClientConfigurators}
+ * @param endpoint {@link Builder#endpoint}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdAsyncClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory,
+ java.util.List additionalClientConfigurators,
+ String endpoint) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory)
+ .additionalClientConfigurators(additionalClientConfigurators)
+ .endpoint(endpoint),
+ authenticationDetailsProvider);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @param additionalClientConfigurators {@link Builder#additionalClientConfigurators}
+ * @param endpoint {@link Builder#endpoint}
+ * @param signingStrategyRequestSignerFactories {@link
+ * Builder#signingStrategyRequestSignerFactories}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdAsyncClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory,
+ java.util.Map<
+ com.oracle.bmc.http.signing.SigningStrategy,
+ com.oracle.bmc.http.signing.RequestSignerFactory>
+ signingStrategyRequestSignerFactories,
+ java.util.List additionalClientConfigurators,
+ String endpoint) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory)
+ .additionalClientConfigurators(additionalClientConfigurators)
+ .endpoint(endpoint)
+ .signingStrategyRequestSignerFactories(
+ signingStrategyRequestSignerFactories),
+ authenticationDetailsProvider);
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdClient.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdClient.java
new file mode 100644
index 00000000000..0a3b6a89b73
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdClient.java
@@ -0,0 +1,844 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad;
+
+import com.oracle.bmc.util.internal.Validate;
+import com.oracle.bmc.costad.requests.*;
+import com.oracle.bmc.costad.responses.*;
+import com.oracle.bmc.circuitbreaker.CircuitBreakerConfiguration;
+import com.oracle.bmc.util.CircuitBreakerUtils;
+
+import java.util.Objects;
+
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+public class CostAdClient extends com.oracle.bmc.http.internal.BaseSyncClient implements CostAd {
+ /** Service instance for CostAd. */
+ public static final com.oracle.bmc.Service SERVICE =
+ com.oracle.bmc.Services.serviceBuilder()
+ .serviceName(CostAdClient.class.getName())
+ .serviceEndpointPrefix("")
+ .serviceEndpointTemplate("https://costad.{region}.oci.{secondLevelDomain}")
+ .build();
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(CostAdClient.class);
+
+ private final CostAdWaiters waiters;
+
+ private final CostAdPaginators paginators;
+
+ CostAdClient(
+ com.oracle.bmc.common.ClientBuilderBase, ?> builder,
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ java.util.concurrent.ExecutorService executorService) {
+ super(
+ builder,
+ authenticationDetailsProvider,
+ CircuitBreakerUtils.DEFAULT_CIRCUIT_BREAKER_CONFIGURATION);
+
+ if (executorService == null) {
+ // up to 50 (core) threads, time out after 60s idle, all daemon
+ java.util.concurrent.ThreadPoolExecutor threadPoolExecutor =
+ new java.util.concurrent.ThreadPoolExecutor(
+ 50,
+ 50,
+ 60L,
+ java.util.concurrent.TimeUnit.SECONDS,
+ new java.util.concurrent.LinkedBlockingQueue(),
+ com.oracle.bmc.internal.ClientThreadFactory.builder()
+ .isDaemon(true)
+ .nameFormat("CostAd-waiters-%d")
+ .build());
+ threadPoolExecutor.allowCoreThreadTimeOut(true);
+
+ executorService = threadPoolExecutor;
+ }
+ this.waiters = new CostAdWaiters(executorService, this);
+
+ this.paginators = new CostAdPaginators(this);
+ }
+
+ /**
+ * Create a builder for this client.
+ *
+ * @return builder
+ */
+ public static Builder builder() {
+ return new Builder(SERVICE);
+ }
+
+ /**
+ * Builder class for this client. The "authenticationDetailsProvider" is required and must be
+ * passed to the {@link #build(AbstractAuthenticationDetailsProvider)} method.
+ */
+ public static class Builder
+ extends com.oracle.bmc.common.RegionalClientBuilder {
+ private java.util.concurrent.ExecutorService executorService;
+
+ private Builder(com.oracle.bmc.Service service) {
+ super(service);
+ final String packageName = "costad";
+ com.oracle.bmc.internal.Alloy.throwDisabledServiceExceptionIfAppropriate(packageName);
+ requestSignerFactory =
+ new com.oracle.bmc.http.signing.internal.DefaultRequestSignerFactory(
+ com.oracle.bmc.http.signing.SigningStrategy.STANDARD);
+ }
+
+ /**
+ * Set the ExecutorService for the client to be created.
+ *
+ * @param executorService executorService
+ * @return this builder
+ */
+ public Builder executorService(java.util.concurrent.ExecutorService executorService) {
+ this.executorService = executorService;
+ return this;
+ }
+
+ /**
+ * Build the client.
+ *
+ * @param authenticationDetailsProvider authentication details provider
+ * @return the client
+ */
+ public CostAdClient build(
+ @jakarta.annotation.Nonnull
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider
+ authenticationDetailsProvider) {
+ return new CostAdClient(this, authenticationDetailsProvider, executorService);
+ }
+ }
+
+ @Override
+ public void setRegion(com.oracle.bmc.Region region) {
+ super.setRegion(region);
+ }
+
+ @Override
+ public void setRegion(String regionId) {
+ super.setRegion(regionId);
+ }
+
+ @Override
+ public CreateCostAlertSubscriptionResponse createCostAlertSubscription(
+ CreateCostAlertSubscriptionRequest request) {
+ Objects.requireNonNull(
+ request.getCreateCostAlertSubscriptionDetails(),
+ "createCostAlertSubscriptionDetails is required");
+
+ return clientCall(request, CreateCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "createCostAlertSubscription")
+ .serviceDetails("CostAd", "CreateCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(CreateCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .accept("application/json")
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscription.class,
+ CreateCostAlertSubscriptionResponse.Builder::costAlertSubscription)
+ .handleResponseHeaderString(
+ "opc-request-id", CreateCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "etag", CreateCostAlertSubscriptionResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public CreateCostAnomalyMonitorResponse createCostAnomalyMonitor(
+ CreateCostAnomalyMonitorRequest request) {
+ Objects.requireNonNull(
+ request.getCreateCostAnomalyMonitorDetails(),
+ "createCostAnomalyMonitorDetails is required");
+
+ return clientCall(request, CreateCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "createCostAnomalyMonitor")
+ .serviceDetails("CostAd", "CreateCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(CreateCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .accept("application/json")
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ CreateCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString(
+ "opc-request-id", CreateCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", CreateCostAnomalyMonitorResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public DeleteCostAlertSubscriptionResponse deleteCostAlertSubscription(
+ DeleteCostAlertSubscriptionRequest request) {
+
+ Validate.notBlank(
+ request.getCostAlertSubscriptionId(), "costAlertSubscriptionId must not be blank");
+
+ return clientCall(request, DeleteCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "deleteCostAlertSubscription")
+ .serviceDetails("CostAd", "DeleteCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(DeleteCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendPathParam(request.getCostAlertSubscriptionId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleResponseHeaderString(
+ "opc-request-id", DeleteCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public DeleteCostAnomalyMonitorResponse deleteCostAnomalyMonitor(
+ DeleteCostAnomalyMonitorRequest request) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, DeleteCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "deleteCostAnomalyMonitor")
+ .serviceDetails("CostAd", "DeleteCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(DeleteCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleResponseHeaderString(
+ "opc-request-id", DeleteCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public DisableCostAnomalyMonitorResponse disableCostAnomalyMonitor(
+ DisableCostAnomalyMonitorRequest request) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, DisableCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "disableCostAnomalyMonitor")
+ .serviceDetails("CostAd", "DisableCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(DisableCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .appendPathParam("actions")
+ .appendPathParam("disable")
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ DisableCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString("etag", DisableCostAnomalyMonitorResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", DisableCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public EnableCostAnomalyMonitorResponse enableCostAnomalyMonitor(
+ EnableCostAnomalyMonitorRequest request) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, EnableCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "enableCostAnomalyMonitor")
+ .serviceDetails("CostAd", "EnableCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(EnableCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .appendPathParam("actions")
+ .appendPathParam("enable")
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ EnableCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString("etag", EnableCostAnomalyMonitorResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", EnableCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public GetCostAlertSubscriptionResponse getCostAlertSubscription(
+ GetCostAlertSubscriptionRequest request) {
+
+ Validate.notBlank(
+ request.getCostAlertSubscriptionId(), "costAlertSubscriptionId must not be blank");
+
+ return clientCall(request, GetCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "getCostAlertSubscription")
+ .serviceDetails("CostAd", "GetCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendPathParam(request.getCostAlertSubscriptionId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscription.class,
+ GetCostAlertSubscriptionResponse.Builder::costAlertSubscription)
+ .handleResponseHeaderString(
+ "opc-request-id", GetCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", GetCostAlertSubscriptionResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public GetCostAnomalyEventResponse getCostAnomalyEvent(GetCostAnomalyEventRequest request) {
+
+ Validate.notBlank(request.getCostAnomalyEventId(), "costAnomalyEventId must not be blank");
+
+ return clientCall(request, GetCostAnomalyEventResponse::builder)
+ .logger(LOG, "getCostAnomalyEvent")
+ .serviceDetails("CostAd", "GetCostAnomalyEvent", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetCostAnomalyEventRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEvents")
+ .appendPathParam(request.getCostAnomalyEventId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEvent.class,
+ GetCostAnomalyEventResponse.Builder::costAnomalyEvent)
+ .handleResponseHeaderString(
+ "opc-request-id", GetCostAnomalyEventResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", GetCostAnomalyEventResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public GetCostAnomalyMonitorResponse getCostAnomalyMonitor(
+ GetCostAnomalyMonitorRequest request) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+
+ return clientCall(request, GetCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "getCostAnomalyMonitor")
+ .serviceDetails("CostAd", "GetCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ GetCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString(
+ "opc-request-id", GetCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", GetCostAnomalyMonitorResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public ListCostAlertSubscriptionsResponse listCostAlertSubscriptions(
+ ListCostAlertSubscriptionsRequest request) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, ListCostAlertSubscriptionsResponse::builder)
+ .logger(LOG, "listCostAlertSubscriptions")
+ .serviceDetails("CostAd", "ListCostAlertSubscriptions", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListCostAlertSubscriptionsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendQueryParam("name", request.getName())
+ .appendEnumQueryParam("lifecycleState", request.getLifecycleState())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscriptionCollection.class,
+ ListCostAlertSubscriptionsResponse.Builder::costAlertSubscriptionCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListCostAlertSubscriptionsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListCostAlertSubscriptionsResponse.Builder::opcNextPage)
+ .callSync();
+ }
+
+ @Override
+ public ListCostAnomalyEventsResponse listCostAnomalyEvents(
+ ListCostAnomalyEventsRequest request) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, ListCostAnomalyEventsResponse::builder)
+ .logger(LOG, "listCostAnomalyEvents")
+ .serviceDetails("CostAd", "ListCostAnomalyEvents", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListCostAnomalyEventsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEvents")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendQueryParam("name", request.getName())
+ .appendQueryParam("costAnomalyMonitorId", request.getCostAnomalyMonitorId())
+ .appendListQueryParam(
+ "targetTenantId",
+ request.getTargetTenantId(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam(
+ "timeAnomalyEventStartDate", request.getTimeAnomalyEventStartDate())
+ .appendQueryParam("timeAnomalyEventEndDate", request.getTimeAnomalyEventEndDate())
+ .appendListQueryParam(
+ "region",
+ request.getRegion(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam("costImpact", request.getCostImpact())
+ .appendQueryParam("costImpactPercentage", request.getCostImpactPercentage())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEventCollection.class,
+ ListCostAnomalyEventsResponse.Builder::costAnomalyEventCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListCostAnomalyEventsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListCostAnomalyEventsResponse.Builder::opcNextPage)
+ .callSync();
+ }
+
+ @Override
+ public ListCostAnomalyMonitorsResponse listCostAnomalyMonitors(
+ ListCostAnomalyMonitorsRequest request) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, ListCostAnomalyMonitorsResponse::builder)
+ .logger(LOG, "listCostAnomalyMonitors")
+ .serviceDetails("CostAd", "ListCostAnomalyMonitors", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListCostAnomalyMonitorsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendEnumQueryParam("lifecycleState", request.getLifecycleState())
+ .appendQueryParam("name", request.getName())
+ .appendListQueryParam(
+ "targetTenantId",
+ request.getTargetTenantId(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendListQueryParam(
+ "region",
+ request.getRegion(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitorCollection.class,
+ ListCostAnomalyMonitorsResponse.Builder::costAnomalyMonitorCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListCostAnomalyMonitorsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListCostAnomalyMonitorsResponse.Builder::opcNextPage)
+ .callSync();
+ }
+
+ @Override
+ public SummarizeCostAnomalyEventAnalyticsResponse summarizeCostAnomalyEventAnalytics(
+ SummarizeCostAnomalyEventAnalyticsRequest request) {
+ Objects.requireNonNull(request.getCompartmentId(), "compartmentId is required");
+
+ return clientCall(request, SummarizeCostAnomalyEventAnalyticsResponse::builder)
+ .logger(LOG, "summarizeCostAnomalyEventAnalytics")
+ .serviceDetails("CostAd", "SummarizeCostAnomalyEventAnalytics", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(SummarizeCostAnomalyEventAnalyticsRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEventAnalytics")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendQueryParam("name", request.getName())
+ .appendQueryParam("costAnomalyMonitorId", request.getCostAnomalyMonitorId())
+ .appendListQueryParam(
+ "targetTenantId",
+ request.getTargetTenantId(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam(
+ "timeAnomalyEventStartDate", request.getTimeAnomalyEventStartDate())
+ .appendQueryParam("timeAnomalyEventEndDate", request.getTimeAnomalyEventEndDate())
+ .appendListQueryParam(
+ "region",
+ request.getRegion(),
+ com.oracle.bmc.util.internal.CollectionFormatType.CommaSeparated)
+ .appendQueryParam("costImpact", request.getCostImpact())
+ .appendQueryParam("costImpactPercentage", request.getCostImpactPercentage())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEventAnalyticCollection.class,
+ SummarizeCostAnomalyEventAnalyticsResponse.Builder
+ ::costAnomalyEventAnalyticCollection)
+ .handleResponseHeaderString(
+ "opc-request-id",
+ SummarizeCostAnomalyEventAnalyticsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page",
+ SummarizeCostAnomalyEventAnalyticsResponse.Builder::opcNextPage)
+ .callSync();
+ }
+
+ @Override
+ public UpdateCostAlertSubscriptionResponse updateCostAlertSubscription(
+ UpdateCostAlertSubscriptionRequest request) {
+
+ Validate.notBlank(
+ request.getCostAlertSubscriptionId(), "costAlertSubscriptionId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateCostAlertSubscriptionDetails(),
+ "updateCostAlertSubscriptionDetails is required");
+
+ return clientCall(request, UpdateCostAlertSubscriptionResponse::builder)
+ .logger(LOG, "updateCostAlertSubscription")
+ .serviceDetails("CostAd", "UpdateCostAlertSubscription", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateCostAlertSubscriptionRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAlertSubscriptions")
+ .appendPathParam(request.getCostAlertSubscriptionId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAlertSubscription.class,
+ UpdateCostAlertSubscriptionResponse.Builder::costAlertSubscription)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateCostAlertSubscriptionResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "etag", UpdateCostAlertSubscriptionResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public UpdateCostAnomalyEventResponse updateCostAnomalyEvent(
+ UpdateCostAnomalyEventRequest request) {
+
+ Validate.notBlank(request.getCostAnomalyEventId(), "costAnomalyEventId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateCostAnomalyEventDetails(),
+ "updateCostAnomalyEventDetails is required");
+
+ return clientCall(request, UpdateCostAnomalyEventResponse::builder)
+ .logger(LOG, "updateCostAnomalyEvent")
+ .serviceDetails("CostAd", "UpdateCostAnomalyEvent", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateCostAnomalyEventRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyEvents")
+ .appendPathParam(request.getCostAnomalyEventId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyEvent.class,
+ UpdateCostAnomalyEventResponse.Builder::costAnomalyEvent)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateCostAnomalyEventResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", UpdateCostAnomalyEventResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public UpdateCostAnomalyMonitorResponse updateCostAnomalyMonitor(
+ UpdateCostAnomalyMonitorRequest request) {
+
+ Validate.notBlank(
+ request.getCostAnomalyMonitorId(), "costAnomalyMonitorId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateCostAnomalyMonitorDetails(),
+ "updateCostAnomalyMonitorDetails is required");
+
+ return clientCall(request, UpdateCostAnomalyMonitorResponse::builder)
+ .logger(LOG, "updateCostAnomalyMonitor")
+ .serviceDetails("CostAd", "UpdateCostAnomalyMonitor", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateCostAnomalyMonitorRequest::builder)
+ .basePath("/20190111")
+ .appendPathParam("costAnomalyMonitors")
+ .appendPathParam(request.getCostAnomalyMonitorId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.class,
+ UpdateCostAnomalyMonitorResponse.Builder::costAnomalyMonitor)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateCostAnomalyMonitorResponse.Builder::opcRequestId)
+ .handleResponseHeaderString("etag", UpdateCostAnomalyMonitorResponse.Builder::etag)
+ .callSync();
+ }
+
+ @Override
+ public CostAdWaiters getWaiters() {
+ return waiters;
+ }
+
+ @Override
+ public CostAdPaginators getPaginators() {
+ return paginators;
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider) {
+ this(builder(), authenticationDetailsProvider, null);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration) {
+ this(builder().configuration(configuration), authenticationDetailsProvider, null);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.BasicAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator) {
+ this(
+ builder().configuration(configuration).clientConfigurator(clientConfigurator),
+ authenticationDetailsProvider,
+ null);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory),
+ authenticationDetailsProvider,
+ null);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @param additionalClientConfigurators {@link Builder#additionalClientConfigurators}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory,
+ java.util.List additionalClientConfigurators) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory)
+ .additionalClientConfigurators(additionalClientConfigurators),
+ authenticationDetailsProvider,
+ null);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @param additionalClientConfigurators {@link Builder#additionalClientConfigurators}
+ * @param endpoint {@link Builder#endpoint}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory,
+ java.util.List additionalClientConfigurators,
+ String endpoint) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory)
+ .additionalClientConfigurators(additionalClientConfigurators)
+ .endpoint(endpoint),
+ authenticationDetailsProvider,
+ null);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @param additionalClientConfigurators {@link Builder#additionalClientConfigurators}
+ * @param endpoint {@link Builder#endpoint}
+ * @param signingStrategyRequestSignerFactories {@link
+ * Builder#signingStrategyRequestSignerFactories}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory,
+ java.util.Map<
+ com.oracle.bmc.http.signing.SigningStrategy,
+ com.oracle.bmc.http.signing.RequestSignerFactory>
+ signingStrategyRequestSignerFactories,
+ java.util.List additionalClientConfigurators,
+ String endpoint) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory)
+ .additionalClientConfigurators(additionalClientConfigurators)
+ .endpoint(endpoint)
+ .signingStrategyRequestSignerFactories(
+ signingStrategyRequestSignerFactories),
+ authenticationDetailsProvider,
+ null);
+ }
+
+ /**
+ * Create a new client instance.
+ *
+ * @param authenticationDetailsProvider The authentication details (see {@link Builder#build})
+ * @param configuration {@link Builder#configuration}
+ * @param clientConfigurator {@link Builder#clientConfigurator}
+ * @param defaultRequestSignerFactory {@link Builder#requestSignerFactory}
+ * @param additionalClientConfigurators {@link Builder#additionalClientConfigurators}
+ * @param endpoint {@link Builder#endpoint}
+ * @param signingStrategyRequestSignerFactories {@link
+ * Builder#signingStrategyRequestSignerFactories}
+ * @param executorService {@link Builder#executorService}
+ * @deprecated Use the {@link #builder() builder} instead.
+ */
+ @Deprecated
+ public CostAdClient(
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider authenticationDetailsProvider,
+ com.oracle.bmc.ClientConfiguration configuration,
+ com.oracle.bmc.http.ClientConfigurator clientConfigurator,
+ com.oracle.bmc.http.signing.RequestSignerFactory defaultRequestSignerFactory,
+ java.util.Map<
+ com.oracle.bmc.http.signing.SigningStrategy,
+ com.oracle.bmc.http.signing.RequestSignerFactory>
+ signingStrategyRequestSignerFactories,
+ java.util.List additionalClientConfigurators,
+ String endpoint,
+ java.util.concurrent.ExecutorService executorService) {
+ this(
+ builder()
+ .configuration(configuration)
+ .clientConfigurator(clientConfigurator)
+ .requestSignerFactory(defaultRequestSignerFactory)
+ .additionalClientConfigurators(additionalClientConfigurators)
+ .endpoint(endpoint)
+ .signingStrategyRequestSignerFactories(
+ signingStrategyRequestSignerFactories),
+ authenticationDetailsProvider,
+ executorService);
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdPaginators.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdPaginators.java
new file mode 100644
index 00000000000..5272e8a0b59
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdPaginators.java
@@ -0,0 +1,411 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad;
+
+import com.oracle.bmc.costad.requests.*;
+import com.oracle.bmc.costad.responses.*;
+
+/**
+ * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface
+ * to any list operations of CostAd where multiple pages of data may be fetched. Two styles of
+ * iteration are supported:
+ *
+ *
+ * - Iterating over the Response objects returned by the list operation. These are referred to
+ * as ResponseIterators, and the methods are suffixed with ResponseIterator. For example:
+ * listUsersResponseIterator
+ *
- Iterating over the resources/records being listed. These are referred to as
+ * RecordIterators, and the methods are suffixed with RecordIterator. For example:
+ * listUsersRecordIterator
+ *
+ *
+ * These iterables abstract away the need to write code to manually handle pagination via looping
+ * and using the page tokens. They will automatically fetch more data from the service when
+ * required.
+ *
+ * As an example, if we were using the ListUsers operation in IdentityService, then the {@link
+ * java.lang.Iterable} returned by calling a ResponseIterator method would iterate over the
+ * ListUsersResponse objects returned by each ListUsers call, whereas the {@link java.lang.Iterable}
+ * returned by calling a RecordIterator method would iterate over the User records and we don't have
+ * to deal with ListUsersResponse objects at all. In either case, pagination will be automatically
+ * handled so we can iterate until there are no more responses or no more resources/records
+ * available.
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+public class CostAdPaginators {
+ private final CostAd client;
+
+ public CostAdPaginators(CostAd client) {
+ this.client = client;
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the responses received from the
+ * listCostAlertSubscriptions operation. This iterable will fetch more data from the server as
+ * needed.
+ *
+ * @param request a request which can be sent to the service operation
+ * @return an {@link java.lang.Iterable} which can be used to iterate over the responses
+ * received from the service.
+ */
+ public Iterable listCostAlertSubscriptionsResponseIterator(
+ final ListCostAlertSubscriptionsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseIterable<
+ ListCostAlertSubscriptionsRequest.Builder,
+ ListCostAlertSubscriptionsRequest,
+ ListCostAlertSubscriptionsResponse>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListCostAlertSubscriptionsRequest.Builder get() {
+ return ListCostAlertSubscriptionsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListCostAlertSubscriptionsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAlertSubscriptionsRequest.Builder>,
+ ListCostAlertSubscriptionsRequest>() {
+ @Override
+ public ListCostAlertSubscriptionsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAlertSubscriptionsRequest.Builder>
+ input) {
+ if (input.getNextPageToken() == null) {
+ return input.getRequestBuilder().build();
+ } else {
+ return input.getRequestBuilder()
+ .page(input.getNextPageToken().orElse(null))
+ .build();
+ }
+ }
+ },
+ new java.util.function.Function<
+ ListCostAlertSubscriptionsRequest, ListCostAlertSubscriptionsResponse>() {
+ @Override
+ public ListCostAlertSubscriptionsResponse apply(
+ ListCostAlertSubscriptionsRequest request) {
+ return client.listCostAlertSubscriptions(request);
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the {@link
+ * com.oracle.bmc.costad.model.CostAlertSubscriptionSummary} objects contained in responses from
+ * the listCostAlertSubscriptions operation. This iterable will fetch more data from the server
+ * as needed.
+ *
+ * @param request a request which can be sent to the service operation
+ * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link
+ * com.oracle.bmc.costad.model.CostAlertSubscriptionSummary} objects contained in responses
+ * received from the service.
+ */
+ public Iterable
+ listCostAlertSubscriptionsRecordIterator(
+ final ListCostAlertSubscriptionsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseRecordIterable<
+ ListCostAlertSubscriptionsRequest.Builder,
+ ListCostAlertSubscriptionsRequest,
+ ListCostAlertSubscriptionsResponse,
+ com.oracle.bmc.costad.model.CostAlertSubscriptionSummary>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListCostAlertSubscriptionsRequest.Builder get() {
+ return ListCostAlertSubscriptionsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListCostAlertSubscriptionsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAlertSubscriptionsRequest.Builder>,
+ ListCostAlertSubscriptionsRequest>() {
+ @Override
+ public ListCostAlertSubscriptionsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAlertSubscriptionsRequest.Builder>
+ input) {
+ if (input.getNextPageToken() == null) {
+ return input.getRequestBuilder().build();
+ } else {
+ return input.getRequestBuilder()
+ .page(input.getNextPageToken().orElse(null))
+ .build();
+ }
+ }
+ },
+ new java.util.function.Function<
+ ListCostAlertSubscriptionsRequest, ListCostAlertSubscriptionsResponse>() {
+ @Override
+ public ListCostAlertSubscriptionsResponse apply(
+ ListCostAlertSubscriptionsRequest request) {
+ return client.listCostAlertSubscriptions(request);
+ }
+ },
+ new java.util.function.Function<
+ ListCostAlertSubscriptionsResponse,
+ java.util.List<
+ com.oracle.bmc.costad.model.CostAlertSubscriptionSummary>>() {
+ @Override
+ public java.util.List
+ apply(ListCostAlertSubscriptionsResponse response) {
+ return response.getCostAlertSubscriptionCollection().getItems();
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the responses received from the
+ * listCostAnomalyEvents operation. This iterable will fetch more data from the server as
+ * needed.
+ *
+ * @param request a request which can be sent to the service operation
+ * @return an {@link java.lang.Iterable} which can be used to iterate over the responses
+ * received from the service.
+ */
+ public Iterable listCostAnomalyEventsResponseIterator(
+ final ListCostAnomalyEventsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseIterable<
+ ListCostAnomalyEventsRequest.Builder,
+ ListCostAnomalyEventsRequest,
+ ListCostAnomalyEventsResponse>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListCostAnomalyEventsRequest.Builder get() {
+ return ListCostAnomalyEventsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListCostAnomalyEventsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyEventsRequest.Builder>,
+ ListCostAnomalyEventsRequest>() {
+ @Override
+ public ListCostAnomalyEventsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyEventsRequest.Builder>
+ input) {
+ if (input.getNextPageToken() == null) {
+ return input.getRequestBuilder().build();
+ } else {
+ return input.getRequestBuilder()
+ .page(input.getNextPageToken().orElse(null))
+ .build();
+ }
+ }
+ },
+ new java.util.function.Function<
+ ListCostAnomalyEventsRequest, ListCostAnomalyEventsResponse>() {
+ @Override
+ public ListCostAnomalyEventsResponse apply(
+ ListCostAnomalyEventsRequest request) {
+ return client.listCostAnomalyEvents(request);
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the {@link
+ * com.oracle.bmc.costad.model.CostAnomalyEventSummary} objects contained in responses from the
+ * listCostAnomalyEvents operation. This iterable will fetch more data from the server as
+ * needed.
+ *
+ * @param request a request which can be sent to the service operation
+ * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link
+ * com.oracle.bmc.costad.model.CostAnomalyEventSummary} objects contained in responses
+ * received from the service.
+ */
+ public Iterable
+ listCostAnomalyEventsRecordIterator(final ListCostAnomalyEventsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseRecordIterable<
+ ListCostAnomalyEventsRequest.Builder,
+ ListCostAnomalyEventsRequest,
+ ListCostAnomalyEventsResponse,
+ com.oracle.bmc.costad.model.CostAnomalyEventSummary>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListCostAnomalyEventsRequest.Builder get() {
+ return ListCostAnomalyEventsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListCostAnomalyEventsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyEventsRequest.Builder>,
+ ListCostAnomalyEventsRequest>() {
+ @Override
+ public ListCostAnomalyEventsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyEventsRequest.Builder>
+ input) {
+ if (input.getNextPageToken() == null) {
+ return input.getRequestBuilder().build();
+ } else {
+ return input.getRequestBuilder()
+ .page(input.getNextPageToken().orElse(null))
+ .build();
+ }
+ }
+ },
+ new java.util.function.Function<
+ ListCostAnomalyEventsRequest, ListCostAnomalyEventsResponse>() {
+ @Override
+ public ListCostAnomalyEventsResponse apply(
+ ListCostAnomalyEventsRequest request) {
+ return client.listCostAnomalyEvents(request);
+ }
+ },
+ new java.util.function.Function<
+ ListCostAnomalyEventsResponse,
+ java.util.List>() {
+ @Override
+ public java.util.List
+ apply(ListCostAnomalyEventsResponse response) {
+ return response.getCostAnomalyEventCollection().getItems();
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the responses received from the
+ * listCostAnomalyMonitors operation. This iterable will fetch more data from the server as
+ * needed.
+ *
+ * @param request a request which can be sent to the service operation
+ * @return an {@link java.lang.Iterable} which can be used to iterate over the responses
+ * received from the service.
+ */
+ public Iterable listCostAnomalyMonitorsResponseIterator(
+ final ListCostAnomalyMonitorsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseIterable<
+ ListCostAnomalyMonitorsRequest.Builder,
+ ListCostAnomalyMonitorsRequest,
+ ListCostAnomalyMonitorsResponse>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListCostAnomalyMonitorsRequest.Builder get() {
+ return ListCostAnomalyMonitorsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListCostAnomalyMonitorsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyMonitorsRequest.Builder>,
+ ListCostAnomalyMonitorsRequest>() {
+ @Override
+ public ListCostAnomalyMonitorsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyMonitorsRequest.Builder>
+ input) {
+ if (input.getNextPageToken() == null) {
+ return input.getRequestBuilder().build();
+ } else {
+ return input.getRequestBuilder()
+ .page(input.getNextPageToken().orElse(null))
+ .build();
+ }
+ }
+ },
+ new java.util.function.Function<
+ ListCostAnomalyMonitorsRequest, ListCostAnomalyMonitorsResponse>() {
+ @Override
+ public ListCostAnomalyMonitorsResponse apply(
+ ListCostAnomalyMonitorsRequest request) {
+ return client.listCostAnomalyMonitors(request);
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the {@link
+ * com.oracle.bmc.costad.model.CostAnomalyMonitorSummary} objects contained in responses from
+ * the listCostAnomalyMonitors operation. This iterable will fetch more data from the server as
+ * needed.
+ *
+ * @param request a request which can be sent to the service operation
+ * @return an {@link java.lang.Iterable} which can be used to iterate over the {@link
+ * com.oracle.bmc.costad.model.CostAnomalyMonitorSummary} objects contained in responses
+ * received from the service.
+ */
+ public Iterable
+ listCostAnomalyMonitorsRecordIterator(final ListCostAnomalyMonitorsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseRecordIterable<
+ ListCostAnomalyMonitorsRequest.Builder,
+ ListCostAnomalyMonitorsRequest,
+ ListCostAnomalyMonitorsResponse,
+ com.oracle.bmc.costad.model.CostAnomalyMonitorSummary>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListCostAnomalyMonitorsRequest.Builder get() {
+ return ListCostAnomalyMonitorsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListCostAnomalyMonitorsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyMonitorsRequest.Builder>,
+ ListCostAnomalyMonitorsRequest>() {
+ @Override
+ public ListCostAnomalyMonitorsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListCostAnomalyMonitorsRequest.Builder>
+ input) {
+ if (input.getNextPageToken() == null) {
+ return input.getRequestBuilder().build();
+ } else {
+ return input.getRequestBuilder()
+ .page(input.getNextPageToken().orElse(null))
+ .build();
+ }
+ }
+ },
+ new java.util.function.Function<
+ ListCostAnomalyMonitorsRequest, ListCostAnomalyMonitorsResponse>() {
+ @Override
+ public ListCostAnomalyMonitorsResponse apply(
+ ListCostAnomalyMonitorsRequest request) {
+ return client.listCostAnomalyMonitors(request);
+ }
+ },
+ new java.util.function.Function<
+ ListCostAnomalyMonitorsResponse,
+ java.util.List>() {
+ @Override
+ public java.util.List
+ apply(ListCostAnomalyMonitorsResponse response) {
+ return response.getCostAnomalyMonitorCollection().getItems();
+ }
+ });
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdWaiters.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdWaiters.java
new file mode 100644
index 00000000000..af4ddad0b3d
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/CostAdWaiters.java
@@ -0,0 +1,351 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad;
+
+import com.oracle.bmc.costad.requests.*;
+import com.oracle.bmc.costad.responses.*;
+
+/**
+ * Collection of helper methods to produce {@link com.oracle.bmc.waiter.Waiter}s for different
+ * resources of CostAd.
+ *
+ * The default configuration used is defined by {@link
+ * com.oracle.bmc.waiter.Waiters.Waiters#DEFAULT_POLLING_WAITER}.
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+public class CostAdWaiters {
+ private final java.util.concurrent.ExecutorService executorService;
+ private final CostAd client;
+
+ public CostAdWaiters(java.util.concurrent.ExecutorService executorService, CostAd client) {
+ this.executorService = executorService;
+ this.client = client;
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the default configuration.
+ *
+ * @param request the request to send
+ * @param targetStates the desired states to wait for. If multiple states are provided then the
+ * waiter will return once the resource reaches any of the provided states
+ * @return a new {@code Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter<
+ GetCostAlertSubscriptionRequest, GetCostAlertSubscriptionResponse>
+ forCostAlertSubscription(
+ GetCostAlertSubscriptionRequest request,
+ com.oracle.bmc.costad.model.CostAlertSubscription.LifecycleState...
+ targetStates) {
+ com.oracle.bmc.util.internal.Validate.notEmpty(
+ targetStates, "At least one targetState must be provided");
+ com.oracle.bmc.util.internal.Validate.noNullElements(
+ targetStates, "Null targetState values are not permitted");
+
+ return forCostAlertSubscription(
+ com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetStates);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the provided configuration.
+ *
+ * @param request the request to send
+ * @param targetState the desired state to wait for
+ * @param terminationStrategy the {@link com.oracle.bmc.waiter.TerminationStrategy} to use
+ * @param delayStrategy the {@link com.oracle.bmc.waiter.DelayStrategy} to use
+ * @return a new {@code com.oracle.bmc.waiter.Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter<
+ GetCostAlertSubscriptionRequest, GetCostAlertSubscriptionResponse>
+ forCostAlertSubscription(
+ GetCostAlertSubscriptionRequest request,
+ com.oracle.bmc.costad.model.CostAlertSubscription.LifecycleState targetState,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy) {
+ com.oracle.bmc.util.internal.Validate.notNull(
+ targetState, "The targetState cannot be null");
+
+ return forCostAlertSubscription(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request,
+ targetState);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the provided configuration.
+ *
+ * @param request the request to send
+ * @param terminationStrategy the {@link com.oracle.bmc.waiter.TerminationStrategy} to use
+ * @param delayStrategy the {@link com.oracle.bmc.waiter.DelayStrategy} to use
+ * @param targetStates the desired states to wait for. The waiter will return once the resource
+ * reaches any of the provided states
+ * @return a new {@code com.oracle.bmc.waiter.Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter<
+ GetCostAlertSubscriptionRequest, GetCostAlertSubscriptionResponse>
+ forCostAlertSubscription(
+ GetCostAlertSubscriptionRequest request,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy,
+ com.oracle.bmc.costad.model.CostAlertSubscription.LifecycleState...
+ targetStates) {
+ com.oracle.bmc.util.internal.Validate.notEmpty(
+ targetStates, "At least one target state must be provided");
+ com.oracle.bmc.util.internal.Validate.noNullElements(
+ targetStates, "Null target states are not permitted");
+
+ return forCostAlertSubscription(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request,
+ targetStates);
+ }
+
+ // Helper method to create a new Waiter for CostAlertSubscription.
+ private com.oracle.bmc.waiter.Waiter<
+ GetCostAlertSubscriptionRequest, GetCostAlertSubscriptionResponse>
+ forCostAlertSubscription(
+ com.oracle.bmc.waiter.BmcGenericWaiter waiter,
+ final GetCostAlertSubscriptionRequest request,
+ final com.oracle.bmc.costad.model.CostAlertSubscription.LifecycleState...
+ targetStates) {
+ final java.util.Set
+ targetStatesSet = new java.util.HashSet<>(java.util.Arrays.asList(targetStates));
+
+ return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>(
+ executorService,
+ waiter.toCallable(
+ () -> request,
+ new java.util.function.Function<
+ GetCostAlertSubscriptionRequest,
+ GetCostAlertSubscriptionResponse>() {
+ @Override
+ public GetCostAlertSubscriptionResponse apply(
+ GetCostAlertSubscriptionRequest request) {
+ return client.getCostAlertSubscription(request);
+ }
+ },
+ new java.util.function.Predicate() {
+ @Override
+ public boolean test(GetCostAlertSubscriptionResponse response) {
+ return targetStatesSet.contains(
+ response.getCostAlertSubscription().getLifecycleState());
+ }
+ },
+ false),
+ request);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the default configuration.
+ *
+ * @param request the request to send
+ * @param targetStates the desired states to wait for. If multiple states are provided then the
+ * waiter will return once the resource reaches any of the provided states
+ * @return a new {@code Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forCostAnomalyEvent(
+ GetCostAnomalyEventRequest request,
+ com.oracle.bmc.costad.model.CostAnomalyEvent.LifecycleState... targetStates) {
+ com.oracle.bmc.util.internal.Validate.notEmpty(
+ targetStates, "At least one targetState must be provided");
+ com.oracle.bmc.util.internal.Validate.noNullElements(
+ targetStates, "Null targetState values are not permitted");
+
+ return forCostAnomalyEvent(
+ com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetStates);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the provided configuration.
+ *
+ * @param request the request to send
+ * @param targetState the desired state to wait for
+ * @param terminationStrategy the {@link com.oracle.bmc.waiter.TerminationStrategy} to use
+ * @param delayStrategy the {@link com.oracle.bmc.waiter.DelayStrategy} to use
+ * @return a new {@code com.oracle.bmc.waiter.Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forCostAnomalyEvent(
+ GetCostAnomalyEventRequest request,
+ com.oracle.bmc.costad.model.CostAnomalyEvent.LifecycleState targetState,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy) {
+ com.oracle.bmc.util.internal.Validate.notNull(
+ targetState, "The targetState cannot be null");
+
+ return forCostAnomalyEvent(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request,
+ targetState);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the provided configuration.
+ *
+ * @param request the request to send
+ * @param terminationStrategy the {@link com.oracle.bmc.waiter.TerminationStrategy} to use
+ * @param delayStrategy the {@link com.oracle.bmc.waiter.DelayStrategy} to use
+ * @param targetStates the desired states to wait for. The waiter will return once the resource
+ * reaches any of the provided states
+ * @return a new {@code com.oracle.bmc.waiter.Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forCostAnomalyEvent(
+ GetCostAnomalyEventRequest request,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy,
+ com.oracle.bmc.costad.model.CostAnomalyEvent.LifecycleState... targetStates) {
+ com.oracle.bmc.util.internal.Validate.notEmpty(
+ targetStates, "At least one target state must be provided");
+ com.oracle.bmc.util.internal.Validate.noNullElements(
+ targetStates, "Null target states are not permitted");
+
+ return forCostAnomalyEvent(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request,
+ targetStates);
+ }
+
+ // Helper method to create a new Waiter for CostAnomalyEvent.
+ private com.oracle.bmc.waiter.Waiter
+ forCostAnomalyEvent(
+ com.oracle.bmc.waiter.BmcGenericWaiter waiter,
+ final GetCostAnomalyEventRequest request,
+ final com.oracle.bmc.costad.model.CostAnomalyEvent.LifecycleState...
+ targetStates) {
+ final java.util.Set
+ targetStatesSet = new java.util.HashSet<>(java.util.Arrays.asList(targetStates));
+
+ return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>(
+ executorService,
+ waiter.toCallable(
+ () -> request,
+ new java.util.function.Function<
+ GetCostAnomalyEventRequest, GetCostAnomalyEventResponse>() {
+ @Override
+ public GetCostAnomalyEventResponse apply(
+ GetCostAnomalyEventRequest request) {
+ return client.getCostAnomalyEvent(request);
+ }
+ },
+ new java.util.function.Predicate() {
+ @Override
+ public boolean test(GetCostAnomalyEventResponse response) {
+ return targetStatesSet.contains(
+ response.getCostAnomalyEvent().getLifecycleState());
+ }
+ },
+ false),
+ request);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the default configuration.
+ *
+ * @param request the request to send
+ * @param targetStates the desired states to wait for. If multiple states are provided then the
+ * waiter will return once the resource reaches any of the provided states
+ * @return a new {@code Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forCostAnomalyMonitor(
+ GetCostAnomalyMonitorRequest request,
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.LifecycleState... targetStates) {
+ com.oracle.bmc.util.internal.Validate.notEmpty(
+ targetStates, "At least one targetState must be provided");
+ com.oracle.bmc.util.internal.Validate.noNullElements(
+ targetStates, "Null targetState values are not permitted");
+
+ return forCostAnomalyMonitor(
+ com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request, targetStates);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the provided configuration.
+ *
+ * @param request the request to send
+ * @param targetState the desired state to wait for
+ * @param terminationStrategy the {@link com.oracle.bmc.waiter.TerminationStrategy} to use
+ * @param delayStrategy the {@link com.oracle.bmc.waiter.DelayStrategy} to use
+ * @return a new {@code com.oracle.bmc.waiter.Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forCostAnomalyMonitor(
+ GetCostAnomalyMonitorRequest request,
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.LifecycleState targetState,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy) {
+ com.oracle.bmc.util.internal.Validate.notNull(
+ targetState, "The targetState cannot be null");
+
+ return forCostAnomalyMonitor(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request,
+ targetState);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using the provided configuration.
+ *
+ * @param request the request to send
+ * @param terminationStrategy the {@link com.oracle.bmc.waiter.TerminationStrategy} to use
+ * @param delayStrategy the {@link com.oracle.bmc.waiter.DelayStrategy} to use
+ * @param targetStates the desired states to wait for. The waiter will return once the resource
+ * reaches any of the provided states
+ * @return a new {@code com.oracle.bmc.waiter.Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forCostAnomalyMonitor(
+ GetCostAnomalyMonitorRequest request,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy,
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.LifecycleState... targetStates) {
+ com.oracle.bmc.util.internal.Validate.notEmpty(
+ targetStates, "At least one target state must be provided");
+ com.oracle.bmc.util.internal.Validate.noNullElements(
+ targetStates, "Null target states are not permitted");
+
+ return forCostAnomalyMonitor(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request,
+ targetStates);
+ }
+
+ // Helper method to create a new Waiter for CostAnomalyMonitor.
+ private com.oracle.bmc.waiter.Waiter<
+ GetCostAnomalyMonitorRequest, GetCostAnomalyMonitorResponse>
+ forCostAnomalyMonitor(
+ com.oracle.bmc.waiter.BmcGenericWaiter waiter,
+ final GetCostAnomalyMonitorRequest request,
+ final com.oracle.bmc.costad.model.CostAnomalyMonitor.LifecycleState...
+ targetStates) {
+ final java.util.Set
+ targetStatesSet = new java.util.HashSet<>(java.util.Arrays.asList(targetStates));
+
+ return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>(
+ executorService,
+ waiter.toCallable(
+ () -> request,
+ new java.util.function.Function<
+ GetCostAnomalyMonitorRequest, GetCostAnomalyMonitorResponse>() {
+ @Override
+ public GetCostAnomalyMonitorResponse apply(
+ GetCostAnomalyMonitorRequest request) {
+ return client.getCostAnomalyMonitor(request);
+ }
+ },
+ new java.util.function.Predicate() {
+ @Override
+ public boolean test(GetCostAnomalyMonitorResponse response) {
+ return targetStatesSet.contains(
+ response.getCostAnomalyMonitor().getLifecycleState());
+ }
+ },
+ targetStatesSet.contains(
+ com.oracle.bmc.costad.model.CostAnomalyMonitor.LifecycleState
+ .Deleted)),
+ request);
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscription.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscription.java
new file mode 100644
index 00000000000..bdb3a5bd17e
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscription.java
@@ -0,0 +1,676 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * A CostAlertSubscription.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAlertSubscription.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAlertSubscription
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "id",
+ "compartmentId",
+ "name",
+ "lifecycleState",
+ "channels",
+ "description",
+ "timeCreated",
+ "timeUpdated",
+ "costAnomalyMonitors",
+ "definedTags",
+ "freeformTags",
+ "systemTags"
+ })
+ public CostAlertSubscription(
+ String id,
+ String compartmentId,
+ String name,
+ LifecycleState lifecycleState,
+ String channels,
+ String description,
+ java.util.Date timeCreated,
+ java.util.Date timeUpdated,
+ Object costAnomalyMonitors,
+ java.util.Map> definedTags,
+ java.util.Map freeformTags,
+ java.util.Map> systemTags) {
+ super();
+ this.id = id;
+ this.compartmentId = compartmentId;
+ this.name = name;
+ this.lifecycleState = lifecycleState;
+ this.channels = channels;
+ this.description = description;
+ this.timeCreated = timeCreated;
+ this.timeUpdated = timeUpdated;
+ this.costAnomalyMonitors = costAnomalyMonitors;
+ this.definedTags = definedTags;
+ this.freeformTags = freeformTags;
+ this.systemTags = systemTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** The OCID of the Cost Alert Subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private String id;
+
+ /**
+ * The OCID of the Cost Alert Subscription.
+ *
+ * @param id the value to set
+ * @return this builder
+ */
+ public Builder id(String id) {
+ this.id = id;
+ this.__explicitlySet__.add("id");
+ return this;
+ }
+ /** The OCID of the compartment which hold the cost alert subscription resource. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The OCID of the compartment which hold the cost alert subscription resource.
+ *
+ * @param compartmentId the value to set
+ * @return this builder
+ */
+ public Builder compartmentId(String compartmentId) {
+ this.compartmentId = compartmentId;
+ this.__explicitlySet__.add("compartmentId");
+ return this;
+ }
+ /** The name of the cost alert subscription. Avoid entering confidential information. */
+ @com.fasterxml.jackson.annotation.JsonProperty("name")
+ private String name;
+
+ /**
+ * The name of the cost alert subscription. Avoid entering confidential information.
+ *
+ * @param name the value to set
+ * @return this builder
+ */
+ public Builder name(String name) {
+ this.name = name;
+ this.__explicitlySet__.add("name");
+ return this;
+ }
+ /** The current state of the cost alert subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost alert subscription.
+ *
+ * @param lifecycleState the value to set
+ * @return this builder
+ */
+ public Builder lifecycleState(LifecycleState lifecycleState) {
+ this.lifecycleState = lifecycleState;
+ this.__explicitlySet__.add("lifecycleState");
+ return this;
+ }
+ /** The notification channels string. */
+ @com.fasterxml.jackson.annotation.JsonProperty("channels")
+ private String channels;
+
+ /**
+ * The notification channels string.
+ *
+ * @param channels the value to set
+ * @return this builder
+ */
+ public Builder channels(String channels) {
+ this.channels = channels;
+ this.__explicitlySet__.add("channels");
+ return this;
+ }
+ /** The description of the cost alert subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("description")
+ private String description;
+
+ /**
+ * The description of the cost alert subscription.
+ *
+ * @param description the value to set
+ * @return this builder
+ */
+ public Builder description(String description) {
+ this.description = description;
+ this.__explicitlySet__.add("description");
+ return this;
+ }
+ /** The time that the cost alert subscription was created. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private java.util.Date timeCreated;
+
+ /**
+ * The time that the cost alert subscription was created.
+ *
+ * @param timeCreated the value to set
+ * @return this builder
+ */
+ public Builder timeCreated(java.util.Date timeCreated) {
+ this.timeCreated = timeCreated;
+ this.__explicitlySet__.add("timeCreated");
+ return this;
+ }
+ /** The time that the cost alert subscription was updated. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private java.util.Date timeUpdated;
+
+ /**
+ * The time that the cost alert subscription was updated.
+ *
+ * @param timeUpdated the value to set
+ * @return this builder
+ */
+ public Builder timeUpdated(java.util.Date timeUpdated) {
+ this.timeUpdated = timeUpdated;
+ this.__explicitlySet__.add("timeUpdated");
+ return this;
+ }
+ /** List of monitor identifiers */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAnomalyMonitors")
+ private Object costAnomalyMonitors;
+
+ /**
+ * List of monitor identifiers
+ *
+ * @param costAnomalyMonitors the value to set
+ * @return this builder
+ */
+ public Builder costAnomalyMonitors(Object costAnomalyMonitors) {
+ this.costAnomalyMonitors = costAnomalyMonitors;
+ this.__explicitlySet__.add("costAnomalyMonitors");
+ return this;
+ }
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @param definedTags the value to set
+ * @return this builder
+ */
+ public Builder definedTags(
+ java.util.Map> definedTags) {
+ this.definedTags = definedTags;
+ this.__explicitlySet__.add("definedTags");
+ return this;
+ }
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("freeformTags")
+ private java.util.Map freeformTags;
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ *
+ * @param freeformTags the value to set
+ * @return this builder
+ */
+ public Builder freeformTags(java.util.Map freeformTags) {
+ this.freeformTags = freeformTags;
+ this.__explicitlySet__.add("freeformTags");
+ return this;
+ }
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("systemTags")
+ private java.util.Map> systemTags;
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ *
+ * @param systemTags the value to set
+ * @return this builder
+ */
+ public Builder systemTags(java.util.Map> systemTags) {
+ this.systemTags = systemTags;
+ this.__explicitlySet__.add("systemTags");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAlertSubscription build() {
+ CostAlertSubscription model =
+ new CostAlertSubscription(
+ this.id,
+ this.compartmentId,
+ this.name,
+ this.lifecycleState,
+ this.channels,
+ this.description,
+ this.timeCreated,
+ this.timeUpdated,
+ this.costAnomalyMonitors,
+ this.definedTags,
+ this.freeformTags,
+ this.systemTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAlertSubscription model) {
+ if (model.wasPropertyExplicitlySet("id")) {
+ this.id(model.getId());
+ }
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ if (model.wasPropertyExplicitlySet("name")) {
+ this.name(model.getName());
+ }
+ if (model.wasPropertyExplicitlySet("lifecycleState")) {
+ this.lifecycleState(model.getLifecycleState());
+ }
+ if (model.wasPropertyExplicitlySet("channels")) {
+ this.channels(model.getChannels());
+ }
+ if (model.wasPropertyExplicitlySet("description")) {
+ this.description(model.getDescription());
+ }
+ if (model.wasPropertyExplicitlySet("timeCreated")) {
+ this.timeCreated(model.getTimeCreated());
+ }
+ if (model.wasPropertyExplicitlySet("timeUpdated")) {
+ this.timeUpdated(model.getTimeUpdated());
+ }
+ if (model.wasPropertyExplicitlySet("costAnomalyMonitors")) {
+ this.costAnomalyMonitors(model.getCostAnomalyMonitors());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("systemTags")) {
+ this.systemTags(model.getSystemTags());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** The OCID of the Cost Alert Subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private final String id;
+
+ /**
+ * The OCID of the Cost Alert Subscription.
+ *
+ * @return the value
+ */
+ public String getId() {
+ return id;
+ }
+
+ /** The OCID of the compartment which hold the cost alert subscription resource. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The OCID of the compartment which hold the cost alert subscription resource.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ /** The name of the cost alert subscription. Avoid entering confidential information. */
+ @com.fasterxml.jackson.annotation.JsonProperty("name")
+ private final String name;
+
+ /**
+ * The name of the cost alert subscription. Avoid entering confidential information.
+ *
+ * @return the value
+ */
+ public String getName() {
+ return name;
+ }
+
+ /** The current state of the cost alert subscription. */
+ public enum LifecycleState implements com.oracle.bmc.http.internal.BmcEnum {
+ Active("ACTIVE"),
+ Inactive("INACTIVE"),
+
+ /**
+ * This value is used if a service returns a value for this enum that is not recognized by
+ * this version of the SDK.
+ */
+ UnknownEnumValue(null);
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(LifecycleState.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (LifecycleState v : LifecycleState.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ LifecycleState(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static LifecycleState create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+ };
+ /** The current state of the cost alert subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private final LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost alert subscription.
+ *
+ * @return the value
+ */
+ public LifecycleState getLifecycleState() {
+ return lifecycleState;
+ }
+
+ /** The notification channels string. */
+ @com.fasterxml.jackson.annotation.JsonProperty("channels")
+ private final String channels;
+
+ /**
+ * The notification channels string.
+ *
+ * @return the value
+ */
+ public String getChannels() {
+ return channels;
+ }
+
+ /** The description of the cost alert subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("description")
+ private final String description;
+
+ /**
+ * The description of the cost alert subscription.
+ *
+ * @return the value
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /** The time that the cost alert subscription was created. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private final java.util.Date timeCreated;
+
+ /**
+ * The time that the cost alert subscription was created.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeCreated() {
+ return timeCreated;
+ }
+
+ /** The time that the cost alert subscription was updated. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private final java.util.Date timeUpdated;
+
+ /**
+ * The time that the cost alert subscription was updated.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeUpdated() {
+ return timeUpdated;
+ }
+
+ /** List of monitor identifiers */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAnomalyMonitors")
+ private final Object costAnomalyMonitors;
+
+ /**
+ * List of monitor identifiers
+ *
+ * @return the value
+ */
+ public Object getCostAnomalyMonitors() {
+ return costAnomalyMonitors;
+ }
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private final java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @return the value
+ */
+ public java.util.Map> getDefinedTags() {
+ return definedTags;
+ }
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("freeformTags")
+ private final java.util.Map freeformTags;
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ *
+ * @return the value
+ */
+ public java.util.Map getFreeformTags() {
+ return freeformTags;
+ }
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System tags
+ * can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("systemTags")
+ private final java.util.Map> systemTags;
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System tags
+ * can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ *
+ * @return the value
+ */
+ public java.util.Map> getSystemTags() {
+ return systemTags;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAlertSubscription(");
+ sb.append("super=").append(super.toString());
+ sb.append("id=").append(String.valueOf(this.id));
+ sb.append(", compartmentId=").append(String.valueOf(this.compartmentId));
+ sb.append(", name=").append(String.valueOf(this.name));
+ sb.append(", lifecycleState=").append(String.valueOf(this.lifecycleState));
+ sb.append(", channels=").append(String.valueOf(this.channels));
+ sb.append(", description=").append(String.valueOf(this.description));
+ sb.append(", timeCreated=").append(String.valueOf(this.timeCreated));
+ sb.append(", timeUpdated=").append(String.valueOf(this.timeUpdated));
+ sb.append(", costAnomalyMonitors=").append(String.valueOf(this.costAnomalyMonitors));
+ sb.append(", definedTags=").append(String.valueOf(this.definedTags));
+ sb.append(", freeformTags=").append(String.valueOf(this.freeformTags));
+ sb.append(", systemTags=").append(String.valueOf(this.systemTags));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAlertSubscription)) {
+ return false;
+ }
+
+ CostAlertSubscription other = (CostAlertSubscription) o;
+ return java.util.Objects.equals(this.id, other.id)
+ && java.util.Objects.equals(this.compartmentId, other.compartmentId)
+ && java.util.Objects.equals(this.name, other.name)
+ && java.util.Objects.equals(this.lifecycleState, other.lifecycleState)
+ && java.util.Objects.equals(this.channels, other.channels)
+ && java.util.Objects.equals(this.description, other.description)
+ && java.util.Objects.equals(this.timeCreated, other.timeCreated)
+ && java.util.Objects.equals(this.timeUpdated, other.timeUpdated)
+ && java.util.Objects.equals(this.costAnomalyMonitors, other.costAnomalyMonitors)
+ && java.util.Objects.equals(this.definedTags, other.definedTags)
+ && java.util.Objects.equals(this.freeformTags, other.freeformTags)
+ && java.util.Objects.equals(this.systemTags, other.systemTags)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.id == null ? 43 : this.id.hashCode());
+ result =
+ (result * PRIME)
+ + (this.compartmentId == null ? 43 : this.compartmentId.hashCode());
+ result = (result * PRIME) + (this.name == null ? 43 : this.name.hashCode());
+ result =
+ (result * PRIME)
+ + (this.lifecycleState == null ? 43 : this.lifecycleState.hashCode());
+ result = (result * PRIME) + (this.channels == null ? 43 : this.channels.hashCode());
+ result = (result * PRIME) + (this.description == null ? 43 : this.description.hashCode());
+ result = (result * PRIME) + (this.timeCreated == null ? 43 : this.timeCreated.hashCode());
+ result = (result * PRIME) + (this.timeUpdated == null ? 43 : this.timeUpdated.hashCode());
+ result =
+ (result * PRIME)
+ + (this.costAnomalyMonitors == null
+ ? 43
+ : this.costAnomalyMonitors.hashCode());
+ result = (result * PRIME) + (this.definedTags == null ? 43 : this.definedTags.hashCode());
+ result = (result * PRIME) + (this.freeformTags == null ? 43 : this.freeformTags.hashCode());
+ result = (result * PRIME) + (this.systemTags == null ? 43 : this.systemTags.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionCollection.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionCollection.java
new file mode 100644
index 00000000000..30be335ec89
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionCollection.java
@@ -0,0 +1,134 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * Results of a costAlertSubscription search. Contains both CostAlertSubscriptionSummary items and
+ * other data.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAlertSubscriptionCollection.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAlertSubscriptionCollection
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"items"})
+ public CostAlertSubscriptionCollection(java.util.List items) {
+ super();
+ this.items = items;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** A page of CostAnomalyMonitorSummary objects. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private java.util.List items;
+
+ /**
+ * A page of CostAnomalyMonitorSummary objects.
+ *
+ * @param items the value to set
+ * @return this builder
+ */
+ public Builder items(java.util.List items) {
+ this.items = items;
+ this.__explicitlySet__.add("items");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAlertSubscriptionCollection build() {
+ CostAlertSubscriptionCollection model = new CostAlertSubscriptionCollection(this.items);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAlertSubscriptionCollection model) {
+ if (model.wasPropertyExplicitlySet("items")) {
+ this.items(model.getItems());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** A page of CostAnomalyMonitorSummary objects. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private final java.util.List items;
+
+ /**
+ * A page of CostAnomalyMonitorSummary objects.
+ *
+ * @return the value
+ */
+ public java.util.List getItems() {
+ return items;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAlertSubscriptionCollection(");
+ sb.append("super=").append(super.toString());
+ sb.append("items=").append(String.valueOf(this.items));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAlertSubscriptionCollection)) {
+ return false;
+ }
+
+ CostAlertSubscriptionCollection other = (CostAlertSubscriptionCollection) o;
+ return java.util.Objects.equals(this.items, other.items) && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.items == null ? 43 : this.items.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionMap.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionMap.java
new file mode 100644
index 00000000000..04ce2f48276
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionMap.java
@@ -0,0 +1,316 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * The mapping of cost monitor to alert subscription along with thresholds.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAlertSubscriptionMap.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAlertSubscriptionMap
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "operator",
+ "thresholdAbsoluteValue",
+ "thresholdRelativePercent",
+ "costAlertSubscriptionId"
+ })
+ public CostAlertSubscriptionMap(
+ Operator operator,
+ Integer thresholdAbsoluteValue,
+ Integer thresholdRelativePercent,
+ String costAlertSubscriptionId) {
+ super();
+ this.operator = operator;
+ this.thresholdAbsoluteValue = thresholdAbsoluteValue;
+ this.thresholdRelativePercent = thresholdRelativePercent;
+ this.costAlertSubscriptionId = costAlertSubscriptionId;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** The filter operator. Example: 'AND', 'OR'. */
+ @com.fasterxml.jackson.annotation.JsonProperty("operator")
+ private Operator operator;
+
+ /**
+ * The filter operator. Example: 'AND', 'OR'.
+ *
+ * @param operator the value to set
+ * @return this builder
+ */
+ public Builder operator(Operator operator) {
+ this.operator = operator;
+ this.__explicitlySet__.add("operator");
+ return this;
+ }
+ /** The absolute threshold value. */
+ @com.fasterxml.jackson.annotation.JsonProperty("thresholdAbsoluteValue")
+ private Integer thresholdAbsoluteValue;
+
+ /**
+ * The absolute threshold value.
+ *
+ * @param thresholdAbsoluteValue the value to set
+ * @return this builder
+ */
+ public Builder thresholdAbsoluteValue(Integer thresholdAbsoluteValue) {
+ this.thresholdAbsoluteValue = thresholdAbsoluteValue;
+ this.__explicitlySet__.add("thresholdAbsoluteValue");
+ return this;
+ }
+ /** The relative percentage threshold value. */
+ @com.fasterxml.jackson.annotation.JsonProperty("thresholdRelativePercent")
+ private Integer thresholdRelativePercent;
+
+ /**
+ * The relative percentage threshold value.
+ *
+ * @param thresholdRelativePercent the value to set
+ * @return this builder
+ */
+ public Builder thresholdRelativePercent(Integer thresholdRelativePercent) {
+ this.thresholdRelativePercent = thresholdRelativePercent;
+ this.__explicitlySet__.add("thresholdRelativePercent");
+ return this;
+ }
+ /** The costAlertSubscription ocid which the cost monitor alert maps to. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAlertSubscriptionId")
+ private String costAlertSubscriptionId;
+
+ /**
+ * The costAlertSubscription ocid which the cost monitor alert maps to.
+ *
+ * @param costAlertSubscriptionId the value to set
+ * @return this builder
+ */
+ public Builder costAlertSubscriptionId(String costAlertSubscriptionId) {
+ this.costAlertSubscriptionId = costAlertSubscriptionId;
+ this.__explicitlySet__.add("costAlertSubscriptionId");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAlertSubscriptionMap build() {
+ CostAlertSubscriptionMap model =
+ new CostAlertSubscriptionMap(
+ this.operator,
+ this.thresholdAbsoluteValue,
+ this.thresholdRelativePercent,
+ this.costAlertSubscriptionId);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAlertSubscriptionMap model) {
+ if (model.wasPropertyExplicitlySet("operator")) {
+ this.operator(model.getOperator());
+ }
+ if (model.wasPropertyExplicitlySet("thresholdAbsoluteValue")) {
+ this.thresholdAbsoluteValue(model.getThresholdAbsoluteValue());
+ }
+ if (model.wasPropertyExplicitlySet("thresholdRelativePercent")) {
+ this.thresholdRelativePercent(model.getThresholdRelativePercent());
+ }
+ if (model.wasPropertyExplicitlySet("costAlertSubscriptionId")) {
+ this.costAlertSubscriptionId(model.getCostAlertSubscriptionId());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** The filter operator. Example: 'AND', 'OR'. */
+ public enum Operator implements com.oracle.bmc.http.internal.BmcEnum {
+ And("AND"),
+ Or("OR"),
+
+ /**
+ * This value is used if a service returns a value for this enum that is not recognized by
+ * this version of the SDK.
+ */
+ UnknownEnumValue(null);
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(Operator.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (Operator v : Operator.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ Operator(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static Operator create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'Operator', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+ };
+ /** The filter operator. Example: 'AND', 'OR'. */
+ @com.fasterxml.jackson.annotation.JsonProperty("operator")
+ private final Operator operator;
+
+ /**
+ * The filter operator. Example: 'AND', 'OR'.
+ *
+ * @return the value
+ */
+ public Operator getOperator() {
+ return operator;
+ }
+
+ /** The absolute threshold value. */
+ @com.fasterxml.jackson.annotation.JsonProperty("thresholdAbsoluteValue")
+ private final Integer thresholdAbsoluteValue;
+
+ /**
+ * The absolute threshold value.
+ *
+ * @return the value
+ */
+ public Integer getThresholdAbsoluteValue() {
+ return thresholdAbsoluteValue;
+ }
+
+ /** The relative percentage threshold value. */
+ @com.fasterxml.jackson.annotation.JsonProperty("thresholdRelativePercent")
+ private final Integer thresholdRelativePercent;
+
+ /**
+ * The relative percentage threshold value.
+ *
+ * @return the value
+ */
+ public Integer getThresholdRelativePercent() {
+ return thresholdRelativePercent;
+ }
+
+ /** The costAlertSubscription ocid which the cost monitor alert maps to. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAlertSubscriptionId")
+ private final String costAlertSubscriptionId;
+
+ /**
+ * The costAlertSubscription ocid which the cost monitor alert maps to.
+ *
+ * @return the value
+ */
+ public String getCostAlertSubscriptionId() {
+ return costAlertSubscriptionId;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAlertSubscriptionMap(");
+ sb.append("super=").append(super.toString());
+ sb.append("operator=").append(String.valueOf(this.operator));
+ sb.append(", thresholdAbsoluteValue=").append(String.valueOf(this.thresholdAbsoluteValue));
+ sb.append(", thresholdRelativePercent=")
+ .append(String.valueOf(this.thresholdRelativePercent));
+ sb.append(", costAlertSubscriptionId=")
+ .append(String.valueOf(this.costAlertSubscriptionId));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAlertSubscriptionMap)) {
+ return false;
+ }
+
+ CostAlertSubscriptionMap other = (CostAlertSubscriptionMap) o;
+ return java.util.Objects.equals(this.operator, other.operator)
+ && java.util.Objects.equals(
+ this.thresholdAbsoluteValue, other.thresholdAbsoluteValue)
+ && java.util.Objects.equals(
+ this.thresholdRelativePercent, other.thresholdRelativePercent)
+ && java.util.Objects.equals(
+ this.costAlertSubscriptionId, other.costAlertSubscriptionId)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.operator == null ? 43 : this.operator.hashCode());
+ result =
+ (result * PRIME)
+ + (this.thresholdAbsoluteValue == null
+ ? 43
+ : this.thresholdAbsoluteValue.hashCode());
+ result =
+ (result * PRIME)
+ + (this.thresholdRelativePercent == null
+ ? 43
+ : this.thresholdRelativePercent.hashCode());
+ result =
+ (result * PRIME)
+ + (this.costAlertSubscriptionId == null
+ ? 43
+ : this.costAlertSubscriptionId.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionSummary.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionSummary.java
new file mode 100644
index 00000000000..de198476baa
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAlertSubscriptionSummary.java
@@ -0,0 +1,512 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * A CostAlertSubscription.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAlertSubscriptionSummary.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAlertSubscriptionSummary
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "id",
+ "compartmentId",
+ "name",
+ "channelTypes",
+ "timeCreated",
+ "lifecycleState",
+ "definedTags",
+ "freeformTags",
+ "systemTags"
+ })
+ public CostAlertSubscriptionSummary(
+ String id,
+ String compartmentId,
+ String name,
+ String channelTypes,
+ java.util.Date timeCreated,
+ CostAlertSubscription.LifecycleState lifecycleState,
+ java.util.Map> definedTags,
+ java.util.Map freeformTags,
+ java.util.Map> systemTags) {
+ super();
+ this.id = id;
+ this.compartmentId = compartmentId;
+ this.name = name;
+ this.channelTypes = channelTypes;
+ this.timeCreated = timeCreated;
+ this.lifecycleState = lifecycleState;
+ this.definedTags = definedTags;
+ this.freeformTags = freeformTags;
+ this.systemTags = systemTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** The OCID of the Cost Alert Subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private String id;
+
+ /**
+ * The OCID of the Cost Alert Subscription.
+ *
+ * @param id the value to set
+ * @return this builder
+ */
+ public Builder id(String id) {
+ this.id = id;
+ this.__explicitlySet__.add("id");
+ return this;
+ }
+ /** The OCID of the compartment which hold the cost alert subscription resource. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The OCID of the compartment which hold the cost alert subscription resource.
+ *
+ * @param compartmentId the value to set
+ * @return this builder
+ */
+ public Builder compartmentId(String compartmentId) {
+ this.compartmentId = compartmentId;
+ this.__explicitlySet__.add("compartmentId");
+ return this;
+ }
+ /** The name of the cost alert subscription. Avoid entering confidential information. */
+ @com.fasterxml.jackson.annotation.JsonProperty("name")
+ private String name;
+
+ /**
+ * The name of the cost alert subscription. Avoid entering confidential information.
+ *
+ * @param name the value to set
+ * @return this builder
+ */
+ public Builder name(String name) {
+ this.name = name;
+ this.__explicitlySet__.add("name");
+ return this;
+ }
+ /** The notification channels types string. */
+ @com.fasterxml.jackson.annotation.JsonProperty("channelTypes")
+ private String channelTypes;
+
+ /**
+ * The notification channels types string.
+ *
+ * @param channelTypes the value to set
+ * @return this builder
+ */
+ public Builder channelTypes(String channelTypes) {
+ this.channelTypes = channelTypes;
+ this.__explicitlySet__.add("channelTypes");
+ return this;
+ }
+ /** The time that the cost alert subscription was created. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private java.util.Date timeCreated;
+
+ /**
+ * The time that the cost alert subscription was created.
+ *
+ * @param timeCreated the value to set
+ * @return this builder
+ */
+ public Builder timeCreated(java.util.Date timeCreated) {
+ this.timeCreated = timeCreated;
+ this.__explicitlySet__.add("timeCreated");
+ return this;
+ }
+ /** The current state of the cost alert subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private CostAlertSubscription.LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost alert subscription.
+ *
+ * @param lifecycleState the value to set
+ * @return this builder
+ */
+ public Builder lifecycleState(CostAlertSubscription.LifecycleState lifecycleState) {
+ this.lifecycleState = lifecycleState;
+ this.__explicitlySet__.add("lifecycleState");
+ return this;
+ }
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @param definedTags the value to set
+ * @return this builder
+ */
+ public Builder definedTags(
+ java.util.Map> definedTags) {
+ this.definedTags = definedTags;
+ this.__explicitlySet__.add("definedTags");
+ return this;
+ }
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("freeformTags")
+ private java.util.Map freeformTags;
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ *
+ * @param freeformTags the value to set
+ * @return this builder
+ */
+ public Builder freeformTags(java.util.Map freeformTags) {
+ this.freeformTags = freeformTags;
+ this.__explicitlySet__.add("freeformTags");
+ return this;
+ }
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("systemTags")
+ private java.util.Map> systemTags;
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ *
+ * @param systemTags the value to set
+ * @return this builder
+ */
+ public Builder systemTags(java.util.Map> systemTags) {
+ this.systemTags = systemTags;
+ this.__explicitlySet__.add("systemTags");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAlertSubscriptionSummary build() {
+ CostAlertSubscriptionSummary model =
+ new CostAlertSubscriptionSummary(
+ this.id,
+ this.compartmentId,
+ this.name,
+ this.channelTypes,
+ this.timeCreated,
+ this.lifecycleState,
+ this.definedTags,
+ this.freeformTags,
+ this.systemTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAlertSubscriptionSummary model) {
+ if (model.wasPropertyExplicitlySet("id")) {
+ this.id(model.getId());
+ }
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ if (model.wasPropertyExplicitlySet("name")) {
+ this.name(model.getName());
+ }
+ if (model.wasPropertyExplicitlySet("channelTypes")) {
+ this.channelTypes(model.getChannelTypes());
+ }
+ if (model.wasPropertyExplicitlySet("timeCreated")) {
+ this.timeCreated(model.getTimeCreated());
+ }
+ if (model.wasPropertyExplicitlySet("lifecycleState")) {
+ this.lifecycleState(model.getLifecycleState());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("systemTags")) {
+ this.systemTags(model.getSystemTags());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** The OCID of the Cost Alert Subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private final String id;
+
+ /**
+ * The OCID of the Cost Alert Subscription.
+ *
+ * @return the value
+ */
+ public String getId() {
+ return id;
+ }
+
+ /** The OCID of the compartment which hold the cost alert subscription resource. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The OCID of the compartment which hold the cost alert subscription resource.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ /** The name of the cost alert subscription. Avoid entering confidential information. */
+ @com.fasterxml.jackson.annotation.JsonProperty("name")
+ private final String name;
+
+ /**
+ * The name of the cost alert subscription. Avoid entering confidential information.
+ *
+ * @return the value
+ */
+ public String getName() {
+ return name;
+ }
+
+ /** The notification channels types string. */
+ @com.fasterxml.jackson.annotation.JsonProperty("channelTypes")
+ private final String channelTypes;
+
+ /**
+ * The notification channels types string.
+ *
+ * @return the value
+ */
+ public String getChannelTypes() {
+ return channelTypes;
+ }
+
+ /** The time that the cost alert subscription was created. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private final java.util.Date timeCreated;
+
+ /**
+ * The time that the cost alert subscription was created.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeCreated() {
+ return timeCreated;
+ }
+
+ /** The current state of the cost alert subscription. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private final CostAlertSubscription.LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost alert subscription.
+ *
+ * @return the value
+ */
+ public CostAlertSubscription.LifecycleState getLifecycleState() {
+ return lifecycleState;
+ }
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private final java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @return the value
+ */
+ public java.util.Map> getDefinedTags() {
+ return definedTags;
+ }
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("freeformTags")
+ private final java.util.Map freeformTags;
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ *
+ * @return the value
+ */
+ public java.util.Map getFreeformTags() {
+ return freeformTags;
+ }
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System tags
+ * can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("systemTags")
+ private final java.util.Map> systemTags;
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System tags
+ * can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ *
+ * @return the value
+ */
+ public java.util.Map> getSystemTags() {
+ return systemTags;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAlertSubscriptionSummary(");
+ sb.append("super=").append(super.toString());
+ sb.append("id=").append(String.valueOf(this.id));
+ sb.append(", compartmentId=").append(String.valueOf(this.compartmentId));
+ sb.append(", name=").append(String.valueOf(this.name));
+ sb.append(", channelTypes=").append(String.valueOf(this.channelTypes));
+ sb.append(", timeCreated=").append(String.valueOf(this.timeCreated));
+ sb.append(", lifecycleState=").append(String.valueOf(this.lifecycleState));
+ sb.append(", definedTags=").append(String.valueOf(this.definedTags));
+ sb.append(", freeformTags=").append(String.valueOf(this.freeformTags));
+ sb.append(", systemTags=").append(String.valueOf(this.systemTags));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAlertSubscriptionSummary)) {
+ return false;
+ }
+
+ CostAlertSubscriptionSummary other = (CostAlertSubscriptionSummary) o;
+ return java.util.Objects.equals(this.id, other.id)
+ && java.util.Objects.equals(this.compartmentId, other.compartmentId)
+ && java.util.Objects.equals(this.name, other.name)
+ && java.util.Objects.equals(this.channelTypes, other.channelTypes)
+ && java.util.Objects.equals(this.timeCreated, other.timeCreated)
+ && java.util.Objects.equals(this.lifecycleState, other.lifecycleState)
+ && java.util.Objects.equals(this.definedTags, other.definedTags)
+ && java.util.Objects.equals(this.freeformTags, other.freeformTags)
+ && java.util.Objects.equals(this.systemTags, other.systemTags)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.id == null ? 43 : this.id.hashCode());
+ result =
+ (result * PRIME)
+ + (this.compartmentId == null ? 43 : this.compartmentId.hashCode());
+ result = (result * PRIME) + (this.name == null ? 43 : this.name.hashCode());
+ result = (result * PRIME) + (this.channelTypes == null ? 43 : this.channelTypes.hashCode());
+ result = (result * PRIME) + (this.timeCreated == null ? 43 : this.timeCreated.hashCode());
+ result =
+ (result * PRIME)
+ + (this.lifecycleState == null ? 43 : this.lifecycleState.hashCode());
+ result = (result * PRIME) + (this.definedTags == null ? 43 : this.definedTags.hashCode());
+ result = (result * PRIME) + (this.freeformTags == null ? 43 : this.freeformTags.hashCode());
+ result = (result * PRIME) + (this.systemTags == null ? 43 : this.systemTags.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEvent.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEvent.java
new file mode 100644
index 00000000000..bcfa6978b5e
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEvent.java
@@ -0,0 +1,946 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * A CostAnomalyEvent.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = CostAnomalyEvent.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAnomalyEvent
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "id",
+ "costAnomalyName",
+ "compartmentId",
+ "lifecycleState",
+ "costMonitorId",
+ "costMonitorName",
+ "costMonitorType",
+ "targetResourceFilter",
+ "timeAnomalyEventDate",
+ "costImpact",
+ "costVariancePercentage",
+ "rootCauseDetail",
+ "feedbackResponse",
+ "timeCreated",
+ "timeUpdated",
+ "definedTags",
+ "freeformTags",
+ "systemTags"
+ })
+ public CostAnomalyEvent(
+ String id,
+ String costAnomalyName,
+ String compartmentId,
+ LifecycleState lifecycleState,
+ String costMonitorId,
+ String costMonitorName,
+ MonitorType costMonitorType,
+ TargetResourceFilter targetResourceFilter,
+ java.util.Date timeAnomalyEventDate,
+ Double costImpact,
+ Double costVariancePercentage,
+ RootCauseDetail rootCauseDetail,
+ FeedbackResponse feedbackResponse,
+ java.util.Date timeCreated,
+ java.util.Date timeUpdated,
+ java.util.Map> definedTags,
+ java.util.Map freeformTags,
+ java.util.Map> systemTags) {
+ super();
+ this.id = id;
+ this.costAnomalyName = costAnomalyName;
+ this.compartmentId = compartmentId;
+ this.lifecycleState = lifecycleState;
+ this.costMonitorId = costMonitorId;
+ this.costMonitorName = costMonitorName;
+ this.costMonitorType = costMonitorType;
+ this.targetResourceFilter = targetResourceFilter;
+ this.timeAnomalyEventDate = timeAnomalyEventDate;
+ this.costImpact = costImpact;
+ this.costVariancePercentage = costVariancePercentage;
+ this.rootCauseDetail = rootCauseDetail;
+ this.feedbackResponse = feedbackResponse;
+ this.timeCreated = timeCreated;
+ this.timeUpdated = timeUpdated;
+ this.definedTags = definedTags;
+ this.freeformTags = freeformTags;
+ this.systemTags = systemTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** The OCID of the Cost Anomaly Event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private String id;
+
+ /**
+ * The OCID of the Cost Anomaly Event.
+ *
+ * @param id the value to set
+ * @return this builder
+ */
+ public Builder id(String id) {
+ this.id = id;
+ this.__explicitlySet__.add("id");
+ return this;
+ }
+ /** The name of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAnomalyName")
+ private String costAnomalyName;
+
+ /**
+ * The name of the associated cost monitor.
+ *
+ * @param costAnomalyName the value to set
+ * @return this builder
+ */
+ public Builder costAnomalyName(String costAnomalyName) {
+ this.costAnomalyName = costAnomalyName;
+ this.__explicitlySet__.add("costAnomalyName");
+ return this;
+ }
+ /** The OCID of the compartment. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The OCID of the compartment.
+ *
+ * @param compartmentId the value to set
+ * @return this builder
+ */
+ public Builder compartmentId(String compartmentId) {
+ this.compartmentId = compartmentId;
+ this.__explicitlySet__.add("compartmentId");
+ return this;
+ }
+ /** The current state of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost anomaly event.
+ *
+ * @param lifecycleState the value to set
+ * @return this builder
+ */
+ public Builder lifecycleState(LifecycleState lifecycleState) {
+ this.lifecycleState = lifecycleState;
+ this.__explicitlySet__.add("lifecycleState");
+ return this;
+ }
+ /** The OCID of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorId")
+ private String costMonitorId;
+
+ /**
+ * The OCID of the associated cost monitor.
+ *
+ * @param costMonitorId the value to set
+ * @return this builder
+ */
+ public Builder costMonitorId(String costMonitorId) {
+ this.costMonitorId = costMonitorId;
+ this.__explicitlySet__.add("costMonitorId");
+ return this;
+ }
+ /** The name of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorName")
+ private String costMonitorName;
+
+ /**
+ * The name of the associated cost monitor.
+ *
+ * @param costMonitorName the value to set
+ * @return this builder
+ */
+ public Builder costMonitorName(String costMonitorName) {
+ this.costMonitorName = costMonitorName;
+ this.__explicitlySet__.add("costMonitorName");
+ return this;
+ }
+ /** Type of cost monitor */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorType")
+ private MonitorType costMonitorType;
+
+ /**
+ * Type of cost monitor
+ *
+ * @param costMonitorType the value to set
+ * @return this builder
+ */
+ public Builder costMonitorType(MonitorType costMonitorType) {
+ this.costMonitorType = costMonitorType;
+ this.__explicitlySet__.add("costMonitorType");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("targetResourceFilter")
+ private TargetResourceFilter targetResourceFilter;
+
+ public Builder targetResourceFilter(TargetResourceFilter targetResourceFilter) {
+ this.targetResourceFilter = targetResourceFilter;
+ this.__explicitlySet__.add("targetResourceFilter");
+ return this;
+ }
+ /** The event date of the anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeAnomalyEventDate")
+ private java.util.Date timeAnomalyEventDate;
+
+ /**
+ * The event date of the anomaly event.
+ *
+ * @param timeAnomalyEventDate the value to set
+ * @return this builder
+ */
+ public Builder timeAnomalyEventDate(java.util.Date timeAnomalyEventDate) {
+ this.timeAnomalyEventDate = timeAnomalyEventDate;
+ this.__explicitlySet__.add("timeAnomalyEventDate");
+ return this;
+ }
+ /** The cost impact of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costImpact")
+ private Double costImpact;
+
+ /**
+ * The cost impact of the detected anomaly.
+ *
+ * @param costImpact the value to set
+ * @return this builder
+ */
+ public Builder costImpact(Double costImpact) {
+ this.costImpact = costImpact;
+ this.__explicitlySet__.add("costImpact");
+ return this;
+ }
+ /** The cost variance percentage of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costVariancePercentage")
+ private Double costVariancePercentage;
+
+ /**
+ * The cost variance percentage of the detected anomaly.
+ *
+ * @param costVariancePercentage the value to set
+ * @return this builder
+ */
+ public Builder costVariancePercentage(Double costVariancePercentage) {
+ this.costVariancePercentage = costVariancePercentage;
+ this.__explicitlySet__.add("costVariancePercentage");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("rootCauseDetail")
+ private RootCauseDetail rootCauseDetail;
+
+ public Builder rootCauseDetail(RootCauseDetail rootCauseDetail) {
+ this.rootCauseDetail = rootCauseDetail;
+ this.__explicitlySet__.add("rootCauseDetail");
+ return this;
+ }
+ /** The feedback response for the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("feedbackResponse")
+ private FeedbackResponse feedbackResponse;
+
+ /**
+ * The feedback response for the cost anomaly event.
+ *
+ * @param feedbackResponse the value to set
+ * @return this builder
+ */
+ public Builder feedbackResponse(FeedbackResponse feedbackResponse) {
+ this.feedbackResponse = feedbackResponse;
+ this.__explicitlySet__.add("feedbackResponse");
+ return this;
+ }
+ /** The created time of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private java.util.Date timeCreated;
+
+ /**
+ * The created time of the cost anomaly event.
+ *
+ * @param timeCreated the value to set
+ * @return this builder
+ */
+ public Builder timeCreated(java.util.Date timeCreated) {
+ this.timeCreated = timeCreated;
+ this.__explicitlySet__.add("timeCreated");
+ return this;
+ }
+ /** The updated time of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private java.util.Date timeUpdated;
+
+ /**
+ * The updated time of the cost anomaly event.
+ *
+ * @param timeUpdated the value to set
+ * @return this builder
+ */
+ public Builder timeUpdated(java.util.Date timeUpdated) {
+ this.timeUpdated = timeUpdated;
+ this.__explicitlySet__.add("timeUpdated");
+ return this;
+ }
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @param definedTags the value to set
+ * @return this builder
+ */
+ public Builder definedTags(
+ java.util.Map> definedTags) {
+ this.definedTags = definedTags;
+ this.__explicitlySet__.add("definedTags");
+ return this;
+ }
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("freeformTags")
+ private java.util.Map freeformTags;
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ *
+ * @param freeformTags the value to set
+ * @return this builder
+ */
+ public Builder freeformTags(java.util.Map freeformTags) {
+ this.freeformTags = freeformTags;
+ this.__explicitlySet__.add("freeformTags");
+ return this;
+ }
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("systemTags")
+ private java.util.Map> systemTags;
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ *
+ * @param systemTags the value to set
+ * @return this builder
+ */
+ public Builder systemTags(java.util.Map> systemTags) {
+ this.systemTags = systemTags;
+ this.__explicitlySet__.add("systemTags");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAnomalyEvent build() {
+ CostAnomalyEvent model =
+ new CostAnomalyEvent(
+ this.id,
+ this.costAnomalyName,
+ this.compartmentId,
+ this.lifecycleState,
+ this.costMonitorId,
+ this.costMonitorName,
+ this.costMonitorType,
+ this.targetResourceFilter,
+ this.timeAnomalyEventDate,
+ this.costImpact,
+ this.costVariancePercentage,
+ this.rootCauseDetail,
+ this.feedbackResponse,
+ this.timeCreated,
+ this.timeUpdated,
+ this.definedTags,
+ this.freeformTags,
+ this.systemTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAnomalyEvent model) {
+ if (model.wasPropertyExplicitlySet("id")) {
+ this.id(model.getId());
+ }
+ if (model.wasPropertyExplicitlySet("costAnomalyName")) {
+ this.costAnomalyName(model.getCostAnomalyName());
+ }
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ if (model.wasPropertyExplicitlySet("lifecycleState")) {
+ this.lifecycleState(model.getLifecycleState());
+ }
+ if (model.wasPropertyExplicitlySet("costMonitorId")) {
+ this.costMonitorId(model.getCostMonitorId());
+ }
+ if (model.wasPropertyExplicitlySet("costMonitorName")) {
+ this.costMonitorName(model.getCostMonitorName());
+ }
+ if (model.wasPropertyExplicitlySet("costMonitorType")) {
+ this.costMonitorType(model.getCostMonitorType());
+ }
+ if (model.wasPropertyExplicitlySet("targetResourceFilter")) {
+ this.targetResourceFilter(model.getTargetResourceFilter());
+ }
+ if (model.wasPropertyExplicitlySet("timeAnomalyEventDate")) {
+ this.timeAnomalyEventDate(model.getTimeAnomalyEventDate());
+ }
+ if (model.wasPropertyExplicitlySet("costImpact")) {
+ this.costImpact(model.getCostImpact());
+ }
+ if (model.wasPropertyExplicitlySet("costVariancePercentage")) {
+ this.costVariancePercentage(model.getCostVariancePercentage());
+ }
+ if (model.wasPropertyExplicitlySet("rootCauseDetail")) {
+ this.rootCauseDetail(model.getRootCauseDetail());
+ }
+ if (model.wasPropertyExplicitlySet("feedbackResponse")) {
+ this.feedbackResponse(model.getFeedbackResponse());
+ }
+ if (model.wasPropertyExplicitlySet("timeCreated")) {
+ this.timeCreated(model.getTimeCreated());
+ }
+ if (model.wasPropertyExplicitlySet("timeUpdated")) {
+ this.timeUpdated(model.getTimeUpdated());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("systemTags")) {
+ this.systemTags(model.getSystemTags());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** The OCID of the Cost Anomaly Event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private final String id;
+
+ /**
+ * The OCID of the Cost Anomaly Event.
+ *
+ * @return the value
+ */
+ public String getId() {
+ return id;
+ }
+
+ /** The name of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAnomalyName")
+ private final String costAnomalyName;
+
+ /**
+ * The name of the associated cost monitor.
+ *
+ * @return the value
+ */
+ public String getCostAnomalyName() {
+ return costAnomalyName;
+ }
+
+ /** The OCID of the compartment. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The OCID of the compartment.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ /** The current state of the cost anomaly event. */
+ public enum LifecycleState implements com.oracle.bmc.http.internal.BmcEnum {
+ Active("ACTIVE"),
+ Inactive("INACTIVE"),
+
+ /**
+ * This value is used if a service returns a value for this enum that is not recognized by
+ * this version of the SDK.
+ */
+ UnknownEnumValue(null);
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(LifecycleState.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (LifecycleState v : LifecycleState.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ LifecycleState(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static LifecycleState create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'LifecycleState', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+ };
+ /** The current state of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private final LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost anomaly event.
+ *
+ * @return the value
+ */
+ public LifecycleState getLifecycleState() {
+ return lifecycleState;
+ }
+
+ /** The OCID of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorId")
+ private final String costMonitorId;
+
+ /**
+ * The OCID of the associated cost monitor.
+ *
+ * @return the value
+ */
+ public String getCostMonitorId() {
+ return costMonitorId;
+ }
+
+ /** The name of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorName")
+ private final String costMonitorName;
+
+ /**
+ * The name of the associated cost monitor.
+ *
+ * @return the value
+ */
+ public String getCostMonitorName() {
+ return costMonitorName;
+ }
+
+ /** Type of cost monitor */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorType")
+ private final MonitorType costMonitorType;
+
+ /**
+ * Type of cost monitor
+ *
+ * @return the value
+ */
+ public MonitorType getCostMonitorType() {
+ return costMonitorType;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("targetResourceFilter")
+ private final TargetResourceFilter targetResourceFilter;
+
+ public TargetResourceFilter getTargetResourceFilter() {
+ return targetResourceFilter;
+ }
+
+ /** The event date of the anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeAnomalyEventDate")
+ private final java.util.Date timeAnomalyEventDate;
+
+ /**
+ * The event date of the anomaly event.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeAnomalyEventDate() {
+ return timeAnomalyEventDate;
+ }
+
+ /** The cost impact of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costImpact")
+ private final Double costImpact;
+
+ /**
+ * The cost impact of the detected anomaly.
+ *
+ * @return the value
+ */
+ public Double getCostImpact() {
+ return costImpact;
+ }
+
+ /** The cost variance percentage of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costVariancePercentage")
+ private final Double costVariancePercentage;
+
+ /**
+ * The cost variance percentage of the detected anomaly.
+ *
+ * @return the value
+ */
+ public Double getCostVariancePercentage() {
+ return costVariancePercentage;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("rootCauseDetail")
+ private final RootCauseDetail rootCauseDetail;
+
+ public RootCauseDetail getRootCauseDetail() {
+ return rootCauseDetail;
+ }
+
+ /** The feedback response for the cost anomaly event. */
+ public enum FeedbackResponse implements com.oracle.bmc.http.internal.BmcEnum {
+ AccurateAnomaly("ACCURATE_ANOMALY"),
+ ExpectedAnomaly("EXPECTED_ANOMALY"),
+
+ /**
+ * This value is used if a service returns a value for this enum that is not recognized by
+ * this version of the SDK.
+ */
+ UnknownEnumValue(null);
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(FeedbackResponse.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (FeedbackResponse v : FeedbackResponse.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ FeedbackResponse(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static FeedbackResponse create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'FeedbackResponse', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+ };
+ /** The feedback response for the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("feedbackResponse")
+ private final FeedbackResponse feedbackResponse;
+
+ /**
+ * The feedback response for the cost anomaly event.
+ *
+ * @return the value
+ */
+ public FeedbackResponse getFeedbackResponse() {
+ return feedbackResponse;
+ }
+
+ /** The created time of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private final java.util.Date timeCreated;
+
+ /**
+ * The created time of the cost anomaly event.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeCreated() {
+ return timeCreated;
+ }
+
+ /** The updated time of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private final java.util.Date timeUpdated;
+
+ /**
+ * The updated time of the cost anomaly event.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeUpdated() {
+ return timeUpdated;
+ }
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private final java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @return the value
+ */
+ public java.util.Map> getDefinedTags() {
+ return definedTags;
+ }
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("freeformTags")
+ private final java.util.Map freeformTags;
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ *
+ * @return the value
+ */
+ public java.util.Map getFreeformTags() {
+ return freeformTags;
+ }
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System tags
+ * can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("systemTags")
+ private final java.util.Map> systemTags;
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System tags
+ * can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ *
+ * @return the value
+ */
+ public java.util.Map> getSystemTags() {
+ return systemTags;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAnomalyEvent(");
+ sb.append("super=").append(super.toString());
+ sb.append("id=").append(String.valueOf(this.id));
+ sb.append(", costAnomalyName=").append(String.valueOf(this.costAnomalyName));
+ sb.append(", compartmentId=").append(String.valueOf(this.compartmentId));
+ sb.append(", lifecycleState=").append(String.valueOf(this.lifecycleState));
+ sb.append(", costMonitorId=").append(String.valueOf(this.costMonitorId));
+ sb.append(", costMonitorName=").append(String.valueOf(this.costMonitorName));
+ sb.append(", costMonitorType=").append(String.valueOf(this.costMonitorType));
+ sb.append(", targetResourceFilter=").append(String.valueOf(this.targetResourceFilter));
+ sb.append(", timeAnomalyEventDate=").append(String.valueOf(this.timeAnomalyEventDate));
+ sb.append(", costImpact=").append(String.valueOf(this.costImpact));
+ sb.append(", costVariancePercentage=").append(String.valueOf(this.costVariancePercentage));
+ sb.append(", rootCauseDetail=").append(String.valueOf(this.rootCauseDetail));
+ sb.append(", feedbackResponse=").append(String.valueOf(this.feedbackResponse));
+ sb.append(", timeCreated=").append(String.valueOf(this.timeCreated));
+ sb.append(", timeUpdated=").append(String.valueOf(this.timeUpdated));
+ sb.append(", definedTags=").append(String.valueOf(this.definedTags));
+ sb.append(", freeformTags=").append(String.valueOf(this.freeformTags));
+ sb.append(", systemTags=").append(String.valueOf(this.systemTags));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAnomalyEvent)) {
+ return false;
+ }
+
+ CostAnomalyEvent other = (CostAnomalyEvent) o;
+ return java.util.Objects.equals(this.id, other.id)
+ && java.util.Objects.equals(this.costAnomalyName, other.costAnomalyName)
+ && java.util.Objects.equals(this.compartmentId, other.compartmentId)
+ && java.util.Objects.equals(this.lifecycleState, other.lifecycleState)
+ && java.util.Objects.equals(this.costMonitorId, other.costMonitorId)
+ && java.util.Objects.equals(this.costMonitorName, other.costMonitorName)
+ && java.util.Objects.equals(this.costMonitorType, other.costMonitorType)
+ && java.util.Objects.equals(this.targetResourceFilter, other.targetResourceFilter)
+ && java.util.Objects.equals(this.timeAnomalyEventDate, other.timeAnomalyEventDate)
+ && java.util.Objects.equals(this.costImpact, other.costImpact)
+ && java.util.Objects.equals(
+ this.costVariancePercentage, other.costVariancePercentage)
+ && java.util.Objects.equals(this.rootCauseDetail, other.rootCauseDetail)
+ && java.util.Objects.equals(this.feedbackResponse, other.feedbackResponse)
+ && java.util.Objects.equals(this.timeCreated, other.timeCreated)
+ && java.util.Objects.equals(this.timeUpdated, other.timeUpdated)
+ && java.util.Objects.equals(this.definedTags, other.definedTags)
+ && java.util.Objects.equals(this.freeformTags, other.freeformTags)
+ && java.util.Objects.equals(this.systemTags, other.systemTags)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.id == null ? 43 : this.id.hashCode());
+ result =
+ (result * PRIME)
+ + (this.costAnomalyName == null ? 43 : this.costAnomalyName.hashCode());
+ result =
+ (result * PRIME)
+ + (this.compartmentId == null ? 43 : this.compartmentId.hashCode());
+ result =
+ (result * PRIME)
+ + (this.lifecycleState == null ? 43 : this.lifecycleState.hashCode());
+ result =
+ (result * PRIME)
+ + (this.costMonitorId == null ? 43 : this.costMonitorId.hashCode());
+ result =
+ (result * PRIME)
+ + (this.costMonitorName == null ? 43 : this.costMonitorName.hashCode());
+ result =
+ (result * PRIME)
+ + (this.costMonitorType == null ? 43 : this.costMonitorType.hashCode());
+ result =
+ (result * PRIME)
+ + (this.targetResourceFilter == null
+ ? 43
+ : this.targetResourceFilter.hashCode());
+ result =
+ (result * PRIME)
+ + (this.timeAnomalyEventDate == null
+ ? 43
+ : this.timeAnomalyEventDate.hashCode());
+ result = (result * PRIME) + (this.costImpact == null ? 43 : this.costImpact.hashCode());
+ result =
+ (result * PRIME)
+ + (this.costVariancePercentage == null
+ ? 43
+ : this.costVariancePercentage.hashCode());
+ result =
+ (result * PRIME)
+ + (this.rootCauseDetail == null ? 43 : this.rootCauseDetail.hashCode());
+ result =
+ (result * PRIME)
+ + (this.feedbackResponse == null ? 43 : this.feedbackResponse.hashCode());
+ result = (result * PRIME) + (this.timeCreated == null ? 43 : this.timeCreated.hashCode());
+ result = (result * PRIME) + (this.timeUpdated == null ? 43 : this.timeUpdated.hashCode());
+ result = (result * PRIME) + (this.definedTags == null ? 43 : this.definedTags.hashCode());
+ result = (result * PRIME) + (this.freeformTags == null ? 43 : this.freeformTags.hashCode());
+ result = (result * PRIME) + (this.systemTags == null ? 43 : this.systemTags.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventAnalyticCollection.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventAnalyticCollection.java
new file mode 100644
index 00000000000..9931cdb301b
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventAnalyticCollection.java
@@ -0,0 +1,135 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * Results of a CostAnomalyEventAnalytics search.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAnomalyEventAnalyticCollection.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAnomalyEventAnalyticCollection
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"items"})
+ public CostAnomalyEventAnalyticCollection(
+ java.util.List items) {
+ super();
+ this.items = items;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** The list of CostAnomalyEvent Analytic summary. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private java.util.List items;
+
+ /**
+ * The list of CostAnomalyEvent Analytic summary.
+ *
+ * @param items the value to set
+ * @return this builder
+ */
+ public Builder items(java.util.List items) {
+ this.items = items;
+ this.__explicitlySet__.add("items");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAnomalyEventAnalyticCollection build() {
+ CostAnomalyEventAnalyticCollection model =
+ new CostAnomalyEventAnalyticCollection(this.items);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAnomalyEventAnalyticCollection model) {
+ if (model.wasPropertyExplicitlySet("items")) {
+ this.items(model.getItems());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** The list of CostAnomalyEvent Analytic summary. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private final java.util.List items;
+
+ /**
+ * The list of CostAnomalyEvent Analytic summary.
+ *
+ * @return the value
+ */
+ public java.util.List getItems() {
+ return items;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAnomalyEventAnalyticCollection(");
+ sb.append("super=").append(super.toString());
+ sb.append("items=").append(String.valueOf(this.items));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAnomalyEventAnalyticCollection)) {
+ return false;
+ }
+
+ CostAnomalyEventAnalyticCollection other = (CostAnomalyEventAnalyticCollection) o;
+ return java.util.Objects.equals(this.items, other.items) && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.items == null ? 43 : this.items.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventAnalyticSummary.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventAnalyticSummary.java
new file mode 100644
index 00000000000..b43a1ebadea
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventAnalyticSummary.java
@@ -0,0 +1,213 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * A CostAnomalyEventAnalyticSummary.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAnomalyEventAnalyticSummary.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAnomalyEventAnalyticSummary
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"count", "averageCostImpact", "averageCostVariance"})
+ public CostAnomalyEventAnalyticSummary(
+ Integer count, Double averageCostImpact, Double averageCostVariance) {
+ super();
+ this.count = count;
+ this.averageCostImpact = averageCostImpact;
+ this.averageCostVariance = averageCostVariance;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** The number of cost anomaly events in the given time period. */
+ @com.fasterxml.jackson.annotation.JsonProperty("count")
+ private Integer count;
+
+ /**
+ * The number of cost anomaly events in the given time period.
+ *
+ * @param count the value to set
+ * @return this builder
+ */
+ public Builder count(Integer count) {
+ this.count = count;
+ this.__explicitlySet__.add("count");
+ return this;
+ }
+ /** The average cost impact of the anomaly events in the given time period. */
+ @com.fasterxml.jackson.annotation.JsonProperty("averageCostImpact")
+ private Double averageCostImpact;
+
+ /**
+ * The average cost impact of the anomaly events in the given time period.
+ *
+ * @param averageCostImpact the value to set
+ * @return this builder
+ */
+ public Builder averageCostImpact(Double averageCostImpact) {
+ this.averageCostImpact = averageCostImpact;
+ this.__explicitlySet__.add("averageCostImpact");
+ return this;
+ }
+ /** The average cost variance of the anomaly events in the given time period. */
+ @com.fasterxml.jackson.annotation.JsonProperty("averageCostVariance")
+ private Double averageCostVariance;
+
+ /**
+ * The average cost variance of the anomaly events in the given time period.
+ *
+ * @param averageCostVariance the value to set
+ * @return this builder
+ */
+ public Builder averageCostVariance(Double averageCostVariance) {
+ this.averageCostVariance = averageCostVariance;
+ this.__explicitlySet__.add("averageCostVariance");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAnomalyEventAnalyticSummary build() {
+ CostAnomalyEventAnalyticSummary model =
+ new CostAnomalyEventAnalyticSummary(
+ this.count, this.averageCostImpact, this.averageCostVariance);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAnomalyEventAnalyticSummary model) {
+ if (model.wasPropertyExplicitlySet("count")) {
+ this.count(model.getCount());
+ }
+ if (model.wasPropertyExplicitlySet("averageCostImpact")) {
+ this.averageCostImpact(model.getAverageCostImpact());
+ }
+ if (model.wasPropertyExplicitlySet("averageCostVariance")) {
+ this.averageCostVariance(model.getAverageCostVariance());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** The number of cost anomaly events in the given time period. */
+ @com.fasterxml.jackson.annotation.JsonProperty("count")
+ private final Integer count;
+
+ /**
+ * The number of cost anomaly events in the given time period.
+ *
+ * @return the value
+ */
+ public Integer getCount() {
+ return count;
+ }
+
+ /** The average cost impact of the anomaly events in the given time period. */
+ @com.fasterxml.jackson.annotation.JsonProperty("averageCostImpact")
+ private final Double averageCostImpact;
+
+ /**
+ * The average cost impact of the anomaly events in the given time period.
+ *
+ * @return the value
+ */
+ public Double getAverageCostImpact() {
+ return averageCostImpact;
+ }
+
+ /** The average cost variance of the anomaly events in the given time period. */
+ @com.fasterxml.jackson.annotation.JsonProperty("averageCostVariance")
+ private final Double averageCostVariance;
+
+ /**
+ * The average cost variance of the anomaly events in the given time period.
+ *
+ * @return the value
+ */
+ public Double getAverageCostVariance() {
+ return averageCostVariance;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAnomalyEventAnalyticSummary(");
+ sb.append("super=").append(super.toString());
+ sb.append("count=").append(String.valueOf(this.count));
+ sb.append(", averageCostImpact=").append(String.valueOf(this.averageCostImpact));
+ sb.append(", averageCostVariance=").append(String.valueOf(this.averageCostVariance));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAnomalyEventAnalyticSummary)) {
+ return false;
+ }
+
+ CostAnomalyEventAnalyticSummary other = (CostAnomalyEventAnalyticSummary) o;
+ return java.util.Objects.equals(this.count, other.count)
+ && java.util.Objects.equals(this.averageCostImpact, other.averageCostImpact)
+ && java.util.Objects.equals(this.averageCostVariance, other.averageCostVariance)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.count == null ? 43 : this.count.hashCode());
+ result =
+ (result * PRIME)
+ + (this.averageCostImpact == null ? 43 : this.averageCostImpact.hashCode());
+ result =
+ (result * PRIME)
+ + (this.averageCostVariance == null
+ ? 43
+ : this.averageCostVariance.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventCollection.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventCollection.java
new file mode 100644
index 00000000000..0c35f1a04ac
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventCollection.java
@@ -0,0 +1,134 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * Results of a costAnomalyEvent search. Contains both CostAnomalyEventSummary items and other data.
+ *
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAnomalyEventCollection.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAnomalyEventCollection
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"items"})
+ public CostAnomalyEventCollection(java.util.List items) {
+ super();
+ this.items = items;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** A page of CostAnomalyMonitorSummary objects. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private java.util.List items;
+
+ /**
+ * A page of CostAnomalyMonitorSummary objects.
+ *
+ * @param items the value to set
+ * @return this builder
+ */
+ public Builder items(java.util.List items) {
+ this.items = items;
+ this.__explicitlySet__.add("items");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAnomalyEventCollection build() {
+ CostAnomalyEventCollection model = new CostAnomalyEventCollection(this.items);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAnomalyEventCollection model) {
+ if (model.wasPropertyExplicitlySet("items")) {
+ this.items(model.getItems());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** A page of CostAnomalyMonitorSummary objects. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private final java.util.List items;
+
+ /**
+ * A page of CostAnomalyMonitorSummary objects.
+ *
+ * @return the value
+ */
+ public java.util.List getItems() {
+ return items;
+ }
+
+ @Override
+ public String toString() {
+ return this.toString(true);
+ }
+
+ /**
+ * Return a string representation of the object.
+ *
+ * @param includeByteArrayContents true to include the full contents of byte arrays
+ * @return string representation
+ */
+ public String toString(boolean includeByteArrayContents) {
+ java.lang.StringBuilder sb = new java.lang.StringBuilder();
+ sb.append("CostAnomalyEventCollection(");
+ sb.append("super=").append(super.toString());
+ sb.append("items=").append(String.valueOf(this.items));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CostAnomalyEventCollection)) {
+ return false;
+ }
+
+ CostAnomalyEventCollection other = (CostAnomalyEventCollection) o;
+ return java.util.Objects.equals(this.items, other.items) && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.items == null ? 43 : this.items.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventSummary.java b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventSummary.java
new file mode 100644
index 00000000000..730d068595b
--- /dev/null
+++ b/bmc-costad/src/main/java/com/oracle/bmc/costad/model/CostAnomalyEventSummary.java
@@ -0,0 +1,739 @@
+/**
+ * Copyright (c) 2016, 2026, Oracle and/or its affiliates. All rights reserved.
+ * This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
+ */
+package com.oracle.bmc.costad.model;
+
+/**
+ * A CostAnomalyEvent.
+ * Note: Objects should always be created or deserialized using the {@link Builder}. This model
+ * distinguishes fields that are {@code null} because they are unset from fields that are explicitly
+ * set to {@code null}. This is done in the setter methods of the {@link Builder}, which maintain a
+ * set of all explicitly set fields called {@link Builder#__explicitlySet__}. The {@link
+ * #hashCode()} and {@link #equals(Object)} methods are implemented to take the explicitly set
+ * fields into account. The constructor, on the other hand, does not take the explicitly set fields
+ * into account (since the constructor cannot distinguish explicit {@code null} from unset {@code
+ * null}).
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20190111")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CostAnomalyEventSummary.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CostAnomalyEventSummary
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "id",
+ "costAnomalyName",
+ "compartmentId",
+ "costMonitorId",
+ "costMonitorName",
+ "costMonitorType",
+ "lifecycleState",
+ "targetResourceFilter",
+ "rootCauseDetail",
+ "timeAnomalyEventDate",
+ "costImpact",
+ "costVariancePercentage",
+ "definedTags",
+ "freeformTags",
+ "systemTags"
+ })
+ public CostAnomalyEventSummary(
+ String id,
+ String costAnomalyName,
+ String compartmentId,
+ String costMonitorId,
+ String costMonitorName,
+ MonitorType costMonitorType,
+ CostAnomalyEvent.LifecycleState lifecycleState,
+ TargetResourceFilter targetResourceFilter,
+ RootCauseDetail rootCauseDetail,
+ java.util.Date timeAnomalyEventDate,
+ Double costImpact,
+ Double costVariancePercentage,
+ java.util.Map> definedTags,
+ java.util.Map freeformTags,
+ java.util.Map> systemTags) {
+ super();
+ this.id = id;
+ this.costAnomalyName = costAnomalyName;
+ this.compartmentId = compartmentId;
+ this.costMonitorId = costMonitorId;
+ this.costMonitorName = costMonitorName;
+ this.costMonitorType = costMonitorType;
+ this.lifecycleState = lifecycleState;
+ this.targetResourceFilter = targetResourceFilter;
+ this.rootCauseDetail = rootCauseDetail;
+ this.timeAnomalyEventDate = timeAnomalyEventDate;
+ this.costImpact = costImpact;
+ this.costVariancePercentage = costVariancePercentage;
+ this.definedTags = definedTags;
+ this.freeformTags = freeformTags;
+ this.systemTags = systemTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** The OCID of the Cost Anomaly Event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private String id;
+
+ /**
+ * The OCID of the Cost Anomaly Event.
+ *
+ * @param id the value to set
+ * @return this builder
+ */
+ public Builder id(String id) {
+ this.id = id;
+ this.__explicitlySet__.add("id");
+ return this;
+ }
+ /** The name of the associated cost Anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAnomalyName")
+ private String costAnomalyName;
+
+ /**
+ * The name of the associated cost Anomaly.
+ *
+ * @param costAnomalyName the value to set
+ * @return this builder
+ */
+ public Builder costAnomalyName(String costAnomalyName) {
+ this.costAnomalyName = costAnomalyName;
+ this.__explicitlySet__.add("costAnomalyName");
+ return this;
+ }
+ /** The OCID of the compartment. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The OCID of the compartment.
+ *
+ * @param compartmentId the value to set
+ * @return this builder
+ */
+ public Builder compartmentId(String compartmentId) {
+ this.compartmentId = compartmentId;
+ this.__explicitlySet__.add("compartmentId");
+ return this;
+ }
+ /** The OCID of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorId")
+ private String costMonitorId;
+
+ /**
+ * The OCID of the associated cost monitor.
+ *
+ * @param costMonitorId the value to set
+ * @return this builder
+ */
+ public Builder costMonitorId(String costMonitorId) {
+ this.costMonitorId = costMonitorId;
+ this.__explicitlySet__.add("costMonitorId");
+ return this;
+ }
+ /** The name of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorName")
+ private String costMonitorName;
+
+ /**
+ * The name of the associated cost monitor.
+ *
+ * @param costMonitorName the value to set
+ * @return this builder
+ */
+ public Builder costMonitorName(String costMonitorName) {
+ this.costMonitorName = costMonitorName;
+ this.__explicitlySet__.add("costMonitorName");
+ return this;
+ }
+ /** Type of cost monitor */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorType")
+ private MonitorType costMonitorType;
+
+ /**
+ * Type of cost monitor
+ *
+ * @param costMonitorType the value to set
+ * @return this builder
+ */
+ public Builder costMonitorType(MonitorType costMonitorType) {
+ this.costMonitorType = costMonitorType;
+ this.__explicitlySet__.add("costMonitorType");
+ return this;
+ }
+ /** The current state of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private CostAnomalyEvent.LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost anomaly event.
+ *
+ * @param lifecycleState the value to set
+ * @return this builder
+ */
+ public Builder lifecycleState(CostAnomalyEvent.LifecycleState lifecycleState) {
+ this.lifecycleState = lifecycleState;
+ this.__explicitlySet__.add("lifecycleState");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("targetResourceFilter")
+ private TargetResourceFilter targetResourceFilter;
+
+ public Builder targetResourceFilter(TargetResourceFilter targetResourceFilter) {
+ this.targetResourceFilter = targetResourceFilter;
+ this.__explicitlySet__.add("targetResourceFilter");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("rootCauseDetail")
+ private RootCauseDetail rootCauseDetail;
+
+ public Builder rootCauseDetail(RootCauseDetail rootCauseDetail) {
+ this.rootCauseDetail = rootCauseDetail;
+ this.__explicitlySet__.add("rootCauseDetail");
+ return this;
+ }
+ /** The event date of the anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeAnomalyEventDate")
+ private java.util.Date timeAnomalyEventDate;
+
+ /**
+ * The event date of the anomaly event.
+ *
+ * @param timeAnomalyEventDate the value to set
+ * @return this builder
+ */
+ public Builder timeAnomalyEventDate(java.util.Date timeAnomalyEventDate) {
+ this.timeAnomalyEventDate = timeAnomalyEventDate;
+ this.__explicitlySet__.add("timeAnomalyEventDate");
+ return this;
+ }
+ /** The cost impact of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costImpact")
+ private Double costImpact;
+
+ /**
+ * The cost impact of the detected anomaly.
+ *
+ * @param costImpact the value to set
+ * @return this builder
+ */
+ public Builder costImpact(Double costImpact) {
+ this.costImpact = costImpact;
+ this.__explicitlySet__.add("costImpact");
+ return this;
+ }
+ /** The cost variance percentage of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costVariancePercentage")
+ private Double costVariancePercentage;
+
+ /**
+ * The cost variance percentage of the detected anomaly.
+ *
+ * @param costVariancePercentage the value to set
+ * @return this builder
+ */
+ public Builder costVariancePercentage(Double costVariancePercentage) {
+ this.costVariancePercentage = costVariancePercentage;
+ this.__explicitlySet__.add("costVariancePercentage");
+ return this;
+ }
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For
+ * more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @param definedTags the value to set
+ * @return this builder
+ */
+ public Builder definedTags(
+ java.util.Map> definedTags) {
+ this.definedTags = definedTags;
+ this.__explicitlySet__.add("definedTags");
+ return this;
+ }
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("freeformTags")
+ private java.util.Map freeformTags;
+
+ /**
+ * Free-form tags for this resource. Each tag is a simple key-value pair with no predefined
+ * name, type, or namespace. For more information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Department": "Finance"}}
+ *
+ * @param freeformTags the value to set
+ * @return this builder
+ */
+ public Builder freeformTags(java.util.Map freeformTags) {
+ this.freeformTags = freeformTags;
+ this.__explicitlySet__.add("freeformTags");
+ return this;
+ }
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("systemTags")
+ private java.util.Map> systemTags;
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm). System
+ * tags can be viewed by users, but can only be created by the system.
+ *
+ * Example: {@code {"orcl-cloud": {"free-tier-retained": "true"}}}
+ *
+ * @param systemTags the value to set
+ * @return this builder
+ */
+ public Builder systemTags(java.util.Map> systemTags) {
+ this.systemTags = systemTags;
+ this.__explicitlySet__.add("systemTags");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CostAnomalyEventSummary build() {
+ CostAnomalyEventSummary model =
+ new CostAnomalyEventSummary(
+ this.id,
+ this.costAnomalyName,
+ this.compartmentId,
+ this.costMonitorId,
+ this.costMonitorName,
+ this.costMonitorType,
+ this.lifecycleState,
+ this.targetResourceFilter,
+ this.rootCauseDetail,
+ this.timeAnomalyEventDate,
+ this.costImpact,
+ this.costVariancePercentage,
+ this.definedTags,
+ this.freeformTags,
+ this.systemTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CostAnomalyEventSummary model) {
+ if (model.wasPropertyExplicitlySet("id")) {
+ this.id(model.getId());
+ }
+ if (model.wasPropertyExplicitlySet("costAnomalyName")) {
+ this.costAnomalyName(model.getCostAnomalyName());
+ }
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ if (model.wasPropertyExplicitlySet("costMonitorId")) {
+ this.costMonitorId(model.getCostMonitorId());
+ }
+ if (model.wasPropertyExplicitlySet("costMonitorName")) {
+ this.costMonitorName(model.getCostMonitorName());
+ }
+ if (model.wasPropertyExplicitlySet("costMonitorType")) {
+ this.costMonitorType(model.getCostMonitorType());
+ }
+ if (model.wasPropertyExplicitlySet("lifecycleState")) {
+ this.lifecycleState(model.getLifecycleState());
+ }
+ if (model.wasPropertyExplicitlySet("targetResourceFilter")) {
+ this.targetResourceFilter(model.getTargetResourceFilter());
+ }
+ if (model.wasPropertyExplicitlySet("rootCauseDetail")) {
+ this.rootCauseDetail(model.getRootCauseDetail());
+ }
+ if (model.wasPropertyExplicitlySet("timeAnomalyEventDate")) {
+ this.timeAnomalyEventDate(model.getTimeAnomalyEventDate());
+ }
+ if (model.wasPropertyExplicitlySet("costImpact")) {
+ this.costImpact(model.getCostImpact());
+ }
+ if (model.wasPropertyExplicitlySet("costVariancePercentage")) {
+ this.costVariancePercentage(model.getCostVariancePercentage());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("systemTags")) {
+ this.systemTags(model.getSystemTags());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** The OCID of the Cost Anomaly Event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private final String id;
+
+ /**
+ * The OCID of the Cost Anomaly Event.
+ *
+ * @return the value
+ */
+ public String getId() {
+ return id;
+ }
+
+ /** The name of the associated cost Anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costAnomalyName")
+ private final String costAnomalyName;
+
+ /**
+ * The name of the associated cost Anomaly.
+ *
+ * @return the value
+ */
+ public String getCostAnomalyName() {
+ return costAnomalyName;
+ }
+
+ /** The OCID of the compartment. */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The OCID of the compartment.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ /** The OCID of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorId")
+ private final String costMonitorId;
+
+ /**
+ * The OCID of the associated cost monitor.
+ *
+ * @return the value
+ */
+ public String getCostMonitorId() {
+ return costMonitorId;
+ }
+
+ /** The name of the associated cost monitor. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorName")
+ private final String costMonitorName;
+
+ /**
+ * The name of the associated cost monitor.
+ *
+ * @return the value
+ */
+ public String getCostMonitorName() {
+ return costMonitorName;
+ }
+
+ /** Type of cost monitor */
+ @com.fasterxml.jackson.annotation.JsonProperty("costMonitorType")
+ private final MonitorType costMonitorType;
+
+ /**
+ * Type of cost monitor
+ *
+ * @return the value
+ */
+ public MonitorType getCostMonitorType() {
+ return costMonitorType;
+ }
+
+ /** The current state of the cost anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private final CostAnomalyEvent.LifecycleState lifecycleState;
+
+ /**
+ * The current state of the cost anomaly event.
+ *
+ * @return the value
+ */
+ public CostAnomalyEvent.LifecycleState getLifecycleState() {
+ return lifecycleState;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("targetResourceFilter")
+ private final TargetResourceFilter targetResourceFilter;
+
+ public TargetResourceFilter getTargetResourceFilter() {
+ return targetResourceFilter;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("rootCauseDetail")
+ private final RootCauseDetail rootCauseDetail;
+
+ public RootCauseDetail getRootCauseDetail() {
+ return rootCauseDetail;
+ }
+
+ /** The event date of the anomaly event. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeAnomalyEventDate")
+ private final java.util.Date timeAnomalyEventDate;
+
+ /**
+ * The event date of the anomaly event.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeAnomalyEventDate() {
+ return timeAnomalyEventDate;
+ }
+
+ /** The cost impact of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costImpact")
+ private final Double costImpact;
+
+ /**
+ * The cost impact of the detected anomaly.
+ *
+ * @return the value
+ */
+ public Double getCostImpact() {
+ return costImpact;
+ }
+
+ /** The cost variance percentage of the detected anomaly. */
+ @com.fasterxml.jackson.annotation.JsonProperty("costVariancePercentage")
+ private final Double costVariancePercentage;
+
+ /**
+ * The cost variance percentage of the detected anomaly.
+ *
+ * @return the value
+ */
+ public Double getCostVariancePercentage() {
+ return costVariancePercentage;
+ }
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("definedTags")
+ private final java.util.Map> definedTags;
+
+ /**
+ * Defined tags for this resource. Each key is predefined and scoped to a namespace. For more
+ * information, see [Resource
+ * Tags](https://docs.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
+ *
+ * Example: {@code {"Operations": {"CostCenter": "42"}}}
+ *
+ * @return the value
+ */
+ public java.util.Map