diff --git a/bmc-addons/bmc-resteasy-client-configurator/pom.xml b/bmc-addons/bmc-resteasy-client-configurator/pom.xml
index 485c07425b6..99ec8e0abc1 100644
--- a/bmc-addons/bmc-resteasy-client-configurator/pom.xml
+++ b/bmc-addons/bmc-resteasy-client-configurator/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk-addons
- 3.95.0
+ 3.95.1
../pom.xml
@@ -23,7 +23,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml b/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml
index c30b6255343..c3f25cafac0 100644
--- a/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml
+++ b/bmc-addons/bmc-sasl-oke-workload-identity/pom.xml
@@ -4,7 +4,7 @@
oci-java-sdk-addons
com.oracle.oci.sdk
- 3.95.0
+ 3.95.1
../pom.xml
4.0.0
@@ -39,13 +39,13 @@
com.oracle.oci.sdk
oci-java-sdk-addons-sasl
- 3.95.0
+ 3.95.1
compile
com.oracle.oci.sdk
oci-java-sdk-addons-oke-workload-identity
- 3.95.0
+ 3.95.1
compile
diff --git a/bmc-addons/bmc-sasl/pom.xml b/bmc-addons/bmc-sasl/pom.xml
index a7f240a50ef..d4a54851985 100644
--- a/bmc-addons/bmc-sasl/pom.xml
+++ b/bmc-addons/bmc-sasl/pom.xml
@@ -5,7 +5,7 @@
com.oracle.oci.sdk
oci-java-sdk-addons
- 3.95.0
+ 3.95.1
../pom.xml
@@ -61,7 +61,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
diff --git a/bmc-addons/bmc-sse-support-jersey3/pom.xml b/bmc-addons/bmc-sse-support-jersey3/pom.xml
index c2e1ebc2046..48dfd50018c 100644
--- a/bmc-addons/bmc-sse-support-jersey3/pom.xml
+++ b/bmc-addons/bmc-sse-support-jersey3/pom.xml
@@ -5,7 +5,7 @@
oci-java-sdk-addons
com.oracle.oci.sdk
- 3.95.0
+ 3.95.1
../pom.xml
4.0.0
@@ -150,12 +150,12 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-generativeaiinference
- 3.95.0
+ 3.95.1
test
@@ -164,7 +164,7 @@
but the code in it needs it. -->
com.oracle.oci.sdk
oci-java-sdk-common-httpclient-jersey3
- 3.95.0
+ 3.95.1
diff --git a/bmc-addons/bmc-sse-support/pom.xml b/bmc-addons/bmc-sse-support/pom.xml
index 7ceda43e912..bd3c0b9ee98 100644
--- a/bmc-addons/bmc-sse-support/pom.xml
+++ b/bmc-addons/bmc-sse-support/pom.xml
@@ -5,7 +5,7 @@
oci-java-sdk-addons
com.oracle.oci.sdk
- 3.95.0
+ 3.95.1
../pom.xml
4.0.0
@@ -150,12 +150,12 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-generativeaiinference
- 3.95.0
+ 3.95.1
test
@@ -164,7 +164,7 @@
but the code in it needs it. -->
com.oracle.oci.sdk
oci-java-sdk-common-httpclient-jersey
- 3.95.0
+ 3.95.1
diff --git a/bmc-addons/pom.xml b/bmc-addons/pom.xml
index b6054681862..24dd1f84a21 100644
--- a/bmc-addons/pom.xml
+++ b/bmc-addons/pom.xml
@@ -5,7 +5,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
diff --git a/bmc-adm/pom.xml b/bmc-adm/pom.xml
index b49309d2053..d8047582190 100644
--- a/bmc-adm/pom.xml
+++ b/bmc-adm/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-adm
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-aidataplatform/pom.xml b/bmc-aidataplatform/pom.xml
index 96f398f20df..f4a8187a3b1 100644
--- a/bmc-aidataplatform/pom.xml
+++ b/bmc-aidataplatform/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-aidataplatform
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-aidocument/pom.xml b/bmc-aidocument/pom.xml
index e52ffb55b4b..d2f0d11dc8e 100644
--- a/bmc-aidocument/pom.xml
+++ b/bmc-aidocument/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-aidocument
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-ailanguage/pom.xml b/bmc-ailanguage/pom.xml
index 0f167e49614..ea32da7401a 100644
--- a/bmc-ailanguage/pom.xml
+++ b/bmc-ailanguage/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-ailanguage
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-aispeech/pom.xml b/bmc-aispeech/pom.xml
index 4016d2b2e0f..1a0dd8ce378 100644
--- a/bmc-aispeech/pom.xml
+++ b/bmc-aispeech/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-aispeech
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-aivision/pom.xml b/bmc-aivision/pom.xml
index 15249da796d..f092da29c31 100644
--- a/bmc-aivision/pom.xml
+++ b/bmc-aivision/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-aivision
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-analytics/pom.xml b/bmc-analytics/pom.xml
index a0967b6190e..17c8db8aa71 100644
--- a/bmc-analytics/pom.xml
+++ b/bmc-analytics/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-analytics
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-announcementsservice/pom.xml b/bmc-announcementsservice/pom.xml
index 44afcaaeb10..871be4b075a 100644
--- a/bmc-announcementsservice/pom.xml
+++ b/bmc-announcementsservice/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-announcementsservice
@@ -16,7 +16,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-apiaccesscontrol/pom.xml b/bmc-apiaccesscontrol/pom.xml
index 6d4598bb0b6..cdf46e8f3c0 100644
--- a/bmc-apiaccesscontrol/pom.xml
+++ b/bmc-apiaccesscontrol/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-apiaccesscontrol
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-apigateway/pom.xml b/bmc-apigateway/pom.xml
index 50b290b9d43..fe36d7e7957 100644
--- a/bmc-apigateway/pom.xml
+++ b/bmc-apigateway/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-apigateway
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-apiplatform/pom.xml b/bmc-apiplatform/pom.xml
index 273fb6eee0a..1bb724b01e2 100644
--- a/bmc-apiplatform/pom.xml
+++ b/bmc-apiplatform/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-apiplatform
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-apmconfig/pom.xml b/bmc-apmconfig/pom.xml
index 8ec4887921b..140d427b413 100644
--- a/bmc-apmconfig/pom.xml
+++ b/bmc-apmconfig/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-apmconfig
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-apmcontrolplane/pom.xml b/bmc-apmcontrolplane/pom.xml
index de9fe3e787b..25e503f197f 100644
--- a/bmc-apmcontrolplane/pom.xml
+++ b/bmc-apmcontrolplane/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-apmcontrolplane
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-apmsynthetics/pom.xml b/bmc-apmsynthetics/pom.xml
index c9c45ab9964..31e48c5e4b9 100644
--- a/bmc-apmsynthetics/pom.xml
+++ b/bmc-apmsynthetics/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-apmsynthetics
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-apmtraces/pom.xml b/bmc-apmtraces/pom.xml
index f956f1ff784..b3efd9e3048 100644
--- a/bmc-apmtraces/pom.xml
+++ b/bmc-apmtraces/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-apmtraces
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-appmgmtcontrol/pom.xml b/bmc-appmgmtcontrol/pom.xml
index ec804893a30..4f4c92ad6cd 100644
--- a/bmc-appmgmtcontrol/pom.xml
+++ b/bmc-appmgmtcontrol/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-appmgmtcontrol
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-artifacts/pom.xml b/bmc-artifacts/pom.xml
index 9a7ee54aa48..799b8159718 100644
--- a/bmc-artifacts/pom.xml
+++ b/bmc-artifacts/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-artifacts
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-audit/pom.xml b/bmc-audit/pom.xml
index dbe30ca25e0..5187be3db6c 100644
--- a/bmc-audit/pom.xml
+++ b/bmc-audit/pom.xml
@@ -5,7 +5,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
@@ -18,7 +18,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
diff --git a/bmc-autoscaling/pom.xml b/bmc-autoscaling/pom.xml
index 6888dd161b5..93ba40a24e3 100644
--- a/bmc-autoscaling/pom.xml
+++ b/bmc-autoscaling/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-autoscaling
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-bastion/pom.xml b/bmc-bastion/pom.xml
index 4d481e1af76..ee1f7f3bcea 100644
--- a/bmc-bastion/pom.xml
+++ b/bmc-bastion/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-bastion
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-batch/pom.xml b/bmc-batch/pom.xml
index 8fdac6cd69a..71248442018 100644
--- a/bmc-batch/pom.xml
+++ b/bmc-batch/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-batch
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-bds/pom.xml b/bmc-bds/pom.xml
index 79eb1747865..4b66e8ebd1c 100644
--- a/bmc-bds/pom.xml
+++ b/bmc-bds/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-bds
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-blockchain/pom.xml b/bmc-blockchain/pom.xml
index 5254318963f..fc3886b4d60 100644
--- a/bmc-blockchain/pom.xml
+++ b/bmc-blockchain/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-blockchain
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-bom/pom.xml b/bmc-bom/pom.xml
index 581ad5a330d..58314123fe6 100644
--- a/bmc-bom/pom.xml
+++ b/bmc-bom/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.oracle.oci.sdk
- 3.95.0
+ 3.95.1
oci-java-sdk-bom
pom
Oracle Cloud Infrastructure SDK - BOM
@@ -38,1129 +38,1135 @@
com.oracle.oci.sdk
oci-java-sdk-circuitbreaker
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-common-httpclient
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-common-httpclient-jersey
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-common-httpclient-jersey3
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-enforcer-rules
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-shaded-full
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-audit
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-containerengine
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-core
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-database
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-dns
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-email
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-objectstorage-generated
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-objectstorage-extensions
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-filestorage
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-identity
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-loadbalancer
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-objectstorage
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-addons-apache-configurator-jersey
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-addons-apache-configurator-jersey3
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-addons-resteasy-client-configurator
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-addons-sasl
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-addons-oke-workload-identity
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-addons-sasl-oke-workload-identity
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-addons-aispeech-realtime
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-resourcesearch
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-addons-apache
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-keymanagement
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-announcementsservice
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-healthchecks
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-waas
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-streaming
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-resourcemanager
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-monitoring
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-ons
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-autoscaling
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-budget
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-workrequests
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-limits
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-functions
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-events
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-oce
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-oda
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-analytics
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-integration
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-marketplace
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-apigateway
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-datacatalog
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-dataflow
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-datascience
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-nosql
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-secrets
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-vault
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-bds
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-encryption
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-cims
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-datasafe
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-mysql
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-dataintegration
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-ocvp
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-usageapi
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-blockchain
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-loggingingestion
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-logging
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-loganalytics
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-managementdashboard
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-sch
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-loggingsearch
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-managementagent
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-cloudguard
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-opsi
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-computeinstanceagent
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-optimizer
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-tenantmanagercontrolplane
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-rover
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-databasemanagement
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-artifacts
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-apmsynthetics
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-goldengate
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-apmcontrolplane
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-apmtraces
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-networkloadbalancer
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-vulnerabilityscanning
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-databasemigration
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-servicecatalog
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-ailanguage
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-operatoraccesscontrol
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-bastion
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-genericartifactscontent
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-jms
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-devops
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-datalabelingservice
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-datalabelingservicedataplane
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-apmconfig
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-waf
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-certificates
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-certificatesmanagement
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-usage
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-databasetools
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-servicemanagerproxy
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-appmgmtcontrol
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-ospgateway
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-identitydataplane
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-visualbuilder
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-osubusage
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-osubsubscription
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-osuborganizationsubscription
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-osubbillingschedule
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-dashboardservice
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-threatintelligence
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-aivision
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-aispeech
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-stackmonitoring
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-adm
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-licensemanager
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-onesubscription
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-governancerulescontrolplane
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-waa
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-networkfirewall
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-vnmonitoring
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-emwarehouse
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-lockbox
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-fusionapps
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-mediaservices
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-opa
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-opensearch
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-cloudmigrations
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-cloudbridge
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-disasterrecovery
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-containerinstances
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-aidocument
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-queue
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-recovery
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-vbsinst
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-identitydomains
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-accessgovernancecp
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-ocicontrolcenter
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-osmanagementhub
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-fleetsoftwareupdate
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-computecloudatcustomer
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-marketplacepublisher
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-redis
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-jmsjavadownloads
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-psql
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-generativeai
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-generativeaiinference
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-capacitymanagement
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-desktops
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-emaildataplane
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-clusterplacementgroups
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-resourcescheduler
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-demandsignal
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-fleetappsmanagement
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-delegateaccesscontrol
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-generativeaiagent
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-generativeaiagentruntime
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-securityattribute
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-zpr
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-dblm
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-mngdmac
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-lustrefilestorage
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-modeldeployment
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-distributeddatabase
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-apiaccesscontrol
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-wlms
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-addons-adk
- 3.95.0
+ 3.95.1
com.oracle.oci.sdk
oci-java-sdk-dbmulticloud
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-apiplatform
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-managedkafka
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-aidataplatform
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-multicloud
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-resourceanalytics
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-jmsutils
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-iot
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-psa
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-dif
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-batch
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-marketplaceprivateoffer
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-gdp
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-limitsincrease
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-generativeaidata
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-self
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-containerregistry
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-databasetoolsruntime
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-costad
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-datacc
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-ddfs
- 3.95.0
+ 3.95.1
false
com.oracle.oci.sdk
oci-java-sdk-distributeddatabasev26
- 3.95.0
+ 3.95.1
+ false
+
+
+ com.oracle.oci.sdk
+ oci-java-sdk-clusterhealth
+ 3.95.1
false
diff --git a/bmc-budget/pom.xml b/bmc-budget/pom.xml
index 3174932a63a..8610eaa6ffe 100644
--- a/bmc-budget/pom.xml
+++ b/bmc-budget/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-budget
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-capacitymanagement/pom.xml b/bmc-capacitymanagement/pom.xml
index a6baa8c64b4..403f1832514 100644
--- a/bmc-capacitymanagement/pom.xml
+++ b/bmc-capacitymanagement/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-capacitymanagement
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-certificates/pom.xml b/bmc-certificates/pom.xml
index fdededd4988..8eac272aac2 100644
--- a/bmc-certificates/pom.xml
+++ b/bmc-certificates/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-certificates
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-certificatesmanagement/pom.xml b/bmc-certificatesmanagement/pom.xml
index 890e8b5ad26..707465859ec 100644
--- a/bmc-certificatesmanagement/pom.xml
+++ b/bmc-certificatesmanagement/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-certificatesmanagement
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-cims/pom.xml b/bmc-cims/pom.xml
index a519f420d02..921bcc7cd3c 100644
--- a/bmc-cims/pom.xml
+++ b/bmc-cims/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-cims
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-circuitbreaker/pom.xml b/bmc-circuitbreaker/pom.xml
index f63a0f75edb..f94d26e7715 100644
--- a/bmc-circuitbreaker/pom.xml
+++ b/bmc-circuitbreaker/pom.xml
@@ -5,7 +5,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-circuitbreaker
diff --git a/bmc-cloudbridge/pom.xml b/bmc-cloudbridge/pom.xml
index f8091114636..d5a2979069f 100644
--- a/bmc-cloudbridge/pom.xml
+++ b/bmc-cloudbridge/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-cloudbridge
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-cloudguard/pom.xml b/bmc-cloudguard/pom.xml
index 51ff1fe1aa3..8d0b3cdec10 100644
--- a/bmc-cloudguard/pom.xml
+++ b/bmc-cloudguard/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-cloudguard
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-cloudmigrations/pom.xml b/bmc-cloudmigrations/pom.xml
index 146f158ecc0..009275c89c8 100644
--- a/bmc-cloudmigrations/pom.xml
+++ b/bmc-cloudmigrations/pom.xml
@@ -4,7 +4,7 @@
com.oracle.oci.sdk
oci-java-sdk
- 3.95.0
+ 3.95.1
../pom.xml
oci-java-sdk-cloudmigrations
@@ -15,7 +15,7 @@
com.oracle.oci.sdk
oci-java-sdk-common
- 3.95.0
+ 3.95.1
\ No newline at end of file
diff --git a/bmc-clusterhealth/pom.xml b/bmc-clusterhealth/pom.xml
new file mode 100644
index 00000000000..68e44319e06
--- /dev/null
+++ b/bmc-clusterhealth/pom.xml
@@ -0,0 +1,21 @@
+
+
+ 4.0.0
+
+ com.oracle.oci.sdk
+ oci-java-sdk
+ 3.95.1
+ ../pom.xml
+
+ oci-java-sdk-clusterhealth
+ Oracle Cloud Infrastructure SDK - Cluster Health
+ This project contains the SDK used for Oracle Cloud Infrastructure Cluster Health
+ https://docs.cloud.oracle.com/Content/API/SDKDocs/javasdk.htm
+
+
+ com.oracle.oci.sdk
+ oci-java-sdk-common
+ 3.95.1
+
+
+
\ No newline at end of file
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/Diagnosis.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/Diagnosis.java
new file mode 100644
index 00000000000..1705997a809
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/Diagnosis.java
@@ -0,0 +1,309 @@
+/**
+ * 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.clusterhealth;
+
+import com.oracle.bmc.clusterhealth.requests.*;
+import com.oracle.bmc.clusterhealth.responses.*;
+
+/**
+ * Use the ITV Control Plane Diagnosis Store API to manage diagnosis. 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: 20260331")
+public interface Diagnosis 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);
+
+ /**
+ * Cancels a work request.
+ *
+ * @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 CancelWorkRequest
+ * API.
+ */
+ CancelWorkRequestResponse cancelWorkRequest(CancelWorkRequestRequest request);
+
+ /**
+ * Moves a Diagnosis into a different compartment within the same tenancy. For information about
+ * moving resources between compartments, see [Moving Resources to a Different
+ * Compartment](https://docs.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes).
+ *
+ * @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
+ * ChangeDiagnosisStoreCompartment API.
+ */
+ ChangeDiagnosisStoreCompartmentResponse changeDiagnosisStoreCompartment(
+ ChangeDiagnosisStoreCompartmentRequest request);
+
+ /**
+ * Creates a Diagnosis Store.
+ *
+ * @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
+ * CreateDiagnosisStore API.
+ */
+ CreateDiagnosisStoreResponse createDiagnosisStore(CreateDiagnosisStoreRequest request);
+
+ /**
+ * Deletes a Diagnosis Store.
+ *
+ * @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
+ * DeleteDiagnosisStore API.
+ */
+ DeleteDiagnosisStoreResponse deleteDiagnosisStore(DeleteDiagnosisStoreRequest request);
+
+ /**
+ * Gets information about a Diagnosis Store.
+ *
+ * @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 GetDiagnosisStore
+ * API.
+ */
+ GetDiagnosisStoreResponse getDiagnosisStore(GetDiagnosisStoreRequest request);
+
+ /**
+ * Gets the details of a work request.
+ *
+ * @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 GetWorkRequest API.
+ */
+ GetWorkRequestResponse getWorkRequest(GetWorkRequestRequest request);
+
+ /**
+ * Gets a list of Diagnosis Stores.
+ *
+ * @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 ListDiagnosisStores
+ * API.
+ */
+ ListDiagnosisStoresResponse listDiagnosisStores(ListDiagnosisStoresRequest request);
+
+ /**
+ * Lists the errors for a work request.
+ *
+ * @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
+ * ListWorkRequestErrors API.
+ */
+ ListWorkRequestErrorsResponse listWorkRequestErrors(ListWorkRequestErrorsRequest request);
+
+ /**
+ * Lists the logs for a work request.
+ *
+ * @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 ListWorkRequestLogs
+ * API.
+ */
+ ListWorkRequestLogsResponse listWorkRequestLogs(ListWorkRequestLogsRequest request);
+
+ /**
+ * Lists the work requests 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 ListWorkRequests
+ * API.
+ */
+ ListWorkRequestsResponse listWorkRequests(ListWorkRequestsRequest request);
+
+ /**
+ * Query latest diagnosis result summaries.
+ *
+ * @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
+ * QueryDiagnosisByHealthCheckKey API.
+ */
+ QueryDiagnosisByHealthCheckKeyResponse queryDiagnosisByHealthCheckKey(
+ QueryDiagnosisByHealthCheckKeyRequest request);
+
+ /**
+ * Query latest diagnosis result summaries.
+ *
+ * @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
+ * QueryDiagnosisSummary API.
+ */
+ QueryDiagnosisSummaryResponse queryDiagnosisSummary(QueryDiagnosisSummaryRequest request);
+
+ /**
+ * Request a diagnosis to be analyzed.
+ *
+ * @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 RequestDiagnosis
+ * API.
+ */
+ RequestDiagnosisResponse requestDiagnosis(RequestDiagnosisRequest request);
+
+ /**
+ * Updates a Diagnosis Store.
+ *
+ * @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
+ * UpdateDiagnosisStore API.
+ */
+ UpdateDiagnosisStoreResponse updateDiagnosisStore(UpdateDiagnosisStoreRequest request);
+
+ /**
+ * Gets the pre-configured waiters available for resources for this service.
+ *
+ * @return The service waiters.
+ */
+ DiagnosisWaiters 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.
+ */
+ DiagnosisPaginators getPaginators();
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisAsync.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisAsync.java
new file mode 100644
index 00000000000..9a6bf550e25
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisAsync.java
@@ -0,0 +1,288 @@
+/**
+ * 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.clusterhealth;
+
+import com.oracle.bmc.clusterhealth.requests.*;
+import com.oracle.bmc.clusterhealth.responses.*;
+
+/** Use the ITV Control Plane Diagnosis Store API to manage diagnosis. */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20260331")
+public interface DiagnosisAsync 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);
+
+ /**
+ * Cancels a work request.
+ *
+ * @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 cancelWorkRequest(
+ CancelWorkRequestRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ CancelWorkRequestRequest, CancelWorkRequestResponse>
+ handler);
+
+ /**
+ * Moves a Diagnosis into a different compartment within the same tenancy. For information about
+ * moving resources between compartments, see [Moving Resources to a Different
+ * Compartment](https://docs.oracle.com/iaas/Content/Identity/Tasks/managingcompartments.htm#moveRes).
+ *
+ * @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
+ changeDiagnosisStoreCompartment(
+ ChangeDiagnosisStoreCompartmentRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ ChangeDiagnosisStoreCompartmentRequest,
+ ChangeDiagnosisStoreCompartmentResponse>
+ handler);
+
+ /**
+ * Creates a Diagnosis Store.
+ *
+ * @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 createDiagnosisStore(
+ CreateDiagnosisStoreRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ CreateDiagnosisStoreRequest, CreateDiagnosisStoreResponse>
+ handler);
+
+ /**
+ * Deletes a Diagnosis Store.
+ *
+ * @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 deleteDiagnosisStore(
+ DeleteDiagnosisStoreRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ DeleteDiagnosisStoreRequest, DeleteDiagnosisStoreResponse>
+ handler);
+
+ /**
+ * Gets information about a Diagnosis Store.
+ *
+ * @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 getDiagnosisStore(
+ GetDiagnosisStoreRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ GetDiagnosisStoreRequest, GetDiagnosisStoreResponse>
+ handler);
+
+ /**
+ * Gets the details of a work request.
+ *
+ * @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 getWorkRequest(
+ GetWorkRequestRequest request,
+ com.oracle.bmc.responses.AsyncHandler
+ handler);
+
+ /**
+ * Gets a list of Diagnosis Stores.
+ *
+ * @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 listDiagnosisStores(
+ ListDiagnosisStoresRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ ListDiagnosisStoresRequest, ListDiagnosisStoresResponse>
+ handler);
+
+ /**
+ * Lists the errors for a work request.
+ *
+ * @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 listWorkRequestErrors(
+ ListWorkRequestErrorsRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ ListWorkRequestErrorsRequest, ListWorkRequestErrorsResponse>
+ handler);
+
+ /**
+ * Lists the logs for a work request.
+ *
+ * @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 listWorkRequestLogs(
+ ListWorkRequestLogsRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ ListWorkRequestLogsRequest, ListWorkRequestLogsResponse>
+ handler);
+
+ /**
+ * Lists the work requests 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 listWorkRequests(
+ ListWorkRequestsRequest request,
+ com.oracle.bmc.responses.AsyncHandler
+ handler);
+
+ /**
+ * Query latest diagnosis result summaries.
+ *
+ * @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
+ queryDiagnosisByHealthCheckKey(
+ QueryDiagnosisByHealthCheckKeyRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ QueryDiagnosisByHealthCheckKeyRequest,
+ QueryDiagnosisByHealthCheckKeyResponse>
+ handler);
+
+ /**
+ * Query latest diagnosis result summaries.
+ *
+ * @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 queryDiagnosisSummary(
+ QueryDiagnosisSummaryRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ QueryDiagnosisSummaryRequest, QueryDiagnosisSummaryResponse>
+ handler);
+
+ /**
+ * Request a diagnosis to be analyzed.
+ *
+ * @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 requestDiagnosis(
+ RequestDiagnosisRequest request,
+ com.oracle.bmc.responses.AsyncHandler
+ handler);
+
+ /**
+ * Updates a Diagnosis Store.
+ *
+ * @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 updateDiagnosisStore(
+ UpdateDiagnosisStoreRequest request,
+ com.oracle.bmc.responses.AsyncHandler<
+ UpdateDiagnosisStoreRequest, UpdateDiagnosisStoreResponse>
+ handler);
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisAsyncClient.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisAsyncClient.java
new file mode 100644
index 00000000000..4bda03368fc
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisAsyncClient.java
@@ -0,0 +1,717 @@
+/**
+ * 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.clusterhealth;
+
+import com.oracle.bmc.util.internal.Validate;
+import com.oracle.bmc.clusterhealth.requests.*;
+import com.oracle.bmc.clusterhealth.responses.*;
+
+import java.util.Objects;
+
+/**
+ * Async client implementation for Diagnosis 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: 20260331")
+public class DiagnosisAsyncClient extends com.oracle.bmc.http.internal.BaseAsyncClient
+ implements DiagnosisAsync {
+ /** Service instance for Diagnosis. */
+ public static final com.oracle.bmc.Service SERVICE =
+ com.oracle.bmc.Services.serviceBuilder()
+ .serviceName(DiagnosisClient.class.getName())
+ .serviceEndpointPrefix("")
+ .serviceEndpointTemplate("https://iaas.{region}.{secondLevelDomain}")
+ .build();
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(DiagnosisAsyncClient.class);
+
+ DiagnosisAsyncClient(
+ 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 = "clusterhealth";
+ com.oracle.bmc.internal.DeveloperToolConfiguration
+ .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 DiagnosisAsyncClient build(
+ @jakarta.annotation.Nonnull
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider
+ authenticationDetailsProvider) {
+ return new DiagnosisAsyncClient(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 cancelWorkRequest(
+ CancelWorkRequestRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ CancelWorkRequestRequest, CancelWorkRequestResponse>
+ handler) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, CancelWorkRequestResponse::builder)
+ .logger(LOG, "cancelWorkRequest")
+ .serviceDetails("Diagnosis", "CancelWorkRequest", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(CancelWorkRequestRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleResponseHeaderString(
+ "opc-request-id", CancelWorkRequestResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future
+ changeDiagnosisStoreCompartment(
+ ChangeDiagnosisStoreCompartmentRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ChangeDiagnosisStoreCompartmentRequest,
+ ChangeDiagnosisStoreCompartmentResponse>
+ handler) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getChangeDiagnosisStoreCompartmentDetails(),
+ "changeDiagnosisStoreCompartmentDetails is required");
+
+ return clientCall(request, ChangeDiagnosisStoreCompartmentResponse::builder)
+ .logger(LOG, "changeDiagnosisStoreCompartment")
+ .serviceDetails("Diagnosis", "ChangeDiagnosisStoreCompartment", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(ChangeDiagnosisStoreCompartmentRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("changeCompartment")
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ ChangeDiagnosisStoreCompartmentResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id",
+ ChangeDiagnosisStoreCompartmentResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future createDiagnosisStore(
+ CreateDiagnosisStoreRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ CreateDiagnosisStoreRequest, CreateDiagnosisStoreResponse>
+ handler) {
+ Objects.requireNonNull(
+ request.getCreateDiagnosisStoreDetails(),
+ "createDiagnosisStoreDetails is required");
+
+ return clientCall(request, CreateDiagnosisStoreResponse::builder)
+ .logger(LOG, "createDiagnosisStore")
+ .serviceDetails("Diagnosis", "CreateDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(CreateDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .accept("application/json")
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.class,
+ CreateDiagnosisStoreResponse.Builder::diagnosisStore)
+ .handleResponseHeaderString(
+ "location", CreateDiagnosisStoreResponse.Builder::location)
+ .handleResponseHeaderString(
+ "content-location", CreateDiagnosisStoreResponse.Builder::contentLocation)
+ .handleResponseHeaderString("etag", CreateDiagnosisStoreResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ CreateDiagnosisStoreResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id", CreateDiagnosisStoreResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future deleteDiagnosisStore(
+ DeleteDiagnosisStoreRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ DeleteDiagnosisStoreRequest, DeleteDiagnosisStoreResponse>
+ handler) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+
+ return clientCall(request, DeleteDiagnosisStoreResponse::builder)
+ .logger(LOG, "deleteDiagnosisStore")
+ .serviceDetails("Diagnosis", "DeleteDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(DeleteDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ DeleteDiagnosisStoreResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id", DeleteDiagnosisStoreResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future getDiagnosisStore(
+ GetDiagnosisStoreRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ GetDiagnosisStoreRequest, GetDiagnosisStoreResponse>
+ handler) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+
+ return clientCall(request, GetDiagnosisStoreResponse::builder)
+ .logger(LOG, "getDiagnosisStore")
+ .serviceDetails("Diagnosis", "GetDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.class,
+ GetDiagnosisStoreResponse.Builder::diagnosisStore)
+ .handleResponseHeaderString("etag", GetDiagnosisStoreResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", GetDiagnosisStoreResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future getWorkRequest(
+ GetWorkRequestRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ GetWorkRequestRequest, GetWorkRequestResponse>
+ handler) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, GetWorkRequestResponse::builder)
+ .logger(LOG, "getWorkRequest")
+ .serviceDetails("Diagnosis", "GetWorkRequest", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetWorkRequestRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequest.class,
+ GetWorkRequestResponse.Builder::workRequest)
+ .handleResponseHeaderString("etag", GetWorkRequestResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", GetWorkRequestResponse.Builder::opcRequestId)
+ .handleResponseHeaderInteger(
+ "retry-after", GetWorkRequestResponse.Builder::retryAfter)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future listDiagnosisStores(
+ ListDiagnosisStoresRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ListDiagnosisStoresRequest, ListDiagnosisStoresResponse>
+ handler) {
+
+ return clientCall(request, ListDiagnosisStoresResponse::builder)
+ .logger(LOG, "listDiagnosisStores")
+ .serviceDetails("Diagnosis", "ListDiagnosisStores", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListDiagnosisStoresRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendEnumQueryParam("lifecycleState", request.getLifecycleState())
+ .appendQueryParam("displayName", request.getDisplayName())
+ .appendQueryParam("diagnosisStoreId", request.getDiagnosisStoreId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisStoreCollection.class,
+ ListDiagnosisStoresResponse.Builder::diagnosisStoreCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListDiagnosisStoresResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListDiagnosisStoresResponse.Builder::opcNextPage)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future listWorkRequestErrors(
+ ListWorkRequestErrorsRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ListWorkRequestErrorsRequest, ListWorkRequestErrorsResponse>
+ handler) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, ListWorkRequestErrorsResponse::builder)
+ .logger(LOG, "listWorkRequestErrors")
+ .serviceDetails("Diagnosis", "ListWorkRequestErrors", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListWorkRequestErrorsRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .appendPathParam("errors")
+ .appendQueryParam("page", request.getPage())
+ .appendQueryParam("limit", request.getLimit())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequestErrorCollection.class,
+ ListWorkRequestErrorsResponse.Builder::workRequestErrorCollection)
+ .handleResponseHeaderString(
+ "opc-next-page", ListWorkRequestErrorsResponse.Builder::opcNextPage)
+ .handleResponseHeaderString(
+ "opc-request-id", ListWorkRequestErrorsResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future listWorkRequestLogs(
+ ListWorkRequestLogsRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ListWorkRequestLogsRequest, ListWorkRequestLogsResponse>
+ handler) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, ListWorkRequestLogsResponse::builder)
+ .logger(LOG, "listWorkRequestLogs")
+ .serviceDetails("Diagnosis", "ListWorkRequestLogs", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListWorkRequestLogsRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .appendPathParam("logs")
+ .appendQueryParam("page", request.getPage())
+ .appendQueryParam("limit", request.getLimit())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequestLogEntryCollection.class,
+ ListWorkRequestLogsResponse.Builder::workRequestLogEntryCollection)
+ .handleResponseHeaderString(
+ "opc-next-page", ListWorkRequestLogsResponse.Builder::opcNextPage)
+ .handleResponseHeaderString(
+ "opc-request-id", ListWorkRequestLogsResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future listWorkRequests(
+ ListWorkRequestsRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ ListWorkRequestsRequest, ListWorkRequestsResponse>
+ handler) {
+
+ return clientCall(request, ListWorkRequestsResponse::builder)
+ .logger(LOG, "listWorkRequests")
+ .serviceDetails("Diagnosis", "ListWorkRequests", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListWorkRequestsRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("workRequestId", request.getWorkRequestId())
+ .appendEnumQueryParam("status", request.getStatus())
+ .appendQueryParam("resourceId", request.getResourceId())
+ .appendQueryParam("page", request.getPage())
+ .appendQueryParam("limit", request.getLimit())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequestSummaryCollection.class,
+ ListWorkRequestsResponse.Builder::workRequestSummaryCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListWorkRequestsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListWorkRequestsResponse.Builder::opcNextPage)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future
+ queryDiagnosisByHealthCheckKey(
+ QueryDiagnosisByHealthCheckKeyRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ QueryDiagnosisByHealthCheckKeyRequest,
+ QueryDiagnosisByHealthCheckKeyResponse>
+ handler) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getQueryDiagnosisByHealthCheckKeyDetails(),
+ "queryDiagnosisByHealthCheckKeyDetails is required");
+
+ return clientCall(request, QueryDiagnosisByHealthCheckKeyResponse::builder)
+ .logger(LOG, "queryDiagnosisByHealthCheckKey")
+ .serviceDetails("Diagnosis", "QueryDiagnosisByHealthCheckKey", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(QueryDiagnosisByHealthCheckKeyRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("queryDiagnosisByHealthCheckKey")
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.RecommendationReport.class,
+ QueryDiagnosisByHealthCheckKeyResponse.Builder::recommendationReport)
+ .handleResponseHeaderString(
+ "etag", QueryDiagnosisByHealthCheckKeyResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id",
+ QueryDiagnosisByHealthCheckKeyResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future queryDiagnosisSummary(
+ QueryDiagnosisSummaryRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ QueryDiagnosisSummaryRequest, QueryDiagnosisSummaryResponse>
+ handler) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getQueryDiagnosisSummaryDetails(),
+ "queryDiagnosisSummaryDetails is required");
+
+ return clientCall(request, QueryDiagnosisSummaryResponse::builder)
+ .logger(LOG, "queryDiagnosisSummary")
+ .serviceDetails("Diagnosis", "QueryDiagnosisSummary", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(QueryDiagnosisSummaryRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("queryDiagnosisSummary")
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisSummaryCollection.class,
+ QueryDiagnosisSummaryResponse.Builder::diagnosisSummaryCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", QueryDiagnosisSummaryResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", QueryDiagnosisSummaryResponse.Builder::opcNextPage)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future requestDiagnosis(
+ RequestDiagnosisRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ RequestDiagnosisRequest, RequestDiagnosisResponse>
+ handler) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getRequestDiagnosisDetails(), "requestDiagnosisDetails is required");
+
+ return clientCall(request, RequestDiagnosisResponse::builder)
+ .logger(LOG, "requestDiagnosis")
+ .serviceDetails("Diagnosis", "RequestDiagnosis", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(RequestDiagnosisRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("requestDiagnosis")
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisResults.class,
+ RequestDiagnosisResponse.Builder::diagnosisResults)
+ .handleResponseHeaderString("etag", RequestDiagnosisResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", RequestDiagnosisResponse.Builder::opcRequestId)
+ .callAsync(handler);
+ }
+
+ @Override
+ public java.util.concurrent.Future updateDiagnosisStore(
+ UpdateDiagnosisStoreRequest request,
+ final com.oracle.bmc.responses.AsyncHandler<
+ UpdateDiagnosisStoreRequest, UpdateDiagnosisStoreResponse>
+ handler) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateDiagnosisStoreDetails(),
+ "updateDiagnosisStoreDetails is required");
+
+ return clientCall(request, UpdateDiagnosisStoreResponse::builder)
+ .logger(LOG, "updateDiagnosisStore")
+ .serviceDetails("Diagnosis", "UpdateDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .hasBody()
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ UpdateDiagnosisStoreResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateDiagnosisStoreResponse.Builder::opcRequestId)
+ .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 DiagnosisAsyncClient(
+ 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 DiagnosisAsyncClient(
+ 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 DiagnosisAsyncClient(
+ 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 DiagnosisAsyncClient(
+ 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 DiagnosisAsyncClient(
+ 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 DiagnosisAsyncClient(
+ 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 DiagnosisAsyncClient(
+ 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-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisClient.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisClient.java
new file mode 100644
index 00000000000..3be4188c6ec
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisClient.java
@@ -0,0 +1,758 @@
+/**
+ * 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.clusterhealth;
+
+import com.oracle.bmc.util.internal.Validate;
+import com.oracle.bmc.clusterhealth.requests.*;
+import com.oracle.bmc.clusterhealth.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: 20260331")
+public class DiagnosisClient extends com.oracle.bmc.http.internal.BaseSyncClient
+ implements Diagnosis {
+ /** Service instance for Diagnosis. */
+ public static final com.oracle.bmc.Service SERVICE =
+ com.oracle.bmc.Services.serviceBuilder()
+ .serviceName(DiagnosisClient.class.getName())
+ .serviceEndpointPrefix("")
+ .serviceEndpointTemplate("https://iaas.{region}.{secondLevelDomain}")
+ .build();
+
+ private static final org.slf4j.Logger LOG =
+ org.slf4j.LoggerFactory.getLogger(DiagnosisClient.class);
+
+ private final DiagnosisWaiters waiters;
+
+ private final DiagnosisPaginators paginators;
+
+ DiagnosisClient(
+ 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("Diagnosis-waiters-%d")
+ .build());
+ threadPoolExecutor.allowCoreThreadTimeOut(true);
+
+ executorService = threadPoolExecutor;
+ }
+ this.waiters = new DiagnosisWaiters(executorService, this);
+
+ this.paginators = new DiagnosisPaginators(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 = "clusterhealth";
+ com.oracle.bmc.internal.DeveloperToolConfiguration
+ .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 DiagnosisClient build(
+ @jakarta.annotation.Nonnull
+ com.oracle.bmc.auth.AbstractAuthenticationDetailsProvider
+ authenticationDetailsProvider) {
+ return new DiagnosisClient(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 CancelWorkRequestResponse cancelWorkRequest(CancelWorkRequestRequest request) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, CancelWorkRequestResponse::builder)
+ .logger(LOG, "cancelWorkRequest")
+ .serviceDetails("Diagnosis", "CancelWorkRequest", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(CancelWorkRequestRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleResponseHeaderString(
+ "opc-request-id", CancelWorkRequestResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public ChangeDiagnosisStoreCompartmentResponse changeDiagnosisStoreCompartment(
+ ChangeDiagnosisStoreCompartmentRequest request) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getChangeDiagnosisStoreCompartmentDetails(),
+ "changeDiagnosisStoreCompartmentDetails is required");
+
+ return clientCall(request, ChangeDiagnosisStoreCompartmentResponse::builder)
+ .logger(LOG, "changeDiagnosisStoreCompartment")
+ .serviceDetails("Diagnosis", "ChangeDiagnosisStoreCompartment", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(ChangeDiagnosisStoreCompartmentRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("changeCompartment")
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ ChangeDiagnosisStoreCompartmentResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id",
+ ChangeDiagnosisStoreCompartmentResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public CreateDiagnosisStoreResponse createDiagnosisStore(CreateDiagnosisStoreRequest request) {
+ Objects.requireNonNull(
+ request.getCreateDiagnosisStoreDetails(),
+ "createDiagnosisStoreDetails is required");
+
+ return clientCall(request, CreateDiagnosisStoreResponse::builder)
+ .logger(LOG, "createDiagnosisStore")
+ .serviceDetails("Diagnosis", "CreateDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(CreateDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .accept("application/json")
+ .appendHeader("opc-retry-token", request.getOpcRetryToken())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.class,
+ CreateDiagnosisStoreResponse.Builder::diagnosisStore)
+ .handleResponseHeaderString(
+ "location", CreateDiagnosisStoreResponse.Builder::location)
+ .handleResponseHeaderString(
+ "content-location", CreateDiagnosisStoreResponse.Builder::contentLocation)
+ .handleResponseHeaderString("etag", CreateDiagnosisStoreResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ CreateDiagnosisStoreResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id", CreateDiagnosisStoreResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public DeleteDiagnosisStoreResponse deleteDiagnosisStore(DeleteDiagnosisStoreRequest request) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+
+ return clientCall(request, DeleteDiagnosisStoreResponse::builder)
+ .logger(LOG, "deleteDiagnosisStore")
+ .serviceDetails("Diagnosis", "DeleteDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.DELETE)
+ .requestBuilder(DeleteDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ DeleteDiagnosisStoreResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id", DeleteDiagnosisStoreResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public GetDiagnosisStoreResponse getDiagnosisStore(GetDiagnosisStoreRequest request) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+
+ return clientCall(request, GetDiagnosisStoreResponse::builder)
+ .logger(LOG, "getDiagnosisStore")
+ .serviceDetails("Diagnosis", "GetDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.class,
+ GetDiagnosisStoreResponse.Builder::diagnosisStore)
+ .handleResponseHeaderString("etag", GetDiagnosisStoreResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", GetDiagnosisStoreResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public GetWorkRequestResponse getWorkRequest(GetWorkRequestRequest request) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, GetWorkRequestResponse::builder)
+ .logger(LOG, "getWorkRequest")
+ .serviceDetails("Diagnosis", "GetWorkRequest", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(GetWorkRequestRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequest.class,
+ GetWorkRequestResponse.Builder::workRequest)
+ .handleResponseHeaderString("etag", GetWorkRequestResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", GetWorkRequestResponse.Builder::opcRequestId)
+ .handleResponseHeaderInteger(
+ "retry-after", GetWorkRequestResponse.Builder::retryAfter)
+ .callSync();
+ }
+
+ @Override
+ public ListDiagnosisStoresResponse listDiagnosisStores(ListDiagnosisStoresRequest request) {
+
+ return clientCall(request, ListDiagnosisStoresResponse::builder)
+ .logger(LOG, "listDiagnosisStores")
+ .serviceDetails("Diagnosis", "ListDiagnosisStores", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListDiagnosisStoresRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendEnumQueryParam("lifecycleState", request.getLifecycleState())
+ .appendQueryParam("displayName", request.getDisplayName())
+ .appendQueryParam("diagnosisStoreId", request.getDiagnosisStoreId())
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisStoreCollection.class,
+ ListDiagnosisStoresResponse.Builder::diagnosisStoreCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListDiagnosisStoresResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListDiagnosisStoresResponse.Builder::opcNextPage)
+ .callSync();
+ }
+
+ @Override
+ public ListWorkRequestErrorsResponse listWorkRequestErrors(
+ ListWorkRequestErrorsRequest request) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, ListWorkRequestErrorsResponse::builder)
+ .logger(LOG, "listWorkRequestErrors")
+ .serviceDetails("Diagnosis", "ListWorkRequestErrors", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListWorkRequestErrorsRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .appendPathParam("errors")
+ .appendQueryParam("page", request.getPage())
+ .appendQueryParam("limit", request.getLimit())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequestErrorCollection.class,
+ ListWorkRequestErrorsResponse.Builder::workRequestErrorCollection)
+ .handleResponseHeaderString(
+ "opc-next-page", ListWorkRequestErrorsResponse.Builder::opcNextPage)
+ .handleResponseHeaderString(
+ "opc-request-id", ListWorkRequestErrorsResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public ListWorkRequestLogsResponse listWorkRequestLogs(ListWorkRequestLogsRequest request) {
+
+ Validate.notBlank(request.getWorkRequestId(), "workRequestId must not be blank");
+
+ return clientCall(request, ListWorkRequestLogsResponse::builder)
+ .logger(LOG, "listWorkRequestLogs")
+ .serviceDetails("Diagnosis", "ListWorkRequestLogs", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListWorkRequestLogsRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendPathParam(request.getWorkRequestId())
+ .appendPathParam("logs")
+ .appendQueryParam("page", request.getPage())
+ .appendQueryParam("limit", request.getLimit())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequestLogEntryCollection.class,
+ ListWorkRequestLogsResponse.Builder::workRequestLogEntryCollection)
+ .handleResponseHeaderString(
+ "opc-next-page", ListWorkRequestLogsResponse.Builder::opcNextPage)
+ .handleResponseHeaderString(
+ "opc-request-id", ListWorkRequestLogsResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public ListWorkRequestsResponse listWorkRequests(ListWorkRequestsRequest request) {
+
+ return clientCall(request, ListWorkRequestsResponse::builder)
+ .logger(LOG, "listWorkRequests")
+ .serviceDetails("Diagnosis", "ListWorkRequests", "")
+ .method(com.oracle.bmc.http.client.Method.GET)
+ .requestBuilder(ListWorkRequestsRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("workRequests")
+ .appendQueryParam("compartmentId", request.getCompartmentId())
+ .appendQueryParam("workRequestId", request.getWorkRequestId())
+ .appendEnumQueryParam("status", request.getStatus())
+ .appendQueryParam("resourceId", request.getResourceId())
+ .appendQueryParam("page", request.getPage())
+ .appendQueryParam("limit", request.getLimit())
+ .appendEnumQueryParam("sortOrder", request.getSortOrder())
+ .appendEnumQueryParam("sortBy", request.getSortBy())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.WorkRequestSummaryCollection.class,
+ ListWorkRequestsResponse.Builder::workRequestSummaryCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", ListWorkRequestsResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", ListWorkRequestsResponse.Builder::opcNextPage)
+ .callSync();
+ }
+
+ @Override
+ public QueryDiagnosisByHealthCheckKeyResponse queryDiagnosisByHealthCheckKey(
+ QueryDiagnosisByHealthCheckKeyRequest request) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getQueryDiagnosisByHealthCheckKeyDetails(),
+ "queryDiagnosisByHealthCheckKeyDetails is required");
+
+ return clientCall(request, QueryDiagnosisByHealthCheckKeyResponse::builder)
+ .logger(LOG, "queryDiagnosisByHealthCheckKey")
+ .serviceDetails("Diagnosis", "QueryDiagnosisByHealthCheckKey", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(QueryDiagnosisByHealthCheckKeyRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("queryDiagnosisByHealthCheckKey")
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.RecommendationReport.class,
+ QueryDiagnosisByHealthCheckKeyResponse.Builder::recommendationReport)
+ .handleResponseHeaderString(
+ "etag", QueryDiagnosisByHealthCheckKeyResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id",
+ QueryDiagnosisByHealthCheckKeyResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public QueryDiagnosisSummaryResponse queryDiagnosisSummary(
+ QueryDiagnosisSummaryRequest request) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getQueryDiagnosisSummaryDetails(),
+ "queryDiagnosisSummaryDetails is required");
+
+ return clientCall(request, QueryDiagnosisSummaryResponse::builder)
+ .logger(LOG, "queryDiagnosisSummary")
+ .serviceDetails("Diagnosis", "QueryDiagnosisSummary", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(QueryDiagnosisSummaryRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("queryDiagnosisSummary")
+ .appendQueryParam("limit", request.getLimit())
+ .appendQueryParam("page", request.getPage())
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisSummaryCollection.class,
+ QueryDiagnosisSummaryResponse.Builder::diagnosisSummaryCollection)
+ .handleResponseHeaderString(
+ "opc-request-id", QueryDiagnosisSummaryResponse.Builder::opcRequestId)
+ .handleResponseHeaderString(
+ "opc-next-page", QueryDiagnosisSummaryResponse.Builder::opcNextPage)
+ .callSync();
+ }
+
+ @Override
+ public RequestDiagnosisResponse requestDiagnosis(RequestDiagnosisRequest request) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getRequestDiagnosisDetails(), "requestDiagnosisDetails is required");
+
+ return clientCall(request, RequestDiagnosisResponse::builder)
+ .logger(LOG, "requestDiagnosis")
+ .serviceDetails("Diagnosis", "RequestDiagnosis", "")
+ .method(com.oracle.bmc.http.client.Method.POST)
+ .requestBuilder(RequestDiagnosisRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .appendPathParam("actions")
+ .appendPathParam("requestDiagnosis")
+ .accept("application/json")
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleBody(
+ com.oracle.bmc.clusterhealth.model.DiagnosisResults.class,
+ RequestDiagnosisResponse.Builder::diagnosisResults)
+ .handleResponseHeaderString("etag", RequestDiagnosisResponse.Builder::etag)
+ .handleResponseHeaderString(
+ "opc-request-id", RequestDiagnosisResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public UpdateDiagnosisStoreResponse updateDiagnosisStore(UpdateDiagnosisStoreRequest request) {
+
+ Validate.notBlank(request.getDiagnosisStoreId(), "diagnosisStoreId must not be blank");
+ Objects.requireNonNull(
+ request.getUpdateDiagnosisStoreDetails(),
+ "updateDiagnosisStoreDetails is required");
+
+ return clientCall(request, UpdateDiagnosisStoreResponse::builder)
+ .logger(LOG, "updateDiagnosisStore")
+ .serviceDetails("Diagnosis", "UpdateDiagnosisStore", "")
+ .method(com.oracle.bmc.http.client.Method.PUT)
+ .requestBuilder(UpdateDiagnosisStoreRequest::builder)
+ .basePath("/20260331")
+ .appendPathParam("diagnosisStores")
+ .appendPathParam(request.getDiagnosisStoreId())
+ .accept("application/json")
+ .appendHeader("if-match", request.getIfMatch())
+ .appendHeader("opc-request-id", request.getOpcRequestId())
+ .operationUsesDefaultRetries()
+ .hasBody()
+ .handleResponseHeaderString(
+ "opc-work-request-id",
+ UpdateDiagnosisStoreResponse.Builder::opcWorkRequestId)
+ .handleResponseHeaderString(
+ "opc-request-id", UpdateDiagnosisStoreResponse.Builder::opcRequestId)
+ .callSync();
+ }
+
+ @Override
+ public DiagnosisWaiters getWaiters() {
+ return waiters;
+ }
+
+ @Override
+ public DiagnosisPaginators 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 DiagnosisClient(
+ 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 DiagnosisClient(
+ 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 DiagnosisClient(
+ 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 DiagnosisClient(
+ 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 DiagnosisClient(
+ 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 DiagnosisClient(
+ 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 DiagnosisClient(
+ 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 DiagnosisClient(
+ 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-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisPaginators.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisPaginators.java
new file mode 100644
index 00000000000..d4595e9111a
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisPaginators.java
@@ -0,0 +1,520 @@
+/**
+ * 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.clusterhealth;
+
+import com.oracle.bmc.clusterhealth.requests.*;
+import com.oracle.bmc.clusterhealth.responses.*;
+
+/**
+ * Collection of helper methods that can be used to provide an {@link java.lang.Iterable} interface
+ * to any list operations of Diagnosis 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: 20260331")
+public class DiagnosisPaginators {
+ private final Diagnosis client;
+
+ public DiagnosisPaginators(Diagnosis client) {
+ this.client = client;
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the responses received from the
+ * listDiagnosisStores 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 listDiagnosisStoresResponseIterator(
+ final ListDiagnosisStoresRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseIterable<
+ ListDiagnosisStoresRequest.Builder,
+ ListDiagnosisStoresRequest,
+ ListDiagnosisStoresResponse>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListDiagnosisStoresRequest.Builder get() {
+ return ListDiagnosisStoresRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListDiagnosisStoresResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListDiagnosisStoresRequest.Builder>,
+ ListDiagnosisStoresRequest>() {
+ @Override
+ public ListDiagnosisStoresRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListDiagnosisStoresRequest.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<
+ ListDiagnosisStoresRequest, ListDiagnosisStoresResponse>() {
+ @Override
+ public ListDiagnosisStoresResponse apply(ListDiagnosisStoresRequest request) {
+ return client.listDiagnosisStores(request);
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the {@link
+ * com.oracle.bmc.clusterhealth.model.DiagnosisStoreSummary} objects contained in responses from
+ * the listDiagnosisStores 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.clusterhealth.model.DiagnosisStoreSummary} objects contained in responses
+ * received from the service.
+ */
+ public Iterable
+ listDiagnosisStoresRecordIterator(final ListDiagnosisStoresRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseRecordIterable<
+ ListDiagnosisStoresRequest.Builder,
+ ListDiagnosisStoresRequest,
+ ListDiagnosisStoresResponse,
+ com.oracle.bmc.clusterhealth.model.DiagnosisStoreSummary>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListDiagnosisStoresRequest.Builder get() {
+ return ListDiagnosisStoresRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListDiagnosisStoresResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListDiagnosisStoresRequest.Builder>,
+ ListDiagnosisStoresRequest>() {
+ @Override
+ public ListDiagnosisStoresRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListDiagnosisStoresRequest.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<
+ ListDiagnosisStoresRequest, ListDiagnosisStoresResponse>() {
+ @Override
+ public ListDiagnosisStoresResponse apply(ListDiagnosisStoresRequest request) {
+ return client.listDiagnosisStores(request);
+ }
+ },
+ new java.util.function.Function<
+ ListDiagnosisStoresResponse,
+ java.util.List<
+ com.oracle.bmc.clusterhealth.model.DiagnosisStoreSummary>>() {
+ @Override
+ public java.util.List
+ apply(ListDiagnosisStoresResponse response) {
+ return response.getDiagnosisStoreCollection().getItems();
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the responses received from the
+ * listWorkRequestErrors 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 listWorkRequestErrorsResponseIterator(
+ final ListWorkRequestErrorsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseIterable<
+ ListWorkRequestErrorsRequest.Builder,
+ ListWorkRequestErrorsRequest,
+ ListWorkRequestErrorsResponse>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListWorkRequestErrorsRequest.Builder get() {
+ return ListWorkRequestErrorsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListWorkRequestErrorsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestErrorsRequest.Builder>,
+ ListWorkRequestErrorsRequest>() {
+ @Override
+ public ListWorkRequestErrorsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestErrorsRequest.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<
+ ListWorkRequestErrorsRequest, ListWorkRequestErrorsResponse>() {
+ @Override
+ public ListWorkRequestErrorsResponse apply(
+ ListWorkRequestErrorsRequest request) {
+ return client.listWorkRequestErrors(request);
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the {@link
+ * com.oracle.bmc.clusterhealth.model.WorkRequestError} objects contained in responses from the
+ * listWorkRequestErrors 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.clusterhealth.model.WorkRequestError} objects contained in responses
+ * received from the service.
+ */
+ public Iterable
+ listWorkRequestErrorsRecordIterator(final ListWorkRequestErrorsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseRecordIterable<
+ ListWorkRequestErrorsRequest.Builder,
+ ListWorkRequestErrorsRequest,
+ ListWorkRequestErrorsResponse,
+ com.oracle.bmc.clusterhealth.model.WorkRequestError>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListWorkRequestErrorsRequest.Builder get() {
+ return ListWorkRequestErrorsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListWorkRequestErrorsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestErrorsRequest.Builder>,
+ ListWorkRequestErrorsRequest>() {
+ @Override
+ public ListWorkRequestErrorsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestErrorsRequest.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<
+ ListWorkRequestErrorsRequest, ListWorkRequestErrorsResponse>() {
+ @Override
+ public ListWorkRequestErrorsResponse apply(
+ ListWorkRequestErrorsRequest request) {
+ return client.listWorkRequestErrors(request);
+ }
+ },
+ new java.util.function.Function<
+ ListWorkRequestErrorsResponse,
+ java.util.List>() {
+ @Override
+ public java.util.List
+ apply(ListWorkRequestErrorsResponse response) {
+ return response.getWorkRequestErrorCollection().getItems();
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the responses received from the
+ * listWorkRequestLogs 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 listWorkRequestLogsResponseIterator(
+ final ListWorkRequestLogsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseIterable<
+ ListWorkRequestLogsRequest.Builder,
+ ListWorkRequestLogsRequest,
+ ListWorkRequestLogsResponse>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListWorkRequestLogsRequest.Builder get() {
+ return ListWorkRequestLogsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListWorkRequestLogsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestLogsRequest.Builder>,
+ ListWorkRequestLogsRequest>() {
+ @Override
+ public ListWorkRequestLogsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestLogsRequest.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<
+ ListWorkRequestLogsRequest, ListWorkRequestLogsResponse>() {
+ @Override
+ public ListWorkRequestLogsResponse apply(ListWorkRequestLogsRequest request) {
+ return client.listWorkRequestLogs(request);
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the {@link
+ * com.oracle.bmc.clusterhealth.model.WorkRequestLogEntry} objects contained in responses from
+ * the listWorkRequestLogs 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.clusterhealth.model.WorkRequestLogEntry} objects contained in responses
+ * received from the service.
+ */
+ public Iterable
+ listWorkRequestLogsRecordIterator(final ListWorkRequestLogsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseRecordIterable<
+ ListWorkRequestLogsRequest.Builder,
+ ListWorkRequestLogsRequest,
+ ListWorkRequestLogsResponse,
+ com.oracle.bmc.clusterhealth.model.WorkRequestLogEntry>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListWorkRequestLogsRequest.Builder get() {
+ return ListWorkRequestLogsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListWorkRequestLogsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestLogsRequest.Builder>,
+ ListWorkRequestLogsRequest>() {
+ @Override
+ public ListWorkRequestLogsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestLogsRequest.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<
+ ListWorkRequestLogsRequest, ListWorkRequestLogsResponse>() {
+ @Override
+ public ListWorkRequestLogsResponse apply(ListWorkRequestLogsRequest request) {
+ return client.listWorkRequestLogs(request);
+ }
+ },
+ new java.util.function.Function<
+ ListWorkRequestLogsResponse,
+ java.util.List>() {
+ @Override
+ public java.util.List
+ apply(ListWorkRequestLogsResponse response) {
+ return response.getWorkRequestLogEntryCollection().getItems();
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the responses received from the
+ * listWorkRequests 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 listWorkRequestsResponseIterator(
+ final ListWorkRequestsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseIterable<
+ ListWorkRequestsRequest.Builder, ListWorkRequestsRequest, ListWorkRequestsResponse>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListWorkRequestsRequest.Builder get() {
+ return ListWorkRequestsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListWorkRequestsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestsRequest.Builder>,
+ ListWorkRequestsRequest>() {
+ @Override
+ public ListWorkRequestsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestsRequest.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<
+ ListWorkRequestsRequest, ListWorkRequestsResponse>() {
+ @Override
+ public ListWorkRequestsResponse apply(ListWorkRequestsRequest request) {
+ return client.listWorkRequests(request);
+ }
+ });
+ }
+
+ /**
+ * Creates a new iterable which will iterate over the {@link
+ * com.oracle.bmc.clusterhealth.model.WorkRequestSummary} objects contained in responses from
+ * the listWorkRequests 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.clusterhealth.model.WorkRequestSummary} objects contained in responses
+ * received from the service.
+ */
+ public Iterable
+ listWorkRequestsRecordIterator(final ListWorkRequestsRequest request) {
+ return new com.oracle.bmc.paginator.internal.ResponseRecordIterable<
+ ListWorkRequestsRequest.Builder,
+ ListWorkRequestsRequest,
+ ListWorkRequestsResponse,
+ com.oracle.bmc.clusterhealth.model.WorkRequestSummary>(
+ new java.util.function.Supplier() {
+ @Override
+ public ListWorkRequestsRequest.Builder get() {
+ return ListWorkRequestsRequest.builder().copy(request);
+ }
+ },
+ new java.util.function.Function() {
+ @Override
+ public String apply(ListWorkRequestsResponse response) {
+ return response.getOpcNextPage();
+ }
+ },
+ new java.util.function.Function<
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestsRequest.Builder>,
+ ListWorkRequestsRequest>() {
+ @Override
+ public ListWorkRequestsRequest apply(
+ com.oracle.bmc.paginator.internal.RequestBuilderAndToken<
+ ListWorkRequestsRequest.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<
+ ListWorkRequestsRequest, ListWorkRequestsResponse>() {
+ @Override
+ public ListWorkRequestsResponse apply(ListWorkRequestsRequest request) {
+ return client.listWorkRequests(request);
+ }
+ },
+ new java.util.function.Function<
+ ListWorkRequestsResponse,
+ java.util.List>() {
+ @Override
+ public java.util.List
+ apply(ListWorkRequestsResponse response) {
+ return response.getWorkRequestSummaryCollection().getItems();
+ }
+ });
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisWaiters.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisWaiters.java
new file mode 100644
index 00000000000..beaa519cefd
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/DiagnosisWaiters.java
@@ -0,0 +1,192 @@
+/**
+ * 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.clusterhealth;
+
+import com.oracle.bmc.clusterhealth.requests.*;
+import com.oracle.bmc.clusterhealth.responses.*;
+
+/**
+ * Collection of helper methods to produce {@link com.oracle.bmc.waiter.Waiter}s for different
+ * resources of Diagnosis.
+ *
+ * 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: 20260331")
+public class DiagnosisWaiters {
+ private final java.util.concurrent.ExecutorService executorService;
+ private final Diagnosis client;
+
+ public DiagnosisWaiters(
+ java.util.concurrent.ExecutorService executorService, Diagnosis 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
+ forDiagnosisStore(
+ GetDiagnosisStoreRequest request,
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.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 forDiagnosisStore(
+ 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
+ forDiagnosisStore(
+ GetDiagnosisStoreRequest request,
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.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 forDiagnosisStore(
+ 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
+ forDiagnosisStore(
+ GetDiagnosisStoreRequest request,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy,
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.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 forDiagnosisStore(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request,
+ targetStates);
+ }
+
+ // Helper method to create a new Waiter for DiagnosisStore.
+ private com.oracle.bmc.waiter.Waiter
+ forDiagnosisStore(
+ com.oracle.bmc.waiter.BmcGenericWaiter waiter,
+ final GetDiagnosisStoreRequest request,
+ final com.oracle.bmc.clusterhealth.model.DiagnosisStore.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<
+ GetDiagnosisStoreRequest, GetDiagnosisStoreResponse>() {
+ @Override
+ public GetDiagnosisStoreResponse apply(
+ GetDiagnosisStoreRequest request) {
+ return client.getDiagnosisStore(request);
+ }
+ },
+ new java.util.function.Predicate() {
+ @Override
+ public boolean test(GetDiagnosisStoreResponse response) {
+ return targetStatesSet.contains(
+ response.getDiagnosisStore().getLifecycleState());
+ }
+ },
+ targetStatesSet.contains(
+ com.oracle.bmc.clusterhealth.model.DiagnosisStore.LifecycleState
+ .Deleted)),
+ request);
+ }
+
+ /**
+ * Creates a new {@link com.oracle.bmc.waiter.Waiter} using default configuration.
+ *
+ * @param request the request to send
+ * @return a new {@code Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forWorkRequest(GetWorkRequestRequest request) {
+ return forWorkRequest(com.oracle.bmc.waiter.Waiters.DEFAULT_POLLING_WAITER, request);
+ }
+
+ /**
+ * 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 {@linkcom.oracle.bmc.waiter. DelayStrategy} to use
+ * @return a new {@code com.oracle.bmc.waiter.Waiter} instance
+ */
+ public com.oracle.bmc.waiter.Waiter
+ forWorkRequest(
+ GetWorkRequestRequest request,
+ com.oracle.bmc.waiter.TerminationStrategy terminationStrategy,
+ com.oracle.bmc.waiter.DelayStrategy delayStrategy) {
+ return forWorkRequest(
+ com.oracle.bmc.waiter.Waiters.newWaiter(terminationStrategy, delayStrategy),
+ request);
+ }
+
+ // Helper method to create a new Waiter for WorkRequest.
+ private com.oracle.bmc.waiter.Waiter
+ forWorkRequest(
+ com.oracle.bmc.waiter.BmcGenericWaiter waiter,
+ final GetWorkRequestRequest request) {
+ return new com.oracle.bmc.waiter.internal.SimpleWaiterImpl<>(
+ executorService,
+ waiter.toCallable(
+ () -> request,
+ new java.util.function.Function<
+ GetWorkRequestRequest, GetWorkRequestResponse>() {
+ @Override
+ public GetWorkRequestResponse apply(GetWorkRequestRequest request) {
+ return client.getWorkRequest(request);
+ }
+ },
+ new java.util.function.Predicate() {
+ @Override
+ public boolean test(GetWorkRequestResponse response) {
+ // work requests are complete once the time finished is available
+ return response.getWorkRequest().getTimeFinished() != null;
+ }
+ },
+ false),
+ request);
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/ActionType.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/ActionType.java
new file mode 100644
index 00000000000..3e6ab61b489
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/ActionType.java
@@ -0,0 +1,56 @@
+/**
+ * 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.clusterhealth.model;
+
+/** Possible types of actions. */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20260331")
+public enum ActionType implements com.oracle.bmc.http.internal.BmcEnum {
+ Created("CREATED"),
+ Updated("UPDATED"),
+ Deleted("DELETED"),
+ InProgress("IN_PROGRESS"),
+ Related("RELATED"),
+ Failed("FAILED"),
+
+ /**
+ * 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(ActionType.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (ActionType v : ActionType.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ ActionType(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static ActionType create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'ActionType', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/ChangeDiagnosisStoreCompartmentDetails.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/ChangeDiagnosisStoreCompartmentDetails.java
new file mode 100644
index 00000000000..79394b9a232
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/ChangeDiagnosisStoreCompartmentDetails.java
@@ -0,0 +1,145 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * The configuration details for the move operation.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = ChangeDiagnosisStoreCompartmentDetails.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class ChangeDiagnosisStoreCompartmentDetails
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"compartmentId"})
+ public ChangeDiagnosisStoreCompartmentDetails(String compartmentId) {
+ super();
+ this.compartmentId = compartmentId;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to move the Diagnosis to.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to move the Diagnosis to.
+ *
+ * @param compartmentId the value to set
+ * @return this builder
+ */
+ public Builder compartmentId(String compartmentId) {
+ this.compartmentId = compartmentId;
+ this.__explicitlySet__.add("compartmentId");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public ChangeDiagnosisStoreCompartmentDetails build() {
+ ChangeDiagnosisStoreCompartmentDetails model =
+ new ChangeDiagnosisStoreCompartmentDetails(this.compartmentId);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(ChangeDiagnosisStoreCompartmentDetails model) {
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to move the Diagnosis to.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to move the Diagnosis to.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ @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("ChangeDiagnosisStoreCompartmentDetails(");
+ sb.append("super=").append(super.toString());
+ sb.append("compartmentId=").append(String.valueOf(this.compartmentId));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ChangeDiagnosisStoreCompartmentDetails)) {
+ return false;
+ }
+
+ ChangeDiagnosisStoreCompartmentDetails other = (ChangeDiagnosisStoreCompartmentDetails) o;
+ return java.util.Objects.equals(this.compartmentId, other.compartmentId)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result =
+ (result * PRIME)
+ + (this.compartmentId == null ? 43 : this.compartmentId.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/CreateDiagnosisStoreDetails.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/CreateDiagnosisStoreDetails.java
new file mode 100644
index 00000000000..c99076701eb
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/CreateDiagnosisStoreDetails.java
@@ -0,0 +1,410 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * The data to create a Diagnosis.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = CreateDiagnosisStoreDetails.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class CreateDiagnosisStoreDetails
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "displayName",
+ "objectStoreNamespace",
+ "objectStoreBucket",
+ "compartmentId",
+ "freeformTags",
+ "definedTags"
+ })
+ public CreateDiagnosisStoreDetails(
+ String displayName,
+ String objectStoreNamespace,
+ String objectStoreBucket,
+ String compartmentId,
+ java.util.Map freeformTags,
+ java.util.Map> definedTags) {
+ super();
+ this.displayName = displayName;
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.objectStoreBucket = objectStoreBucket;
+ this.compartmentId = compartmentId;
+ this.freeformTags = freeformTags;
+ this.definedTags = definedTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @param displayName the value to set
+ * @return this builder
+ */
+ public Builder displayName(String displayName) {
+ this.displayName = displayName;
+ this.__explicitlySet__.add("displayName");
+ return this;
+ }
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private String objectStoreNamespace;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @param objectStoreNamespace the value to set
+ * @return this builder
+ */
+ public Builder objectStoreNamespace(String objectStoreNamespace) {
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.__explicitlySet__.add("objectStoreNamespace");
+ return this;
+ }
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private String objectStoreBucket;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @param objectStoreBucket the value to set
+ * @return this builder
+ */
+ public Builder objectStoreBucket(String objectStoreBucket) {
+ this.objectStoreBucket = objectStoreBucket;
+ this.__explicitlySet__.add("objectStoreBucket");
+ return this;
+ }
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to create the Diagnosis in.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to create the Diagnosis in.
+ *
+ * @param compartmentId the value to set
+ * @return this builder
+ */
+ public Builder compartmentId(String compartmentId) {
+ this.compartmentId = compartmentId;
+ this.__explicitlySet__.add("compartmentId");
+ 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;
+ }
+ /**
+ * 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;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public CreateDiagnosisStoreDetails build() {
+ CreateDiagnosisStoreDetails model =
+ new CreateDiagnosisStoreDetails(
+ this.displayName,
+ this.objectStoreNamespace,
+ this.objectStoreBucket,
+ this.compartmentId,
+ this.freeformTags,
+ this.definedTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(CreateDiagnosisStoreDetails model) {
+ if (model.wasPropertyExplicitlySet("displayName")) {
+ this.displayName(model.getDisplayName());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreNamespace")) {
+ this.objectStoreNamespace(model.getObjectStoreNamespace());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreBucket")) {
+ this.objectStoreBucket(model.getObjectStoreBucket());
+ }
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private final String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @return the value
+ */
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private final String objectStoreNamespace;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @return the value
+ */
+ public String getObjectStoreNamespace() {
+ return objectStoreNamespace;
+ }
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private final String objectStoreBucket;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @return the value
+ */
+ public String getObjectStoreBucket() {
+ return objectStoreBucket;
+ }
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to create the Diagnosis in.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment to create the Diagnosis in.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * 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;
+ }
+
+ @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("CreateDiagnosisStoreDetails(");
+ sb.append("super=").append(super.toString());
+ sb.append("displayName=").append(String.valueOf(this.displayName));
+ sb.append(", objectStoreNamespace=").append(String.valueOf(this.objectStoreNamespace));
+ sb.append(", objectStoreBucket=").append(String.valueOf(this.objectStoreBucket));
+ sb.append(", compartmentId=").append(String.valueOf(this.compartmentId));
+ sb.append(", freeformTags=").append(String.valueOf(this.freeformTags));
+ sb.append(", definedTags=").append(String.valueOf(this.definedTags));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CreateDiagnosisStoreDetails)) {
+ return false;
+ }
+
+ CreateDiagnosisStoreDetails other = (CreateDiagnosisStoreDetails) o;
+ return java.util.Objects.equals(this.displayName, other.displayName)
+ && java.util.Objects.equals(this.objectStoreNamespace, other.objectStoreNamespace)
+ && java.util.Objects.equals(this.objectStoreBucket, other.objectStoreBucket)
+ && java.util.Objects.equals(this.compartmentId, other.compartmentId)
+ && java.util.Objects.equals(this.freeformTags, other.freeformTags)
+ && java.util.Objects.equals(this.definedTags, other.definedTags)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.displayName == null ? 43 : this.displayName.hashCode());
+ result =
+ (result * PRIME)
+ + (this.objectStoreNamespace == null
+ ? 43
+ : this.objectStoreNamespace.hashCode());
+ result =
+ (result * PRIME)
+ + (this.objectStoreBucket == null ? 43 : this.objectStoreBucket.hashCode());
+ result =
+ (result * PRIME)
+ + (this.compartmentId == null ? 43 : this.compartmentId.hashCode());
+ result = (result * PRIME) + (this.freeformTags == null ? 43 : this.freeformTags.hashCode());
+ result = (result * PRIME) + (this.definedTags == null ? 43 : this.definedTags.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisResults.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisResults.java
new file mode 100644
index 00000000000..64182d50a3f
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisResults.java
@@ -0,0 +1,138 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * the results of requestDiagnosis
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = DiagnosisResults.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class DiagnosisResults
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"recommendationReports"})
+ public DiagnosisResults(java.util.List recommendationReports) {
+ super();
+ this.recommendationReports = recommendationReports;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** collection of recommendation reports generated for each requested test */
+ @com.fasterxml.jackson.annotation.JsonProperty("recommendationReports")
+ private java.util.List recommendationReports;
+
+ /**
+ * collection of recommendation reports generated for each requested test
+ *
+ * @param recommendationReports the value to set
+ * @return this builder
+ */
+ public Builder recommendationReports(
+ java.util.List recommendationReports) {
+ this.recommendationReports = recommendationReports;
+ this.__explicitlySet__.add("recommendationReports");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public DiagnosisResults build() {
+ DiagnosisResults model = new DiagnosisResults(this.recommendationReports);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(DiagnosisResults model) {
+ if (model.wasPropertyExplicitlySet("recommendationReports")) {
+ this.recommendationReports(model.getRecommendationReports());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** collection of recommendation reports generated for each requested test */
+ @com.fasterxml.jackson.annotation.JsonProperty("recommendationReports")
+ private final java.util.List recommendationReports;
+
+ /**
+ * collection of recommendation reports generated for each requested test
+ *
+ * @return the value
+ */
+ public java.util.List getRecommendationReports() {
+ return recommendationReports;
+ }
+
+ @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("DiagnosisResults(");
+ sb.append("super=").append(super.toString());
+ sb.append("recommendationReports=").append(String.valueOf(this.recommendationReports));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof DiagnosisResults)) {
+ return false;
+ }
+
+ DiagnosisResults other = (DiagnosisResults) o;
+ return java.util.Objects.equals(this.recommendationReports, other.recommendationReports)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result =
+ (result * PRIME)
+ + (this.recommendationReports == null
+ ? 43
+ : this.recommendationReports.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStore.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStore.java
new file mode 100644
index 00000000000..702a7bb4694
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStore.java
@@ -0,0 +1,821 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * A DiagnosisStore is a description of a DiagnosisStore.
+ *
+ * To use any of the API operations, you must be authorized in an IAM policy. If you're not
+ * authorized, talk to an administrator. If you're an administrator who needs to write policies to
+ * give users access, see [Getting Started with
+ * Policies](https://docs.oracle.com/iaas/Content/Identity/policiesgs/get-started-with-policies.htm).
+ *
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = DiagnosisStore.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class DiagnosisStore
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "id",
+ "displayName",
+ "compartmentId",
+ "lifecycleState",
+ "lifecycleDetails",
+ "objectStoreNamespace",
+ "objectStoreBucket",
+ "timeCreated",
+ "timeUpdated",
+ "lastAcceptedRequestToken",
+ "lastCompletedRequestToken",
+ "freeformTags",
+ "definedTags",
+ "systemTags"
+ })
+ public DiagnosisStore(
+ String id,
+ String displayName,
+ String compartmentId,
+ LifecycleState lifecycleState,
+ String lifecycleDetails,
+ String objectStoreNamespace,
+ String objectStoreBucket,
+ java.util.Date timeCreated,
+ java.util.Date timeUpdated,
+ String lastAcceptedRequestToken,
+ String lastCompletedRequestToken,
+ java.util.Map freeformTags,
+ java.util.Map> definedTags,
+ java.util.Map> systemTags) {
+ super();
+ this.id = id;
+ this.displayName = displayName;
+ this.compartmentId = compartmentId;
+ this.lifecycleState = lifecycleState;
+ this.lifecycleDetails = lifecycleDetails;
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.objectStoreBucket = objectStoreBucket;
+ this.timeCreated = timeCreated;
+ this.timeUpdated = timeUpdated;
+ this.lastAcceptedRequestToken = lastAcceptedRequestToken;
+ this.lastCompletedRequestToken = lastCompletedRequestToken;
+ this.freeformTags = freeformTags;
+ this.definedTags = definedTags;
+ this.systemTags = systemTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private String id;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ *
+ * @param id the value to set
+ * @return this builder
+ */
+ public Builder id(String id) {
+ this.id = id;
+ this.__explicitlySet__.add("id");
+ return this;
+ }
+ /** A user-friendly name. Does not have to be unique, and it's changeable. */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable.
+ *
+ * @param displayName the value to set
+ * @return this builder
+ */
+ public Builder displayName(String displayName) {
+ this.displayName = displayName;
+ this.__explicitlySet__.add("displayName");
+ return this;
+ }
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) 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 Diagnosis. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private LifecycleState lifecycleState;
+
+ /**
+ * The current state of the Diagnosis.
+ *
+ * @param lifecycleState the value to set
+ * @return this builder
+ */
+ public Builder lifecycleState(LifecycleState lifecycleState) {
+ this.lifecycleState = lifecycleState;
+ this.__explicitlySet__.add("lifecycleState");
+ return this;
+ }
+ /**
+ * A message that describes the current state of the Diagnosis in more detail. For example,
+ * can be used to provide actionable information for a resource in the Failed state.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleDetails")
+ private String lifecycleDetails;
+
+ /**
+ * A message that describes the current state of the Diagnosis in more detail. For example,
+ * can be used to provide actionable information for a resource in the Failed state.
+ *
+ * @param lifecycleDetails the value to set
+ * @return this builder
+ */
+ public Builder lifecycleDetails(String lifecycleDetails) {
+ this.lifecycleDetails = lifecycleDetails;
+ this.__explicitlySet__.add("lifecycleDetails");
+ return this;
+ }
+ /** The namespace of the object store. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private String objectStoreNamespace;
+
+ /**
+ * The namespace of the object store.
+ *
+ * @param objectStoreNamespace the value to set
+ * @return this builder
+ */
+ public Builder objectStoreNamespace(String objectStoreNamespace) {
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.__explicitlySet__.add("objectStoreNamespace");
+ return this;
+ }
+ /** The name of the object store bucket. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private String objectStoreBucket;
+
+ /**
+ * The name of the object store bucket.
+ *
+ * @param objectStoreBucket the value to set
+ * @return this builder
+ */
+ public Builder objectStoreBucket(String objectStoreBucket) {
+ this.objectStoreBucket = objectStoreBucket;
+ this.__explicitlySet__.add("objectStoreBucket");
+ return this;
+ }
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ * Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private java.util.Date timeCreated;
+
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @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 date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private java.util.Date timeUpdated;
+
+ /**
+ * The date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @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;
+ }
+ /** The last accepted request token. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lastAcceptedRequestToken")
+ private String lastAcceptedRequestToken;
+
+ /**
+ * The last accepted request token.
+ *
+ * @param lastAcceptedRequestToken the value to set
+ * @return this builder
+ */
+ public Builder lastAcceptedRequestToken(String lastAcceptedRequestToken) {
+ this.lastAcceptedRequestToken = lastAcceptedRequestToken;
+ this.__explicitlySet__.add("lastAcceptedRequestToken");
+ return this;
+ }
+ /** The last completed request token. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lastCompletedRequestToken")
+ private String lastCompletedRequestToken;
+
+ /**
+ * The last completed request token.
+ *
+ * @param lastCompletedRequestToken the value to set
+ * @return this builder
+ */
+ public Builder lastCompletedRequestToken(String lastCompletedRequestToken) {
+ this.lastCompletedRequestToken = lastCompletedRequestToken;
+ this.__explicitlySet__.add("lastCompletedRequestToken");
+ 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;
+ }
+ /**
+ * 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;
+ }
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace.
+ *
+ * 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.
+ *
+ * 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 DiagnosisStore build() {
+ DiagnosisStore model =
+ new DiagnosisStore(
+ this.id,
+ this.displayName,
+ this.compartmentId,
+ this.lifecycleState,
+ this.lifecycleDetails,
+ this.objectStoreNamespace,
+ this.objectStoreBucket,
+ this.timeCreated,
+ this.timeUpdated,
+ this.lastAcceptedRequestToken,
+ this.lastCompletedRequestToken,
+ this.freeformTags,
+ this.definedTags,
+ this.systemTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(DiagnosisStore model) {
+ if (model.wasPropertyExplicitlySet("id")) {
+ this.id(model.getId());
+ }
+ if (model.wasPropertyExplicitlySet("displayName")) {
+ this.displayName(model.getDisplayName());
+ }
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ if (model.wasPropertyExplicitlySet("lifecycleState")) {
+ this.lifecycleState(model.getLifecycleState());
+ }
+ if (model.wasPropertyExplicitlySet("lifecycleDetails")) {
+ this.lifecycleDetails(model.getLifecycleDetails());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreNamespace")) {
+ this.objectStoreNamespace(model.getObjectStoreNamespace());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreBucket")) {
+ this.objectStoreBucket(model.getObjectStoreBucket());
+ }
+ if (model.wasPropertyExplicitlySet("timeCreated")) {
+ this.timeCreated(model.getTimeCreated());
+ }
+ if (model.wasPropertyExplicitlySet("timeUpdated")) {
+ this.timeUpdated(model.getTimeUpdated());
+ }
+ if (model.wasPropertyExplicitlySet("lastAcceptedRequestToken")) {
+ this.lastAcceptedRequestToken(model.getLastAcceptedRequestToken());
+ }
+ if (model.wasPropertyExplicitlySet("lastCompletedRequestToken")) {
+ this.lastCompletedRequestToken(model.getLastCompletedRequestToken());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ 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](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private final String id;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ *
+ * @return the value
+ */
+ public String getId() {
+ return id;
+ }
+
+ /** A user-friendly name. Does not have to be unique, and it's changeable. */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private final String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable.
+ *
+ * @return the value
+ */
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ /** The current state of the Diagnosis. */
+ public enum LifecycleState implements com.oracle.bmc.http.internal.BmcEnum {
+ Creating("CREATING"),
+ Updating("UPDATING"),
+ Active("ACTIVE"),
+ Deleting("DELETING"),
+ Deleted("DELETED"),
+ Failed("FAILED"),
+
+ /**
+ * 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 Diagnosis. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private final LifecycleState lifecycleState;
+
+ /**
+ * The current state of the Diagnosis.
+ *
+ * @return the value
+ */
+ public LifecycleState getLifecycleState() {
+ return lifecycleState;
+ }
+
+ /**
+ * A message that describes the current state of the Diagnosis in more detail. For example, can
+ * be used to provide actionable information for a resource in the Failed state.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleDetails")
+ private final String lifecycleDetails;
+
+ /**
+ * A message that describes the current state of the Diagnosis in more detail. For example, can
+ * be used to provide actionable information for a resource in the Failed state.
+ *
+ * @return the value
+ */
+ public String getLifecycleDetails() {
+ return lifecycleDetails;
+ }
+
+ /** The namespace of the object store. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private final String objectStoreNamespace;
+
+ /**
+ * The namespace of the object store.
+ *
+ * @return the value
+ */
+ public String getObjectStoreNamespace() {
+ return objectStoreNamespace;
+ }
+
+ /** The name of the object store bucket. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private final String objectStoreBucket;
+
+ /**
+ * The name of the object store bucket.
+ *
+ * @return the value
+ */
+ public String getObjectStoreBucket() {
+ return objectStoreBucket;
+ }
+
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ * Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private final java.util.Date timeCreated;
+
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeCreated() {
+ return timeCreated;
+ }
+
+ /**
+ * The date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private final java.util.Date timeUpdated;
+
+ /**
+ * The date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeUpdated() {
+ return timeUpdated;
+ }
+
+ /** The last accepted request token. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lastAcceptedRequestToken")
+ private final String lastAcceptedRequestToken;
+
+ /**
+ * The last accepted request token.
+ *
+ * @return the value
+ */
+ public String getLastAcceptedRequestToken() {
+ return lastAcceptedRequestToken;
+ }
+
+ /** The last completed request token. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lastCompletedRequestToken")
+ private final String lastCompletedRequestToken;
+
+ /**
+ * The last completed request token.
+ *
+ * @return the value
+ */
+ public String getLastCompletedRequestToken() {
+ return lastCompletedRequestToken;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace.
+ *
+ * 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.
+ *
+ * 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("DiagnosisStore(");
+ sb.append("super=").append(super.toString());
+ sb.append("id=").append(String.valueOf(this.id));
+ sb.append(", displayName=").append(String.valueOf(this.displayName));
+ sb.append(", compartmentId=").append(String.valueOf(this.compartmentId));
+ sb.append(", lifecycleState=").append(String.valueOf(this.lifecycleState));
+ sb.append(", lifecycleDetails=").append(String.valueOf(this.lifecycleDetails));
+ sb.append(", objectStoreNamespace=").append(String.valueOf(this.objectStoreNamespace));
+ sb.append(", objectStoreBucket=").append(String.valueOf(this.objectStoreBucket));
+ sb.append(", timeCreated=").append(String.valueOf(this.timeCreated));
+ sb.append(", timeUpdated=").append(String.valueOf(this.timeUpdated));
+ sb.append(", lastAcceptedRequestToken=")
+ .append(String.valueOf(this.lastAcceptedRequestToken));
+ sb.append(", lastCompletedRequestToken=")
+ .append(String.valueOf(this.lastCompletedRequestToken));
+ sb.append(", freeformTags=").append(String.valueOf(this.freeformTags));
+ sb.append(", definedTags=").append(String.valueOf(this.definedTags));
+ 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 DiagnosisStore)) {
+ return false;
+ }
+
+ DiagnosisStore other = (DiagnosisStore) o;
+ return java.util.Objects.equals(this.id, other.id)
+ && java.util.Objects.equals(this.displayName, other.displayName)
+ && java.util.Objects.equals(this.compartmentId, other.compartmentId)
+ && java.util.Objects.equals(this.lifecycleState, other.lifecycleState)
+ && java.util.Objects.equals(this.lifecycleDetails, other.lifecycleDetails)
+ && java.util.Objects.equals(this.objectStoreNamespace, other.objectStoreNamespace)
+ && java.util.Objects.equals(this.objectStoreBucket, other.objectStoreBucket)
+ && java.util.Objects.equals(this.timeCreated, other.timeCreated)
+ && java.util.Objects.equals(this.timeUpdated, other.timeUpdated)
+ && java.util.Objects.equals(
+ this.lastAcceptedRequestToken, other.lastAcceptedRequestToken)
+ && java.util.Objects.equals(
+ this.lastCompletedRequestToken, other.lastCompletedRequestToken)
+ && java.util.Objects.equals(this.freeformTags, other.freeformTags)
+ && java.util.Objects.equals(this.definedTags, other.definedTags)
+ && 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.displayName == null ? 43 : this.displayName.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.lifecycleDetails == null ? 43 : this.lifecycleDetails.hashCode());
+ result =
+ (result * PRIME)
+ + (this.objectStoreNamespace == null
+ ? 43
+ : this.objectStoreNamespace.hashCode());
+ result =
+ (result * PRIME)
+ + (this.objectStoreBucket == null ? 43 : this.objectStoreBucket.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.lastAcceptedRequestToken == null
+ ? 43
+ : this.lastAcceptedRequestToken.hashCode());
+ result =
+ (result * PRIME)
+ + (this.lastCompletedRequestToken == null
+ ? 43
+ : this.lastCompletedRequestToken.hashCode());
+ result = (result * PRIME) + (this.freeformTags == null ? 43 : this.freeformTags.hashCode());
+ result = (result * PRIME) + (this.definedTags == null ? 43 : this.definedTags.hashCode());
+ result = (result * PRIME) + (this.systemTags == null ? 43 : this.systemTags.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStoreCollection.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStoreCollection.java
new file mode 100644
index 00000000000..743ea485443
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStoreCollection.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.clusterhealth.model;
+
+/**
+ * Results of a diagnosis search. Contains both DiagnosisSummary items and other information, such
+ * as metadata.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = DiagnosisStoreCollection.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class DiagnosisStoreCollection
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"items"})
+ public DiagnosisStoreCollection(java.util.List items) {
+ super();
+ this.items = items;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** List of diagnosiss. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private java.util.List items;
+
+ /**
+ * List of diagnosiss.
+ *
+ * @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 DiagnosisStoreCollection build() {
+ DiagnosisStoreCollection model = new DiagnosisStoreCollection(this.items);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(DiagnosisStoreCollection 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);
+ }
+
+ /** List of diagnosiss. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private final java.util.List items;
+
+ /**
+ * List of diagnosiss.
+ *
+ * @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("DiagnosisStoreCollection(");
+ 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 DiagnosisStoreCollection)) {
+ return false;
+ }
+
+ DiagnosisStoreCollection other = (DiagnosisStoreCollection) 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-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStoreSummary.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStoreSummary.java
new file mode 100644
index 00000000000..01428945695
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisStoreSummary.java
@@ -0,0 +1,630 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * Summary information about a Diagnosis Store.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = DiagnosisStoreSummary.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class DiagnosisStoreSummary
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "id",
+ "displayName",
+ "compartmentId",
+ "lifecycleState",
+ "objectStoreNamespace",
+ "objectStoreBucket",
+ "timeCreated",
+ "timeUpdated",
+ "freeformTags",
+ "definedTags",
+ "systemTags"
+ })
+ public DiagnosisStoreSummary(
+ String id,
+ String displayName,
+ String compartmentId,
+ DiagnosisStore.LifecycleState lifecycleState,
+ String objectStoreNamespace,
+ String objectStoreBucket,
+ java.util.Date timeCreated,
+ java.util.Date timeUpdated,
+ java.util.Map freeformTags,
+ java.util.Map> definedTags,
+ java.util.Map> systemTags) {
+ super();
+ this.id = id;
+ this.displayName = displayName;
+ this.compartmentId = compartmentId;
+ this.lifecycleState = lifecycleState;
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.objectStoreBucket = objectStoreBucket;
+ this.timeCreated = timeCreated;
+ this.timeUpdated = timeUpdated;
+ this.freeformTags = freeformTags;
+ this.definedTags = definedTags;
+ this.systemTags = systemTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private String id;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ *
+ * @param id the value to set
+ * @return this builder
+ */
+ public Builder id(String id) {
+ this.id = id;
+ this.__explicitlySet__.add("id");
+ return this;
+ }
+ /** A user-friendly name. Does not have to be unique, and it's changeable. */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable.
+ *
+ * @param displayName the value to set
+ * @return this builder
+ */
+ public Builder displayName(String displayName) {
+ this.displayName = displayName;
+ this.__explicitlySet__.add("displayName");
+ return this;
+ }
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) 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 Diagnosis. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private DiagnosisStore.LifecycleState lifecycleState;
+
+ /**
+ * The current state of the Diagnosis.
+ *
+ * @param lifecycleState the value to set
+ * @return this builder
+ */
+ public Builder lifecycleState(DiagnosisStore.LifecycleState lifecycleState) {
+ this.lifecycleState = lifecycleState;
+ this.__explicitlySet__.add("lifecycleState");
+ return this;
+ }
+ /** The namespace of the object store. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private String objectStoreNamespace;
+
+ /**
+ * The namespace of the object store.
+ *
+ * @param objectStoreNamespace the value to set
+ * @return this builder
+ */
+ public Builder objectStoreNamespace(String objectStoreNamespace) {
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.__explicitlySet__.add("objectStoreNamespace");
+ return this;
+ }
+ /** The name of the object store bucket. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private String objectStoreBucket;
+
+ /**
+ * The name of the object store bucket.
+ *
+ * @param objectStoreBucket the value to set
+ * @return this builder
+ */
+ public Builder objectStoreBucket(String objectStoreBucket) {
+ this.objectStoreBucket = objectStoreBucket;
+ this.__explicitlySet__.add("objectStoreBucket");
+ return this;
+ }
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ * Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private java.util.Date timeCreated;
+
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @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 date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private java.util.Date timeUpdated;
+
+ /**
+ * The date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @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;
+ }
+ /**
+ * 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;
+ }
+ /**
+ * 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;
+ }
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace.
+ *
+ * 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.
+ *
+ * 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 DiagnosisStoreSummary build() {
+ DiagnosisStoreSummary model =
+ new DiagnosisStoreSummary(
+ this.id,
+ this.displayName,
+ this.compartmentId,
+ this.lifecycleState,
+ this.objectStoreNamespace,
+ this.objectStoreBucket,
+ this.timeCreated,
+ this.timeUpdated,
+ this.freeformTags,
+ this.definedTags,
+ this.systemTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(DiagnosisStoreSummary model) {
+ if (model.wasPropertyExplicitlySet("id")) {
+ this.id(model.getId());
+ }
+ if (model.wasPropertyExplicitlySet("displayName")) {
+ this.displayName(model.getDisplayName());
+ }
+ if (model.wasPropertyExplicitlySet("compartmentId")) {
+ this.compartmentId(model.getCompartmentId());
+ }
+ if (model.wasPropertyExplicitlySet("lifecycleState")) {
+ this.lifecycleState(model.getLifecycleState());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreNamespace")) {
+ this.objectStoreNamespace(model.getObjectStoreNamespace());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreBucket")) {
+ this.objectStoreBucket(model.getObjectStoreBucket());
+ }
+ if (model.wasPropertyExplicitlySet("timeCreated")) {
+ this.timeCreated(model.getTimeCreated());
+ }
+ if (model.wasPropertyExplicitlySet("timeUpdated")) {
+ this.timeUpdated(model.getTimeUpdated());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ 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](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("id")
+ private final String id;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * DiagnosisStore.
+ *
+ * @return the value
+ */
+ public String getId() {
+ return id;
+ }
+
+ /** A user-friendly name. Does not have to be unique, and it's changeable. */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private final String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable.
+ *
+ * @return the value
+ */
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("compartmentId")
+ private final String compartmentId;
+
+ /**
+ * The [OCID](https://docs.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the
+ * compartment.
+ *
+ * @return the value
+ */
+ public String getCompartmentId() {
+ return compartmentId;
+ }
+
+ /** The current state of the Diagnosis. */
+ @com.fasterxml.jackson.annotation.JsonProperty("lifecycleState")
+ private final DiagnosisStore.LifecycleState lifecycleState;
+
+ /**
+ * The current state of the Diagnosis.
+ *
+ * @return the value
+ */
+ public DiagnosisStore.LifecycleState getLifecycleState() {
+ return lifecycleState;
+ }
+
+ /** The namespace of the object store. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private final String objectStoreNamespace;
+
+ /**
+ * The namespace of the object store.
+ *
+ * @return the value
+ */
+ public String getObjectStoreNamespace() {
+ return objectStoreNamespace;
+ }
+
+ /** The name of the object store bucket. */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private final String objectStoreBucket;
+
+ /**
+ * The name of the object store bucket.
+ *
+ * @return the value
+ */
+ public String getObjectStoreBucket() {
+ return objectStoreBucket;
+ }
+
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ * Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeCreated")
+ private final java.util.Date timeCreated;
+
+ /**
+ * The date and time the Diagnosis Store was created, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeCreated() {
+ return timeCreated;
+ }
+
+ /**
+ * The date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeUpdated")
+ private final java.util.Date timeUpdated;
+
+ /**
+ * The date and time the Diagnosis Store was updated, in the format defined by [RFC
+ * 3339](https://tools.ietf .org/html/rfc3339).
+ *
+ *
Example: {@code 2016-08-25T21:10:29.600Z}
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeUpdated() {
+ return timeUpdated;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * System tags for this resource. Each key is predefined and scoped to a namespace.
+ *
+ * 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.
+ *
+ * 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("DiagnosisStoreSummary(");
+ sb.append("super=").append(super.toString());
+ sb.append("id=").append(String.valueOf(this.id));
+ sb.append(", displayName=").append(String.valueOf(this.displayName));
+ sb.append(", compartmentId=").append(String.valueOf(this.compartmentId));
+ sb.append(", lifecycleState=").append(String.valueOf(this.lifecycleState));
+ sb.append(", objectStoreNamespace=").append(String.valueOf(this.objectStoreNamespace));
+ sb.append(", objectStoreBucket=").append(String.valueOf(this.objectStoreBucket));
+ sb.append(", timeCreated=").append(String.valueOf(this.timeCreated));
+ sb.append(", timeUpdated=").append(String.valueOf(this.timeUpdated));
+ sb.append(", freeformTags=").append(String.valueOf(this.freeformTags));
+ sb.append(", definedTags=").append(String.valueOf(this.definedTags));
+ 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 DiagnosisStoreSummary)) {
+ return false;
+ }
+
+ DiagnosisStoreSummary other = (DiagnosisStoreSummary) o;
+ return java.util.Objects.equals(this.id, other.id)
+ && java.util.Objects.equals(this.displayName, other.displayName)
+ && java.util.Objects.equals(this.compartmentId, other.compartmentId)
+ && java.util.Objects.equals(this.lifecycleState, other.lifecycleState)
+ && java.util.Objects.equals(this.objectStoreNamespace, other.objectStoreNamespace)
+ && java.util.Objects.equals(this.objectStoreBucket, other.objectStoreBucket)
+ && java.util.Objects.equals(this.timeCreated, other.timeCreated)
+ && java.util.Objects.equals(this.timeUpdated, other.timeUpdated)
+ && java.util.Objects.equals(this.freeformTags, other.freeformTags)
+ && java.util.Objects.equals(this.definedTags, other.definedTags)
+ && 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.displayName == null ? 43 : this.displayName.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.objectStoreNamespace == null
+ ? 43
+ : this.objectStoreNamespace.hashCode());
+ result =
+ (result * PRIME)
+ + (this.objectStoreBucket == null ? 43 : this.objectStoreBucket.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.freeformTags == null ? 43 : this.freeformTags.hashCode());
+ result = (result * PRIME) + (this.definedTags == null ? 43 : this.definedTags.hashCode());
+ result = (result * PRIME) + (this.systemTags == null ? 43 : this.systemTags.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisSummary.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisSummary.java
new file mode 100644
index 00000000000..e5ddfe2f3fe
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisSummary.java
@@ -0,0 +1,499 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * Diagnosis summary of a host and tenancy.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = DiagnosisSummary.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class DiagnosisSummary
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "hostId",
+ "instanceId",
+ "healthCheckKey",
+ "timeTestRan",
+ "timeGenerated",
+ "failedTests",
+ "health",
+ "testType"
+ })
+ public DiagnosisSummary(
+ String hostId,
+ String instanceId,
+ String healthCheckKey,
+ java.util.Date timeTestRan,
+ java.util.Date timeGenerated,
+ java.util.List failedTests,
+ Health health,
+ TestType testType) {
+ super();
+ this.hostId = hostId;
+ this.instanceId = instanceId;
+ this.healthCheckKey = healthCheckKey;
+ this.timeTestRan = timeTestRan;
+ this.timeGenerated = timeGenerated;
+ this.failedTests = failedTests;
+ this.health = health;
+ this.testType = testType;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** id of the host */
+ @com.fasterxml.jackson.annotation.JsonProperty("hostId")
+ private String hostId;
+
+ /**
+ * id of the host
+ *
+ * @param hostId the value to set
+ * @return this builder
+ */
+ public Builder hostId(String hostId) {
+ this.hostId = hostId;
+ this.__explicitlySet__.add("hostId");
+ return this;
+ }
+ /** OCID of the instance associated with this summary. */
+ @com.fasterxml.jackson.annotation.JsonProperty("instanceId")
+ private String instanceId;
+
+ /**
+ * OCID of the instance associated with this summary.
+ *
+ * @param instanceId the value to set
+ * @return this builder
+ */
+ public Builder instanceId(String instanceId) {
+ this.instanceId = instanceId;
+ this.__explicitlySet__.add("instanceId");
+ return this;
+ }
+ /** Identifier of the health check that produced this diagnosis summary. */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKey")
+ private String healthCheckKey;
+
+ /**
+ * Identifier of the health check that produced this diagnosis summary.
+ *
+ * @param healthCheckKey the value to set
+ * @return this builder
+ */
+ public Builder healthCheckKey(String healthCheckKey) {
+ this.healthCheckKey = healthCheckKey;
+ this.__explicitlySet__.add("healthCheckKey");
+ return this;
+ }
+ /** time the test was run */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeTestRan")
+ private java.util.Date timeTestRan;
+
+ /**
+ * time the test was run
+ *
+ * @param timeTestRan the value to set
+ * @return this builder
+ */
+ public Builder timeTestRan(java.util.Date timeTestRan) {
+ this.timeTestRan = timeTestRan;
+ this.__explicitlySet__.add("timeTestRan");
+ return this;
+ }
+ /** time the recommendation report was generated */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeGenerated")
+ private java.util.Date timeGenerated;
+
+ /**
+ * time the recommendation report was generated
+ *
+ * @param timeGenerated the value to set
+ * @return this builder
+ */
+ public Builder timeGenerated(java.util.Date timeGenerated) {
+ this.timeGenerated = timeGenerated;
+ this.__explicitlySet__.add("timeGenerated");
+ return this;
+ }
+ /** Each summary contains no more than 50 failed tests */
+ @com.fasterxml.jackson.annotation.JsonProperty("failedTests")
+ private java.util.List failedTests;
+
+ /**
+ * Each summary contains no more than 50 failed tests
+ *
+ * @param failedTests the value to set
+ * @return this builder
+ */
+ public Builder failedTests(java.util.List failedTests) {
+ this.failedTests = failedTests;
+ this.__explicitlySet__.add("failedTests");
+ return this;
+ }
+ /** if the host is healthy */
+ @com.fasterxml.jackson.annotation.JsonProperty("health")
+ private Health health;
+
+ /**
+ * if the host is healthy
+ *
+ * @param health the value to set
+ * @return this builder
+ */
+ public Builder health(Health health) {
+ this.health = health;
+ this.__explicitlySet__.add("health");
+ return this;
+ }
+ /** Type of the diagnosis test recorded in this summary (e.g., PASSIVE or ACTIVE). */
+ @com.fasterxml.jackson.annotation.JsonProperty("testType")
+ private TestType testType;
+
+ /**
+ * Type of the diagnosis test recorded in this summary (e.g., PASSIVE or ACTIVE).
+ *
+ * @param testType the value to set
+ * @return this builder
+ */
+ public Builder testType(TestType testType) {
+ this.testType = testType;
+ this.__explicitlySet__.add("testType");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public DiagnosisSummary build() {
+ DiagnosisSummary model =
+ new DiagnosisSummary(
+ this.hostId,
+ this.instanceId,
+ this.healthCheckKey,
+ this.timeTestRan,
+ this.timeGenerated,
+ this.failedTests,
+ this.health,
+ this.testType);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(DiagnosisSummary model) {
+ if (model.wasPropertyExplicitlySet("hostId")) {
+ this.hostId(model.getHostId());
+ }
+ if (model.wasPropertyExplicitlySet("instanceId")) {
+ this.instanceId(model.getInstanceId());
+ }
+ if (model.wasPropertyExplicitlySet("healthCheckKey")) {
+ this.healthCheckKey(model.getHealthCheckKey());
+ }
+ if (model.wasPropertyExplicitlySet("timeTestRan")) {
+ this.timeTestRan(model.getTimeTestRan());
+ }
+ if (model.wasPropertyExplicitlySet("timeGenerated")) {
+ this.timeGenerated(model.getTimeGenerated());
+ }
+ if (model.wasPropertyExplicitlySet("failedTests")) {
+ this.failedTests(model.getFailedTests());
+ }
+ if (model.wasPropertyExplicitlySet("health")) {
+ this.health(model.getHealth());
+ }
+ if (model.wasPropertyExplicitlySet("testType")) {
+ this.testType(model.getTestType());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** id of the host */
+ @com.fasterxml.jackson.annotation.JsonProperty("hostId")
+ private final String hostId;
+
+ /**
+ * id of the host
+ *
+ * @return the value
+ */
+ public String getHostId() {
+ return hostId;
+ }
+
+ /** OCID of the instance associated with this summary. */
+ @com.fasterxml.jackson.annotation.JsonProperty("instanceId")
+ private final String instanceId;
+
+ /**
+ * OCID of the instance associated with this summary.
+ *
+ * @return the value
+ */
+ public String getInstanceId() {
+ return instanceId;
+ }
+
+ /** Identifier of the health check that produced this diagnosis summary. */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKey")
+ private final String healthCheckKey;
+
+ /**
+ * Identifier of the health check that produced this diagnosis summary.
+ *
+ * @return the value
+ */
+ public String getHealthCheckKey() {
+ return healthCheckKey;
+ }
+
+ /** time the test was run */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeTestRan")
+ private final java.util.Date timeTestRan;
+
+ /**
+ * time the test was run
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeTestRan() {
+ return timeTestRan;
+ }
+
+ /** time the recommendation report was generated */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeGenerated")
+ private final java.util.Date timeGenerated;
+
+ /**
+ * time the recommendation report was generated
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeGenerated() {
+ return timeGenerated;
+ }
+
+ /** Each summary contains no more than 50 failed tests */
+ @com.fasterxml.jackson.annotation.JsonProperty("failedTests")
+ private final java.util.List failedTests;
+
+ /**
+ * Each summary contains no more than 50 failed tests
+ *
+ * @return the value
+ */
+ public java.util.List getFailedTests() {
+ return failedTests;
+ }
+
+ /** if the host is healthy */
+ public enum Health implements com.oracle.bmc.http.internal.BmcEnum {
+ Healthy("HEALTHY"),
+ Unhealthy("UNHEALTHY"),
+
+ /**
+ * 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(Health.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (Health v : Health.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ Health(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static Health create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'Health', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+ };
+ /** if the host is healthy */
+ @com.fasterxml.jackson.annotation.JsonProperty("health")
+ private final Health health;
+
+ /**
+ * if the host is healthy
+ *
+ * @return the value
+ */
+ public Health getHealth() {
+ return health;
+ }
+
+ /** Type of the diagnosis test recorded in this summary (e.g., PASSIVE or ACTIVE). */
+ public enum TestType implements com.oracle.bmc.http.internal.BmcEnum {
+ Passive("PASSIVE"),
+ Active("ACTIVE"),
+
+ /**
+ * 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(TestType.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (TestType v : TestType.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ TestType(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static TestType create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'TestType', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+ };
+ /** Type of the diagnosis test recorded in this summary (e.g., PASSIVE or ACTIVE). */
+ @com.fasterxml.jackson.annotation.JsonProperty("testType")
+ private final TestType testType;
+
+ /**
+ * Type of the diagnosis test recorded in this summary (e.g., PASSIVE or ACTIVE).
+ *
+ * @return the value
+ */
+ public TestType getTestType() {
+ return testType;
+ }
+
+ @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("DiagnosisSummary(");
+ sb.append("super=").append(super.toString());
+ sb.append("hostId=").append(String.valueOf(this.hostId));
+ sb.append(", instanceId=").append(String.valueOf(this.instanceId));
+ sb.append(", healthCheckKey=").append(String.valueOf(this.healthCheckKey));
+ sb.append(", timeTestRan=").append(String.valueOf(this.timeTestRan));
+ sb.append(", timeGenerated=").append(String.valueOf(this.timeGenerated));
+ sb.append(", failedTests=").append(String.valueOf(this.failedTests));
+ sb.append(", health=").append(String.valueOf(this.health));
+ sb.append(", testType=").append(String.valueOf(this.testType));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof DiagnosisSummary)) {
+ return false;
+ }
+
+ DiagnosisSummary other = (DiagnosisSummary) o;
+ return java.util.Objects.equals(this.hostId, other.hostId)
+ && java.util.Objects.equals(this.instanceId, other.instanceId)
+ && java.util.Objects.equals(this.healthCheckKey, other.healthCheckKey)
+ && java.util.Objects.equals(this.timeTestRan, other.timeTestRan)
+ && java.util.Objects.equals(this.timeGenerated, other.timeGenerated)
+ && java.util.Objects.equals(this.failedTests, other.failedTests)
+ && java.util.Objects.equals(this.health, other.health)
+ && java.util.Objects.equals(this.testType, other.testType)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.hostId == null ? 43 : this.hostId.hashCode());
+ result = (result * PRIME) + (this.instanceId == null ? 43 : this.instanceId.hashCode());
+ result =
+ (result * PRIME)
+ + (this.healthCheckKey == null ? 43 : this.healthCheckKey.hashCode());
+ result = (result * PRIME) + (this.timeTestRan == null ? 43 : this.timeTestRan.hashCode());
+ result =
+ (result * PRIME)
+ + (this.timeGenerated == null ? 43 : this.timeGenerated.hashCode());
+ result = (result * PRIME) + (this.failedTests == null ? 43 : this.failedTests.hashCode());
+ result = (result * PRIME) + (this.health == null ? 43 : this.health.hashCode());
+ result = (result * PRIME) + (this.testType == null ? 43 : this.testType.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisSummaryCollection.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisSummaryCollection.java
new file mode 100644
index 00000000000..bc4401cbf8b
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/DiagnosisSummaryCollection.java
@@ -0,0 +1,133 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * a list of Diagnosis Summaries.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = DiagnosisSummaryCollection.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class DiagnosisSummaryCollection
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"items"})
+ public DiagnosisSummaryCollection(java.util.List items) {
+ super();
+ this.items = items;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** List of diagnosis summaries. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private java.util.List items;
+
+ /**
+ * List of diagnosis summaries.
+ *
+ * @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 DiagnosisSummaryCollection build() {
+ DiagnosisSummaryCollection model = new DiagnosisSummaryCollection(this.items);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(DiagnosisSummaryCollection 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);
+ }
+
+ /** List of diagnosis summaries. */
+ @com.fasterxml.jackson.annotation.JsonProperty("items")
+ private final java.util.List items;
+
+ /**
+ * List of diagnosis summaries.
+ *
+ * @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("DiagnosisSummaryCollection(");
+ 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 DiagnosisSummaryCollection)) {
+ return false;
+ }
+
+ DiagnosisSummaryCollection other = (DiagnosisSummaryCollection) 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-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/FailedTest.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/FailedTest.java
new file mode 100644
index 00000000000..3c87f80e51f
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/FailedTest.java
@@ -0,0 +1,169 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * summary of a failed test
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = FailedTest.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class FailedTest extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"testName", "recommendedAction"})
+ public FailedTest(String testName, String recommendedAction) {
+ super();
+ this.testName = testName;
+ this.recommendedAction = recommendedAction;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** name of the test */
+ @com.fasterxml.jackson.annotation.JsonProperty("testName")
+ private String testName;
+
+ /**
+ * name of the test
+ *
+ * @param testName the value to set
+ * @return this builder
+ */
+ public Builder testName(String testName) {
+ this.testName = testName;
+ this.__explicitlySet__.add("testName");
+ return this;
+ }
+ /** recommended action */
+ @com.fasterxml.jackson.annotation.JsonProperty("recommendedAction")
+ private String recommendedAction;
+
+ /**
+ * recommended action
+ *
+ * @param recommendedAction the value to set
+ * @return this builder
+ */
+ public Builder recommendedAction(String recommendedAction) {
+ this.recommendedAction = recommendedAction;
+ this.__explicitlySet__.add("recommendedAction");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public FailedTest build() {
+ FailedTest model = new FailedTest(this.testName, this.recommendedAction);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(FailedTest model) {
+ if (model.wasPropertyExplicitlySet("testName")) {
+ this.testName(model.getTestName());
+ }
+ if (model.wasPropertyExplicitlySet("recommendedAction")) {
+ this.recommendedAction(model.getRecommendedAction());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** name of the test */
+ @com.fasterxml.jackson.annotation.JsonProperty("testName")
+ private final String testName;
+
+ /**
+ * name of the test
+ *
+ * @return the value
+ */
+ public String getTestName() {
+ return testName;
+ }
+
+ /** recommended action */
+ @com.fasterxml.jackson.annotation.JsonProperty("recommendedAction")
+ private final String recommendedAction;
+
+ /**
+ * recommended action
+ *
+ * @return the value
+ */
+ public String getRecommendedAction() {
+ return recommendedAction;
+ }
+
+ @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("FailedTest(");
+ sb.append("super=").append(super.toString());
+ sb.append("testName=").append(String.valueOf(this.testName));
+ sb.append(", recommendedAction=").append(String.valueOf(this.recommendedAction));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof FailedTest)) {
+ return false;
+ }
+
+ FailedTest other = (FailedTest) o;
+ return java.util.Objects.equals(this.testName, other.testName)
+ && java.util.Objects.equals(this.recommendedAction, other.recommendedAction)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.testName == null ? 43 : this.testName.hashCode());
+ result =
+ (result * PRIME)
+ + (this.recommendedAction == null ? 43 : this.recommendedAction.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/Metadata.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/Metadata.java
new file mode 100644
index 00000000000..1d740fbe4c5
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/Metadata.java
@@ -0,0 +1,337 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * Metadata associated with the diagnosis recommendation report.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = Metadata.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class Metadata extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "hostId",
+ "healthCheckKey",
+ "instanceId",
+ "shape",
+ "testType"
+ })
+ public Metadata(
+ String hostId,
+ String healthCheckKey,
+ String instanceId,
+ String shape,
+ TestType testType) {
+ super();
+ this.hostId = hostId;
+ this.healthCheckKey = healthCheckKey;
+ this.instanceId = instanceId;
+ this.shape = shape;
+ this.testType = testType;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** OCID of the host that ran the test. */
+ @com.fasterxml.jackson.annotation.JsonProperty("hostId")
+ private String hostId;
+
+ /**
+ * OCID of the host that ran the test.
+ *
+ * @param hostId the value to set
+ * @return this builder
+ */
+ public Builder hostId(String hostId) {
+ this.hostId = hostId;
+ this.__explicitlySet__.add("hostId");
+ return this;
+ }
+ /** Identifier of the health check run. */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKey")
+ private String healthCheckKey;
+
+ /**
+ * Identifier of the health check run.
+ *
+ * @param healthCheckKey the value to set
+ * @return this builder
+ */
+ public Builder healthCheckKey(String healthCheckKey) {
+ this.healthCheckKey = healthCheckKey;
+ this.__explicitlySet__.add("healthCheckKey");
+ return this;
+ }
+ /** OCID of the instance related to the test. */
+ @com.fasterxml.jackson.annotation.JsonProperty("instanceId")
+ private String instanceId;
+
+ /**
+ * OCID of the instance related to the test.
+ *
+ * @param instanceId the value to set
+ * @return this builder
+ */
+ public Builder instanceId(String instanceId) {
+ this.instanceId = instanceId;
+ this.__explicitlySet__.add("instanceId");
+ return this;
+ }
+ /** Shape of the instance under test. */
+ @com.fasterxml.jackson.annotation.JsonProperty("shape")
+ private String shape;
+
+ /**
+ * Shape of the instance under test.
+ *
+ * @param shape the value to set
+ * @return this builder
+ */
+ public Builder shape(String shape) {
+ this.shape = shape;
+ this.__explicitlySet__.add("shape");
+ return this;
+ }
+ /** Test type provided by the diagnosis payload. */
+ @com.fasterxml.jackson.annotation.JsonProperty("testType")
+ private TestType testType;
+
+ /**
+ * Test type provided by the diagnosis payload.
+ *
+ * @param testType the value to set
+ * @return this builder
+ */
+ public Builder testType(TestType testType) {
+ this.testType = testType;
+ this.__explicitlySet__.add("testType");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public Metadata build() {
+ Metadata model =
+ new Metadata(
+ this.hostId,
+ this.healthCheckKey,
+ this.instanceId,
+ this.shape,
+ this.testType);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(Metadata model) {
+ if (model.wasPropertyExplicitlySet("hostId")) {
+ this.hostId(model.getHostId());
+ }
+ if (model.wasPropertyExplicitlySet("healthCheckKey")) {
+ this.healthCheckKey(model.getHealthCheckKey());
+ }
+ if (model.wasPropertyExplicitlySet("instanceId")) {
+ this.instanceId(model.getInstanceId());
+ }
+ if (model.wasPropertyExplicitlySet("shape")) {
+ this.shape(model.getShape());
+ }
+ if (model.wasPropertyExplicitlySet("testType")) {
+ this.testType(model.getTestType());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** OCID of the host that ran the test. */
+ @com.fasterxml.jackson.annotation.JsonProperty("hostId")
+ private final String hostId;
+
+ /**
+ * OCID of the host that ran the test.
+ *
+ * @return the value
+ */
+ public String getHostId() {
+ return hostId;
+ }
+
+ /** Identifier of the health check run. */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKey")
+ private final String healthCheckKey;
+
+ /**
+ * Identifier of the health check run.
+ *
+ * @return the value
+ */
+ public String getHealthCheckKey() {
+ return healthCheckKey;
+ }
+
+ /** OCID of the instance related to the test. */
+ @com.fasterxml.jackson.annotation.JsonProperty("instanceId")
+ private final String instanceId;
+
+ /**
+ * OCID of the instance related to the test.
+ *
+ * @return the value
+ */
+ public String getInstanceId() {
+ return instanceId;
+ }
+
+ /** Shape of the instance under test. */
+ @com.fasterxml.jackson.annotation.JsonProperty("shape")
+ private final String shape;
+
+ /**
+ * Shape of the instance under test.
+ *
+ * @return the value
+ */
+ public String getShape() {
+ return shape;
+ }
+
+ /** Test type provided by the diagnosis payload. */
+ public enum TestType implements com.oracle.bmc.http.internal.BmcEnum {
+ Passive("PASSIVE"),
+ Active("ACTIVE"),
+
+ /**
+ * 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(TestType.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (TestType v : TestType.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ TestType(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static TestType create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'TestType', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+ };
+ /** Test type provided by the diagnosis payload. */
+ @com.fasterxml.jackson.annotation.JsonProperty("testType")
+ private final TestType testType;
+
+ /**
+ * Test type provided by the diagnosis payload.
+ *
+ * @return the value
+ */
+ public TestType getTestType() {
+ return testType;
+ }
+
+ @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("Metadata(");
+ sb.append("super=").append(super.toString());
+ sb.append("hostId=").append(String.valueOf(this.hostId));
+ sb.append(", healthCheckKey=").append(String.valueOf(this.healthCheckKey));
+ sb.append(", instanceId=").append(String.valueOf(this.instanceId));
+ sb.append(", shape=").append(String.valueOf(this.shape));
+ sb.append(", testType=").append(String.valueOf(this.testType));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Metadata)) {
+ return false;
+ }
+
+ Metadata other = (Metadata) o;
+ return java.util.Objects.equals(this.hostId, other.hostId)
+ && java.util.Objects.equals(this.healthCheckKey, other.healthCheckKey)
+ && java.util.Objects.equals(this.instanceId, other.instanceId)
+ && java.util.Objects.equals(this.shape, other.shape)
+ && java.util.Objects.equals(this.testType, other.testType)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.hostId == null ? 43 : this.hostId.hashCode());
+ result =
+ (result * PRIME)
+ + (this.healthCheckKey == null ? 43 : this.healthCheckKey.hashCode());
+ result = (result * PRIME) + (this.instanceId == null ? 43 : this.instanceId.hashCode());
+ result = (result * PRIME) + (this.shape == null ? 43 : this.shape.hashCode());
+ result = (result * PRIME) + (this.testType == null ? 43 : this.testType.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/OperationStatus.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/OperationStatus.java
new file mode 100644
index 00000000000..b33371f5cdd
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/OperationStatus.java
@@ -0,0 +1,59 @@
+/**
+ * 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.clusterhealth.model;
+
+/** The status of the work request. */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20260331")
+public enum OperationStatus implements com.oracle.bmc.http.internal.BmcEnum {
+ Accepted("ACCEPTED"),
+ InProgress("IN_PROGRESS"),
+ Waiting("WAITING"),
+ NeedsAttention("NEEDS_ATTENTION"),
+ Failed("FAILED"),
+ Succeeded("SUCCEEDED"),
+ Canceling("CANCELING"),
+ Canceled("CANCELED"),
+
+ /**
+ * 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(OperationStatus.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (OperationStatus v : OperationStatus.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ OperationStatus(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static OperationStatus create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'OperationStatus', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/OperationType.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/OperationType.java
new file mode 100644
index 00000000000..cb8e2109c46
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/OperationType.java
@@ -0,0 +1,56 @@
+/**
+ * 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.clusterhealth.model;
+
+/** The asynchronous operation tracked by the work request. */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20260331")
+public enum OperationType implements com.oracle.bmc.http.internal.BmcEnum {
+ CreateDiagnosisStore("CREATE_DIAGNOSIS_STORE"),
+ UpdateDiagnosisStore("UPDATE_DIAGNOSIS_STORE"),
+ DeleteDiagnosisStore("DELETE_DIAGNOSIS_STORE"),
+ MoveDiagnosisStore("MOVE_DIAGNOSIS_STORE"),
+ RequestDiagnosis("REQUEST_DIAGNOSIS"),
+
+ /**
+ * 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(OperationType.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (OperationType v : OperationType.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ OperationType(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static OperationType create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'OperationType', returning UnknownEnumValue",
+ key);
+ return UnknownEnumValue;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/QueryDiagnosisByHealthCheckKeyDetails.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/QueryDiagnosisByHealthCheckKeyDetails.java
new file mode 100644
index 00000000000..94e364d5ac9
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/QueryDiagnosisByHealthCheckKeyDetails.java
@@ -0,0 +1,137 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * the query parameters for recommendations
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = QueryDiagnosisByHealthCheckKeyDetails.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class QueryDiagnosisByHealthCheckKeyDetails
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"healthCheckKey"})
+ public QueryDiagnosisByHealthCheckKeyDetails(String healthCheckKey) {
+ super();
+ this.healthCheckKey = healthCheckKey;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** Identifier of the health check */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKey")
+ private String healthCheckKey;
+
+ /**
+ * Identifier of the health check
+ *
+ * @param healthCheckKey the value to set
+ * @return this builder
+ */
+ public Builder healthCheckKey(String healthCheckKey) {
+ this.healthCheckKey = healthCheckKey;
+ this.__explicitlySet__.add("healthCheckKey");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public QueryDiagnosisByHealthCheckKeyDetails build() {
+ QueryDiagnosisByHealthCheckKeyDetails model =
+ new QueryDiagnosisByHealthCheckKeyDetails(this.healthCheckKey);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(QueryDiagnosisByHealthCheckKeyDetails model) {
+ if (model.wasPropertyExplicitlySet("healthCheckKey")) {
+ this.healthCheckKey(model.getHealthCheckKey());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** Identifier of the health check */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKey")
+ private final String healthCheckKey;
+
+ /**
+ * Identifier of the health check
+ *
+ * @return the value
+ */
+ public String getHealthCheckKey() {
+ return healthCheckKey;
+ }
+
+ @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("QueryDiagnosisByHealthCheckKeyDetails(");
+ sb.append("super=").append(super.toString());
+ sb.append("healthCheckKey=").append(String.valueOf(this.healthCheckKey));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof QueryDiagnosisByHealthCheckKeyDetails)) {
+ return false;
+ }
+
+ QueryDiagnosisByHealthCheckKeyDetails other = (QueryDiagnosisByHealthCheckKeyDetails) o;
+ return java.util.Objects.equals(this.healthCheckKey, other.healthCheckKey)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result =
+ (result * PRIME)
+ + (this.healthCheckKey == null ? 43 : this.healthCheckKey.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/QueryDiagnosisSummaryDetails.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/QueryDiagnosisSummaryDetails.java
new file mode 100644
index 00000000000..20dcbcf791f
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/QueryDiagnosisSummaryDetails.java
@@ -0,0 +1,297 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * Query filters for retrieving diagnosis summaries.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = QueryDiagnosisSummaryDetails.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class QueryDiagnosisSummaryDetails
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "instanceIds",
+ "testType",
+ "timeTestRunIntervalStart",
+ "timeTestRunIntervalEnd"
+ })
+ public QueryDiagnosisSummaryDetails(
+ java.util.List instanceIds,
+ TestType testType,
+ java.util.Date timeTestRunIntervalStart,
+ java.util.Date timeTestRunIntervalEnd) {
+ super();
+ this.instanceIds = instanceIds;
+ this.testType = testType;
+ this.timeTestRunIntervalStart = timeTestRunIntervalStart;
+ this.timeTestRunIntervalEnd = timeTestRunIntervalEnd;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** A list of instance OCIDs to match. */
+ @com.fasterxml.jackson.annotation.JsonProperty("instanceIds")
+ private java.util.List instanceIds;
+
+ /**
+ * A list of instance OCIDs to match.
+ *
+ * @param instanceIds the value to set
+ * @return this builder
+ */
+ public Builder instanceIds(java.util.List instanceIds) {
+ this.instanceIds = instanceIds;
+ this.__explicitlySet__.add("instanceIds");
+ return this;
+ }
+ /** The test type, PASSIVE or ACTIVE */
+ @com.fasterxml.jackson.annotation.JsonProperty("testType")
+ private TestType testType;
+
+ /**
+ * The test type, PASSIVE or ACTIVE
+ *
+ * @param testType the value to set
+ * @return this builder
+ */
+ public Builder testType(TestType testType) {
+ this.testType = testType;
+ this.__explicitlySet__.add("testType");
+ return this;
+ }
+ /** Start of the time range for tests run, in RFC 3339 format. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeTestRunIntervalStart")
+ private java.util.Date timeTestRunIntervalStart;
+
+ /**
+ * Start of the time range for tests run, in RFC 3339 format.
+ *
+ * @param timeTestRunIntervalStart the value to set
+ * @return this builder
+ */
+ public Builder timeTestRunIntervalStart(java.util.Date timeTestRunIntervalStart) {
+ this.timeTestRunIntervalStart = timeTestRunIntervalStart;
+ this.__explicitlySet__.add("timeTestRunIntervalStart");
+ return this;
+ }
+ /** End of the time range for tests run, in RFC 3339 format. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeTestRunIntervalEnd")
+ private java.util.Date timeTestRunIntervalEnd;
+
+ /**
+ * End of the time range for tests run, in RFC 3339 format.
+ *
+ * @param timeTestRunIntervalEnd the value to set
+ * @return this builder
+ */
+ public Builder timeTestRunIntervalEnd(java.util.Date timeTestRunIntervalEnd) {
+ this.timeTestRunIntervalEnd = timeTestRunIntervalEnd;
+ this.__explicitlySet__.add("timeTestRunIntervalEnd");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public QueryDiagnosisSummaryDetails build() {
+ QueryDiagnosisSummaryDetails model =
+ new QueryDiagnosisSummaryDetails(
+ this.instanceIds,
+ this.testType,
+ this.timeTestRunIntervalStart,
+ this.timeTestRunIntervalEnd);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(QueryDiagnosisSummaryDetails model) {
+ if (model.wasPropertyExplicitlySet("instanceIds")) {
+ this.instanceIds(model.getInstanceIds());
+ }
+ if (model.wasPropertyExplicitlySet("testType")) {
+ this.testType(model.getTestType());
+ }
+ if (model.wasPropertyExplicitlySet("timeTestRunIntervalStart")) {
+ this.timeTestRunIntervalStart(model.getTimeTestRunIntervalStart());
+ }
+ if (model.wasPropertyExplicitlySet("timeTestRunIntervalEnd")) {
+ this.timeTestRunIntervalEnd(model.getTimeTestRunIntervalEnd());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** A list of instance OCIDs to match. */
+ @com.fasterxml.jackson.annotation.JsonProperty("instanceIds")
+ private final java.util.List instanceIds;
+
+ /**
+ * A list of instance OCIDs to match.
+ *
+ * @return the value
+ */
+ public java.util.List getInstanceIds() {
+ return instanceIds;
+ }
+
+ /** The test type, PASSIVE or ACTIVE */
+ public enum TestType implements com.oracle.bmc.http.internal.BmcEnum {
+ Passive("PASSIVE"),
+ Active("ACTIVE"),
+ ;
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (TestType v : TestType.values()) {
+ map.put(v.getValue(), v);
+ }
+ }
+
+ TestType(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static TestType create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ throw new IllegalArgumentException("Invalid TestType: " + key);
+ }
+ };
+ /** The test type, PASSIVE or ACTIVE */
+ @com.fasterxml.jackson.annotation.JsonProperty("testType")
+ private final TestType testType;
+
+ /**
+ * The test type, PASSIVE or ACTIVE
+ *
+ * @return the value
+ */
+ public TestType getTestType() {
+ return testType;
+ }
+
+ /** Start of the time range for tests run, in RFC 3339 format. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeTestRunIntervalStart")
+ private final java.util.Date timeTestRunIntervalStart;
+
+ /**
+ * Start of the time range for tests run, in RFC 3339 format.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeTestRunIntervalStart() {
+ return timeTestRunIntervalStart;
+ }
+
+ /** End of the time range for tests run, in RFC 3339 format. */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeTestRunIntervalEnd")
+ private final java.util.Date timeTestRunIntervalEnd;
+
+ /**
+ * End of the time range for tests run, in RFC 3339 format.
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeTestRunIntervalEnd() {
+ return timeTestRunIntervalEnd;
+ }
+
+ @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("QueryDiagnosisSummaryDetails(");
+ sb.append("super=").append(super.toString());
+ sb.append("instanceIds=").append(String.valueOf(this.instanceIds));
+ sb.append(", testType=").append(String.valueOf(this.testType));
+ sb.append(", timeTestRunIntervalStart=")
+ .append(String.valueOf(this.timeTestRunIntervalStart));
+ sb.append(", timeTestRunIntervalEnd=").append(String.valueOf(this.timeTestRunIntervalEnd));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof QueryDiagnosisSummaryDetails)) {
+ return false;
+ }
+
+ QueryDiagnosisSummaryDetails other = (QueryDiagnosisSummaryDetails) o;
+ return java.util.Objects.equals(this.instanceIds, other.instanceIds)
+ && java.util.Objects.equals(this.testType, other.testType)
+ && java.util.Objects.equals(
+ this.timeTestRunIntervalStart, other.timeTestRunIntervalStart)
+ && java.util.Objects.equals(
+ this.timeTestRunIntervalEnd, other.timeTestRunIntervalEnd)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.instanceIds == null ? 43 : this.instanceIds.hashCode());
+ result = (result * PRIME) + (this.testType == null ? 43 : this.testType.hashCode());
+ result =
+ (result * PRIME)
+ + (this.timeTestRunIntervalStart == null
+ ? 43
+ : this.timeTestRunIntervalStart.hashCode());
+ result =
+ (result * PRIME)
+ + (this.timeTestRunIntervalEnd == null
+ ? 43
+ : this.timeTestRunIntervalEnd.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/Recommendation.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/Recommendation.java
new file mode 100644
index 00000000000..17b20726464
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/Recommendation.java
@@ -0,0 +1,373 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * recommendation
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(builder = Recommendation.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class Recommendation
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "type",
+ "testName",
+ "faultCode",
+ "issue",
+ "suggestion",
+ "action"
+ })
+ public Recommendation(
+ Type type,
+ String testName,
+ String faultCode,
+ String issue,
+ String suggestion,
+ String action) {
+ super();
+ this.type = type;
+ this.testName = testName;
+ this.faultCode = faultCode;
+ this.issue = issue;
+ this.suggestion = suggestion;
+ this.action = action;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** Severity of the recommendation. */
+ @com.fasterxml.jackson.annotation.JsonProperty("type")
+ private Type type;
+
+ /**
+ * Severity of the recommendation.
+ *
+ * @param type the value to set
+ * @return this builder
+ */
+ public Builder type(Type type) {
+ this.type = type;
+ this.__explicitlySet__.add("type");
+ return this;
+ }
+ /** name of the test */
+ @com.fasterxml.jackson.annotation.JsonProperty("testName")
+ private String testName;
+
+ /**
+ * name of the test
+ *
+ * @param testName the value to set
+ * @return this builder
+ */
+ public Builder testName(String testName) {
+ this.testName = testName;
+ this.__explicitlySet__.add("testName");
+ return this;
+ }
+ /** Optional fault code identifier. */
+ @com.fasterxml.jackson.annotation.JsonProperty("faultCode")
+ private String faultCode;
+
+ /**
+ * Optional fault code identifier.
+ *
+ * @param faultCode the value to set
+ * @return this builder
+ */
+ public Builder faultCode(String faultCode) {
+ this.faultCode = faultCode;
+ this.__explicitlySet__.add("faultCode");
+ return this;
+ }
+ /** description of the issue */
+ @com.fasterxml.jackson.annotation.JsonProperty("issue")
+ private String issue;
+
+ /**
+ * description of the issue
+ *
+ * @param issue the value to set
+ * @return this builder
+ */
+ public Builder issue(String issue) {
+ this.issue = issue;
+ this.__explicitlySet__.add("issue");
+ return this;
+ }
+ /** suggested actions */
+ @com.fasterxml.jackson.annotation.JsonProperty("suggestion")
+ private String suggestion;
+
+ /**
+ * suggested actions
+ *
+ * @param suggestion the value to set
+ * @return this builder
+ */
+ public Builder suggestion(String suggestion) {
+ this.suggestion = suggestion;
+ this.__explicitlySet__.add("suggestion");
+ return this;
+ }
+ /** Optional action to take (empty string when no action is required). */
+ @com.fasterxml.jackson.annotation.JsonProperty("action")
+ private String action;
+
+ /**
+ * Optional action to take (empty string when no action is required).
+ *
+ * @param action the value to set
+ * @return this builder
+ */
+ public Builder action(String action) {
+ this.action = action;
+ this.__explicitlySet__.add("action");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public Recommendation build() {
+ Recommendation model =
+ new Recommendation(
+ this.type,
+ this.testName,
+ this.faultCode,
+ this.issue,
+ this.suggestion,
+ this.action);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(Recommendation model) {
+ if (model.wasPropertyExplicitlySet("type")) {
+ this.type(model.getType());
+ }
+ if (model.wasPropertyExplicitlySet("testName")) {
+ this.testName(model.getTestName());
+ }
+ if (model.wasPropertyExplicitlySet("faultCode")) {
+ this.faultCode(model.getFaultCode());
+ }
+ if (model.wasPropertyExplicitlySet("issue")) {
+ this.issue(model.getIssue());
+ }
+ if (model.wasPropertyExplicitlySet("suggestion")) {
+ this.suggestion(model.getSuggestion());
+ }
+ if (model.wasPropertyExplicitlySet("action")) {
+ this.action(model.getAction());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** Severity of the recommendation. */
+ public enum Type implements com.oracle.bmc.http.internal.BmcEnum {
+ Critical("CRITICAL"),
+ Warning("WARNING"),
+ Info("INFO"),
+
+ /**
+ * 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(Type.class);
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (Type v : Type.values()) {
+ if (v != UnknownEnumValue) {
+ map.put(v.getValue(), v);
+ }
+ }
+ }
+
+ Type(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static Type create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ LOG.warn(
+ "Received unknown value '{}' for enum 'Type', returning UnknownEnumValue", key);
+ return UnknownEnumValue;
+ }
+ };
+ /** Severity of the recommendation. */
+ @com.fasterxml.jackson.annotation.JsonProperty("type")
+ private final Type type;
+
+ /**
+ * Severity of the recommendation.
+ *
+ * @return the value
+ */
+ public Type getType() {
+ return type;
+ }
+
+ /** name of the test */
+ @com.fasterxml.jackson.annotation.JsonProperty("testName")
+ private final String testName;
+
+ /**
+ * name of the test
+ *
+ * @return the value
+ */
+ public String getTestName() {
+ return testName;
+ }
+
+ /** Optional fault code identifier. */
+ @com.fasterxml.jackson.annotation.JsonProperty("faultCode")
+ private final String faultCode;
+
+ /**
+ * Optional fault code identifier.
+ *
+ * @return the value
+ */
+ public String getFaultCode() {
+ return faultCode;
+ }
+
+ /** description of the issue */
+ @com.fasterxml.jackson.annotation.JsonProperty("issue")
+ private final String issue;
+
+ /**
+ * description of the issue
+ *
+ * @return the value
+ */
+ public String getIssue() {
+ return issue;
+ }
+
+ /** suggested actions */
+ @com.fasterxml.jackson.annotation.JsonProperty("suggestion")
+ private final String suggestion;
+
+ /**
+ * suggested actions
+ *
+ * @return the value
+ */
+ public String getSuggestion() {
+ return suggestion;
+ }
+
+ /** Optional action to take (empty string when no action is required). */
+ @com.fasterxml.jackson.annotation.JsonProperty("action")
+ private final String action;
+
+ /**
+ * Optional action to take (empty string when no action is required).
+ *
+ * @return the value
+ */
+ public String getAction() {
+ return action;
+ }
+
+ @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("Recommendation(");
+ sb.append("super=").append(super.toString());
+ sb.append("type=").append(String.valueOf(this.type));
+ sb.append(", testName=").append(String.valueOf(this.testName));
+ sb.append(", faultCode=").append(String.valueOf(this.faultCode));
+ sb.append(", issue=").append(String.valueOf(this.issue));
+ sb.append(", suggestion=").append(String.valueOf(this.suggestion));
+ sb.append(", action=").append(String.valueOf(this.action));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof Recommendation)) {
+ return false;
+ }
+
+ Recommendation other = (Recommendation) o;
+ return java.util.Objects.equals(this.type, other.type)
+ && java.util.Objects.equals(this.testName, other.testName)
+ && java.util.Objects.equals(this.faultCode, other.faultCode)
+ && java.util.Objects.equals(this.issue, other.issue)
+ && java.util.Objects.equals(this.suggestion, other.suggestion)
+ && java.util.Objects.equals(this.action, other.action)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.type == null ? 43 : this.type.hashCode());
+ result = (result * PRIME) + (this.testName == null ? 43 : this.testName.hashCode());
+ result = (result * PRIME) + (this.faultCode == null ? 43 : this.faultCode.hashCode());
+ result = (result * PRIME) + (this.issue == null ? 43 : this.issue.hashCode());
+ result = (result * PRIME) + (this.suggestion == null ? 43 : this.suggestion.hashCode());
+ result = (result * PRIME) + (this.action == null ? 43 : this.action.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/RecommendationReport.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/RecommendationReport.java
new file mode 100644
index 00000000000..4b3183ad0df
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/RecommendationReport.java
@@ -0,0 +1,401 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * A recommendation report
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = RecommendationReport.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class RecommendationReport
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "summary",
+ "totalIssues",
+ "criticalIssues",
+ "warningIssues",
+ "infoIssues",
+ "recommendations",
+ "metadata",
+ "timeGenerated"
+ })
+ public RecommendationReport(
+ String summary,
+ Integer totalIssues,
+ Integer criticalIssues,
+ Integer warningIssues,
+ Integer infoIssues,
+ java.util.List recommendations,
+ Metadata metadata,
+ java.util.Date timeGenerated) {
+ super();
+ this.summary = summary;
+ this.totalIssues = totalIssues;
+ this.criticalIssues = criticalIssues;
+ this.warningIssues = warningIssues;
+ this.infoIssues = infoIssues;
+ this.recommendations = recommendations;
+ this.metadata = metadata;
+ this.timeGenerated = timeGenerated;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** summary */
+ @com.fasterxml.jackson.annotation.JsonProperty("summary")
+ private String summary;
+
+ /**
+ * summary
+ *
+ * @param summary the value to set
+ * @return this builder
+ */
+ public Builder summary(String summary) {
+ this.summary = summary;
+ this.__explicitlySet__.add("summary");
+ return this;
+ }
+ /** total issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("totalIssues")
+ private Integer totalIssues;
+
+ /**
+ * total issue count
+ *
+ * @param totalIssues the value to set
+ * @return this builder
+ */
+ public Builder totalIssues(Integer totalIssues) {
+ this.totalIssues = totalIssues;
+ this.__explicitlySet__.add("totalIssues");
+ return this;
+ }
+ /** critical issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("criticalIssues")
+ private Integer criticalIssues;
+
+ /**
+ * critical issue count
+ *
+ * @param criticalIssues the value to set
+ * @return this builder
+ */
+ public Builder criticalIssues(Integer criticalIssues) {
+ this.criticalIssues = criticalIssues;
+ this.__explicitlySet__.add("criticalIssues");
+ return this;
+ }
+ /** warning issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("warningIssues")
+ private Integer warningIssues;
+
+ /**
+ * warning issue count
+ *
+ * @param warningIssues the value to set
+ * @return this builder
+ */
+ public Builder warningIssues(Integer warningIssues) {
+ this.warningIssues = warningIssues;
+ this.__explicitlySet__.add("warningIssues");
+ return this;
+ }
+ /** info issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("infoIssues")
+ private Integer infoIssues;
+
+ /**
+ * info issue count
+ *
+ * @param infoIssues the value to set
+ * @return this builder
+ */
+ public Builder infoIssues(Integer infoIssues) {
+ this.infoIssues = infoIssues;
+ this.__explicitlySet__.add("infoIssues");
+ return this;
+ }
+ /** recommendations */
+ @com.fasterxml.jackson.annotation.JsonProperty("recommendations")
+ private java.util.List recommendations;
+
+ /**
+ * recommendations
+ *
+ * @param recommendations the value to set
+ * @return this builder
+ */
+ public Builder recommendations(java.util.List recommendations) {
+ this.recommendations = recommendations;
+ this.__explicitlySet__.add("recommendations");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("metadata")
+ private Metadata metadata;
+
+ public Builder metadata(Metadata metadata) {
+ this.metadata = metadata;
+ this.__explicitlySet__.add("metadata");
+ return this;
+ }
+ /** time generated */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeGenerated")
+ private java.util.Date timeGenerated;
+
+ /**
+ * time generated
+ *
+ * @param timeGenerated the value to set
+ * @return this builder
+ */
+ public Builder timeGenerated(java.util.Date timeGenerated) {
+ this.timeGenerated = timeGenerated;
+ this.__explicitlySet__.add("timeGenerated");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public RecommendationReport build() {
+ RecommendationReport model =
+ new RecommendationReport(
+ this.summary,
+ this.totalIssues,
+ this.criticalIssues,
+ this.warningIssues,
+ this.infoIssues,
+ this.recommendations,
+ this.metadata,
+ this.timeGenerated);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(RecommendationReport model) {
+ if (model.wasPropertyExplicitlySet("summary")) {
+ this.summary(model.getSummary());
+ }
+ if (model.wasPropertyExplicitlySet("totalIssues")) {
+ this.totalIssues(model.getTotalIssues());
+ }
+ if (model.wasPropertyExplicitlySet("criticalIssues")) {
+ this.criticalIssues(model.getCriticalIssues());
+ }
+ if (model.wasPropertyExplicitlySet("warningIssues")) {
+ this.warningIssues(model.getWarningIssues());
+ }
+ if (model.wasPropertyExplicitlySet("infoIssues")) {
+ this.infoIssues(model.getInfoIssues());
+ }
+ if (model.wasPropertyExplicitlySet("recommendations")) {
+ this.recommendations(model.getRecommendations());
+ }
+ if (model.wasPropertyExplicitlySet("metadata")) {
+ this.metadata(model.getMetadata());
+ }
+ if (model.wasPropertyExplicitlySet("timeGenerated")) {
+ this.timeGenerated(model.getTimeGenerated());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** summary */
+ @com.fasterxml.jackson.annotation.JsonProperty("summary")
+ private final String summary;
+
+ /**
+ * summary
+ *
+ * @return the value
+ */
+ public String getSummary() {
+ return summary;
+ }
+
+ /** total issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("totalIssues")
+ private final Integer totalIssues;
+
+ /**
+ * total issue count
+ *
+ * @return the value
+ */
+ public Integer getTotalIssues() {
+ return totalIssues;
+ }
+
+ /** critical issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("criticalIssues")
+ private final Integer criticalIssues;
+
+ /**
+ * critical issue count
+ *
+ * @return the value
+ */
+ public Integer getCriticalIssues() {
+ return criticalIssues;
+ }
+
+ /** warning issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("warningIssues")
+ private final Integer warningIssues;
+
+ /**
+ * warning issue count
+ *
+ * @return the value
+ */
+ public Integer getWarningIssues() {
+ return warningIssues;
+ }
+
+ /** info issue count */
+ @com.fasterxml.jackson.annotation.JsonProperty("infoIssues")
+ private final Integer infoIssues;
+
+ /**
+ * info issue count
+ *
+ * @return the value
+ */
+ public Integer getInfoIssues() {
+ return infoIssues;
+ }
+
+ /** recommendations */
+ @com.fasterxml.jackson.annotation.JsonProperty("recommendations")
+ private final java.util.List recommendations;
+
+ /**
+ * recommendations
+ *
+ * @return the value
+ */
+ public java.util.List getRecommendations() {
+ return recommendations;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonProperty("metadata")
+ private final Metadata metadata;
+
+ public Metadata getMetadata() {
+ return metadata;
+ }
+
+ /** time generated */
+ @com.fasterxml.jackson.annotation.JsonProperty("timeGenerated")
+ private final java.util.Date timeGenerated;
+
+ /**
+ * time generated
+ *
+ * @return the value
+ */
+ public java.util.Date getTimeGenerated() {
+ return timeGenerated;
+ }
+
+ @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("RecommendationReport(");
+ sb.append("super=").append(super.toString());
+ sb.append("summary=").append(String.valueOf(this.summary));
+ sb.append(", totalIssues=").append(String.valueOf(this.totalIssues));
+ sb.append(", criticalIssues=").append(String.valueOf(this.criticalIssues));
+ sb.append(", warningIssues=").append(String.valueOf(this.warningIssues));
+ sb.append(", infoIssues=").append(String.valueOf(this.infoIssues));
+ sb.append(", recommendations=").append(String.valueOf(this.recommendations));
+ sb.append(", metadata=").append(String.valueOf(this.metadata));
+ sb.append(", timeGenerated=").append(String.valueOf(this.timeGenerated));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof RecommendationReport)) {
+ return false;
+ }
+
+ RecommendationReport other = (RecommendationReport) o;
+ return java.util.Objects.equals(this.summary, other.summary)
+ && java.util.Objects.equals(this.totalIssues, other.totalIssues)
+ && java.util.Objects.equals(this.criticalIssues, other.criticalIssues)
+ && java.util.Objects.equals(this.warningIssues, other.warningIssues)
+ && java.util.Objects.equals(this.infoIssues, other.infoIssues)
+ && java.util.Objects.equals(this.recommendations, other.recommendations)
+ && java.util.Objects.equals(this.metadata, other.metadata)
+ && java.util.Objects.equals(this.timeGenerated, other.timeGenerated)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result = (result * PRIME) + (this.summary == null ? 43 : this.summary.hashCode());
+ result = (result * PRIME) + (this.totalIssues == null ? 43 : this.totalIssues.hashCode());
+ result =
+ (result * PRIME)
+ + (this.criticalIssues == null ? 43 : this.criticalIssues.hashCode());
+ result =
+ (result * PRIME)
+ + (this.warningIssues == null ? 43 : this.warningIssues.hashCode());
+ result = (result * PRIME) + (this.infoIssues == null ? 43 : this.infoIssues.hashCode());
+ result =
+ (result * PRIME)
+ + (this.recommendations == null ? 43 : this.recommendations.hashCode());
+ result = (result * PRIME) + (this.metadata == null ? 43 : this.metadata.hashCode());
+ result =
+ (result * PRIME)
+ + (this.timeGenerated == null ? 43 : this.timeGenerated.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/RequestDiagnosisDetails.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/RequestDiagnosisDetails.java
new file mode 100644
index 00000000000..97d85a913e8
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/RequestDiagnosisDetails.java
@@ -0,0 +1,136 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * The details of the diagnosis analysis request operation.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = RequestDiagnosisDetails.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class RequestDiagnosisDetails
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({"healthCheckKeys"})
+ public RequestDiagnosisDetails(java.util.List healthCheckKeys) {
+ super();
+ this.healthCheckKeys = healthCheckKeys;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /** A list of health check IDs. */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKeys")
+ private java.util.List healthCheckKeys;
+
+ /**
+ * A list of health check IDs.
+ *
+ * @param healthCheckKeys the value to set
+ * @return this builder
+ */
+ public Builder healthCheckKeys(java.util.List healthCheckKeys) {
+ this.healthCheckKeys = healthCheckKeys;
+ this.__explicitlySet__.add("healthCheckKeys");
+ return this;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public RequestDiagnosisDetails build() {
+ RequestDiagnosisDetails model = new RequestDiagnosisDetails(this.healthCheckKeys);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(RequestDiagnosisDetails model) {
+ if (model.wasPropertyExplicitlySet("healthCheckKeys")) {
+ this.healthCheckKeys(model.getHealthCheckKeys());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /** A list of health check IDs. */
+ @com.fasterxml.jackson.annotation.JsonProperty("healthCheckKeys")
+ private final java.util.List healthCheckKeys;
+
+ /**
+ * A list of health check IDs.
+ *
+ * @return the value
+ */
+ public java.util.List getHealthCheckKeys() {
+ return healthCheckKeys;
+ }
+
+ @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("RequestDiagnosisDetails(");
+ sb.append("super=").append(super.toString());
+ sb.append("healthCheckKeys=").append(String.valueOf(this.healthCheckKeys));
+ sb.append(")");
+ return sb.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof RequestDiagnosisDetails)) {
+ return false;
+ }
+
+ RequestDiagnosisDetails other = (RequestDiagnosisDetails) o;
+ return java.util.Objects.equals(this.healthCheckKeys, other.healthCheckKeys)
+ && super.equals(other);
+ }
+
+ @Override
+ public int hashCode() {
+ final int PRIME = 59;
+ int result = 1;
+ result =
+ (result * PRIME)
+ + (this.healthCheckKeys == null ? 43 : this.healthCheckKeys.hashCode());
+ result = (result * PRIME) + super.hashCode();
+ return result;
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/SortOrder.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/SortOrder.java
new file mode 100644
index 00000000000..d4f0e4bf0f1
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/SortOrder.java
@@ -0,0 +1,43 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * The sort order to use, either ascending ({@code ASC}) or descending ({@code DESC}). The {@code
+ * displayName} sort order is case sensitive.
+ */
+@jakarta.annotation.Generated(value = "OracleSDKGenerator", comments = "API Version: 20260331")
+public enum SortOrder implements com.oracle.bmc.http.internal.BmcEnum {
+ Asc("ASC"),
+ Desc("DESC"),
+ ;
+
+ private final String value;
+ private static java.util.Map map;
+
+ static {
+ map = new java.util.HashMap<>();
+ for (SortOrder v : SortOrder.values()) {
+ map.put(v.getValue(), v);
+ }
+ }
+
+ SortOrder(String value) {
+ this.value = value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonValue
+ public String getValue() {
+ return value;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonCreator
+ public static SortOrder create(String key) {
+ if (map.containsKey(key)) {
+ return map.get(key);
+ }
+ throw new IllegalArgumentException("Invalid SortOrder: " + key);
+ }
+}
diff --git a/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/UpdateDiagnosisStoreDetails.java b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/UpdateDiagnosisStoreDetails.java
new file mode 100644
index 00000000000..4df7367f791
--- /dev/null
+++ b/bmc-clusterhealth/src/main/java/com/oracle/bmc/clusterhealth/model/UpdateDiagnosisStoreDetails.java
@@ -0,0 +1,362 @@
+/**
+ * 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.clusterhealth.model;
+
+/**
+ * The data to update a Diagnosis.
+ * 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: 20260331")
+@com.fasterxml.jackson.databind.annotation.JsonDeserialize(
+ builder = UpdateDiagnosisStoreDetails.Builder.class)
+@com.fasterxml.jackson.annotation.JsonFilter(
+ com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel.EXPLICITLY_SET_FILTER_NAME)
+public final class UpdateDiagnosisStoreDetails
+ extends com.oracle.bmc.http.client.internal.ExplicitlySetBmcModel {
+ @Deprecated
+ @java.beans.ConstructorProperties({
+ "displayName",
+ "objectStoreNamespace",
+ "objectStoreBucket",
+ "freeformTags",
+ "definedTags"
+ })
+ public UpdateDiagnosisStoreDetails(
+ String displayName,
+ String objectStoreNamespace,
+ String objectStoreBucket,
+ java.util.Map freeformTags,
+ java.util.Map> definedTags) {
+ super();
+ this.displayName = displayName;
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.objectStoreBucket = objectStoreBucket;
+ this.freeformTags = freeformTags;
+ this.definedTags = definedTags;
+ }
+
+ @com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder(withPrefix = "")
+ public static class Builder {
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @param displayName the value to set
+ * @return this builder
+ */
+ public Builder displayName(String displayName) {
+ this.displayName = displayName;
+ this.__explicitlySet__.add("displayName");
+ return this;
+ }
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private String objectStoreNamespace;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @param objectStoreNamespace the value to set
+ * @return this builder
+ */
+ public Builder objectStoreNamespace(String objectStoreNamespace) {
+ this.objectStoreNamespace = objectStoreNamespace;
+ this.__explicitlySet__.add("objectStoreNamespace");
+ return this;
+ }
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private String objectStoreBucket;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @param objectStoreBucket the value to set
+ * @return this builder
+ */
+ public Builder objectStoreBucket(String objectStoreBucket) {
+ this.objectStoreBucket = objectStoreBucket;
+ this.__explicitlySet__.add("objectStoreBucket");
+ 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;
+ }
+ /**
+ * 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;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ private final java.util.Set __explicitlySet__ = new java.util.HashSet();
+
+ public UpdateDiagnosisStoreDetails build() {
+ UpdateDiagnosisStoreDetails model =
+ new UpdateDiagnosisStoreDetails(
+ this.displayName,
+ this.objectStoreNamespace,
+ this.objectStoreBucket,
+ this.freeformTags,
+ this.definedTags);
+ for (String explicitlySetProperty : this.__explicitlySet__) {
+ model.markPropertyAsExplicitlySet(explicitlySetProperty);
+ }
+ return model;
+ }
+
+ @com.fasterxml.jackson.annotation.JsonIgnore
+ public Builder copy(UpdateDiagnosisStoreDetails model) {
+ if (model.wasPropertyExplicitlySet("displayName")) {
+ this.displayName(model.getDisplayName());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreNamespace")) {
+ this.objectStoreNamespace(model.getObjectStoreNamespace());
+ }
+ if (model.wasPropertyExplicitlySet("objectStoreBucket")) {
+ this.objectStoreBucket(model.getObjectStoreBucket());
+ }
+ if (model.wasPropertyExplicitlySet("freeformTags")) {
+ this.freeformTags(model.getFreeformTags());
+ }
+ if (model.wasPropertyExplicitlySet("definedTags")) {
+ this.definedTags(model.getDefinedTags());
+ }
+ return this;
+ }
+ }
+
+ /** Create a new builder. */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ public Builder toBuilder() {
+ return new Builder().copy(this);
+ }
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("displayName")
+ private final String displayName;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @return the value
+ */
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreNamespace")
+ private final String objectStoreNamespace;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @return the value
+ */
+ public String getObjectStoreNamespace() {
+ return objectStoreNamespace;
+ }
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ */
+ @com.fasterxml.jackson.annotation.JsonProperty("objectStoreBucket")
+ private final String objectStoreBucket;
+
+ /**
+ * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering
+ * confidential information.
+ *
+ * @return the value
+ */
+ public String getObjectStoreBucket() {
+ return objectStoreBucket;
+ }
+
+ /**
+ * 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;
+ }
+
+ /**
+ * 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