diff --git a/.editorconfig b/.editorconfig
index 67b1ce404..cc2116612 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -8,7 +8,7 @@ indent_size = 4
indent_style = space
indent_size = 2
-[*.yml]
+[*.{yml,yaml}]
indent_style = space
indent_size = 2
diff --git a/pom.xml b/pom.xml
index e9333c150..08022bdf9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -215,6 +215,11 @@
javax.annotation-api
1.3.2
+
+ org.alexmond
+ spring-boot-config-json-schema-starter
+ 3.5.16.1
+
@@ -323,6 +328,11 @@
lombok
1.18.42
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+ 3.5.6
+
3.14.1
diff --git a/src/main/java/org/patinanetwork/codebloom/utilities/generator/schema/ConfigSchemaGenerator.java b/src/main/java/org/patinanetwork/codebloom/utilities/generator/schema/ConfigSchemaGenerator.java
new file mode 100644
index 000000000..95062a10a
--- /dev/null
+++ b/src/main/java/org/patinanetwork/codebloom/utilities/generator/schema/ConfigSchemaGenerator.java
@@ -0,0 +1,78 @@
+package org.patinanetwork.codebloom.utilities.generator.schema;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Set;
+import lombok.extern.slf4j.Slf4j;
+import org.alexmond.config.json.schema.service.JsonSchemaService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.context.annotation.Profile;
+import org.springframework.stereotype.Component;
+
+/** Regenerates config-schema on every dev boot */
+@Profile("dev")
+@Component
+@Slf4j
+public class ConfigSchemaGenerator implements CommandLineRunner {
+
+ private static final Path DEFAULT_OUTPUT_PATH = Path.of("src/main/resources/config-schema.json");
+
+ private final JsonSchemaService jsonSchemaService;
+
+ private final Path outputPath;
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Autowired
+ public ConfigSchemaGenerator(final JsonSchemaService jsonSchemaService) {
+ this(jsonSchemaService, DEFAULT_OUTPUT_PATH);
+ }
+
+ ConfigSchemaGenerator(final JsonSchemaService jsonSchemaService, final Path outputPath) {
+ this.jsonSchemaService = jsonSchemaService;
+ this.outputPath = outputPath;
+ }
+
+ @Override
+ public void run(final String... args) {
+ try {
+ JsonNode schema = objectMapper.readTree(jsonSchemaService.generateFullSchemaJson());
+ relax(schema);
+ Files.writeString(
+ outputPath, objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema) + "\n");
+ log.info("Wrote config schema to {}", outputPath);
+ } catch (Exception e) {
+ log.error("Config schema generation failed", e);
+ }
+ }
+
+ private static final Set STRING_COERCIBLE_TYPES = Set.of("boolean", "integer", "number", "array");
+
+ /**
+ * Loosens the library output to match what Spring actually accepts:
+ *
+ *
+ * - Drops {@code $anchor}: values are class names containing {@code $}/{@code :}, which violate the 2020-12
+ * anchor pattern. All refs use {@code #/$defs/...}, so anchors are unused. Only string values are removed; an
+ * object under a {@code $anchor} key is a property definition, not the keyword.
+ *
- Widens boolean/integer/number/array to also allow string, so {@code ${ENV_VAR}} placeholders and
+ * comma-separated lists validate.
+ *
+ */
+ private static void relax(final JsonNode node) {
+ if (node instanceof ObjectNode object) {
+ if (object.path("$anchor").isTextual()) {
+ object.remove("$anchor");
+ }
+ JsonNode type = object.path("type");
+ if (type.isTextual() && STRING_COERCIBLE_TYPES.contains(type.asText())) {
+ object.putArray("type").add(type.asText()).add("string");
+ }
+ }
+ node.forEach(ConfigSchemaGenerator::relax);
+ }
+}
diff --git a/src/main/resources/application-ci.yaml b/src/main/resources/application-ci.yaml
index 30f94e600..02ee9207e 100644
--- a/src/main/resources/application-ci.yaml
+++ b/src/main/resources/application-ci.yaml
@@ -1,3 +1,4 @@
+# yaml-language-server: $schema=./config-schema.json
codebloom:
frontend:
index: file:js/index.html
diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml
index e1d9cadec..92cc2294d 100644
--- a/src/main/resources/application-dev.yaml
+++ b/src/main/resources/application-dev.yaml
@@ -1,3 +1,4 @@
+# yaml-language-server: $schema=./config-schema.json
codebloom:
frontend:
index: file:js/index.html
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 6355dbde2..9ab11c43a 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,3 +1,4 @@
+# yaml-language-server: $schema=./config-schema.json
logging:
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] [%X{requestId}] %logger{36} - %msg%n"
diff --git a/src/main/resources/config-schema.json b/src/main/resources/config-schema.json
new file mode 100644
index 000000000..4e9011d47
--- /dev/null
+++ b/src/main/resources/config-schema.json
@@ -0,0 +1,9757 @@
+{
+ "$schema" : "https://json-schema.org/draft/2020-12/schema",
+ "$id" : "urn:uuid:your-schema-id",
+ "title" : "Spring Boot Configuration Properties",
+ "description" : "Auto-generated schema from configuration metadata",
+ "type" : "object",
+ "$defs" : {
+ "loggerLevel" : {
+ "type" : "string",
+ "enum" : [ "TRACE", "debug", "INFO", "error", "DEBUG", "WARN", "OFF", "off", "fatal", "warn", "trace", "ERROR", "FATAL", "info" ]
+ },
+ "loggerLevelProp" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "oneOf" : [ {
+ "$ref" : "#/$defs/loggerLevel"
+ }, {
+ "$ref" : "#/$defs/loggerLevelProp"
+ } ]
+ }
+ },
+ "java.util.Locale" : {
+ "type" : "string",
+ "enum" : [ "", "ksh", "rw_RW", "en_TC", "af_ZA", "fr_LU", "en_TK", "ccp", "sn_ZW_#Latn", "en_TO", "it_SM", "en_TT", "sbp_TZ_#Latn", "nl_AW", "ku_IQ_#Latn", "de_IT", "raj", "en_TV", "om_ET_#Latn", "gaa_GH", "en_TZ", "teo", "en_UA", "sr_ME_#Latn", "fr_ML", "ti_ER", "nl_BE", "fr_MQ", "ann_NG_#Latn", "yrl_BR_#Latn", "fr_MU", "ti_ET", "en_UG", "fr_MR", "en_UM", "os_RU", "nl_BQ", "seh_MZ_#Latn", "nus_SS_#Latn", "ko_KR", "fr_MA", "en_US", "ko_KP", "kok_IN", "ksh_DE", "fr_MC", "xnr", "oc_FR_#Latn", "fr_MF", "ses_ML", "fr_MG", "ceb", "pcm_NG_#Latn", "be_BY", "de_LI", "dav_KE_#Latn", "se_NO", "xog", "en_RO", "en_RW", "nd_ZW", "dua_CM", "sr_XK_#Cyrl", "mzn", "bn_IN", "syr_IQ", "ms_ID", "pa_IN", "en_SC", "en_SD", "en_SB", "fr_KM", "en_SG", "en_SH", "en_SE", "en_SK", "en_SL", "en_SI", "et_EE_#Latn", "fi_FI", "ks_IN_#Deva", "en_SS", "ru_UA", "kxv__#Orya", "vai__#Latn", "ur_PK", "en_SX", "en_SZ", "uz_UZ_#Latn", "cgg", "en_PH", "bn_BD", "fr_HT", "en_PG", "en_PL", "nnh_CM", "en_PK", "ff_LR_#Latn", "en_PN", "sr_BA", "en_PT", "kw_GB_#Latn", "en_PR", "en_PW", "sg_CF_#Latn", "vmw", "ewo_CM_#Latn", "ur_IN", "bg_BG_#Cyrl", "shi_MA_#Latn", "kxv", "be_BY_#Cyrl", "sg_CF", "chr", "raj_IN_#Deva", "nds_DE_#Latn", "sw_TZ_#Latn", "oc_ES", "jmc_TZ", "en_MY", "yi_UA", "sw_UG", "en_MW", "da_DK_#Latn", "kk__#Arab", "hi_IN", "en_NA", "en_NF", "shn_MM", "sw_TZ", "en_NG", "yo_BJ", "fr_FR", "ms_MY", "sr_BA_#Latn", "nl_CW", "en_NO", "en_NL", "ks__#Arab", "en_NR", "haw_US", "sr_CS", "nl_NL_#Latn", "pcm", "wae_CH", "en_NU", "tt_RU_#Cyrl", "en_NZ", "fr_GF", "kam_KE", "fr_GN", "ca_ES_VALENCIA", "fr_GP", "cy_GB", "fr_GQ", "ht_HT_#Latn", "ht_HT", "zh_CN_#Latn", "ceb_PH", "ckb", "lu_CD", "fr_GA", "de_AT", "en_KY", "bho_IN_#Deva", "mgo_CM_#Latn", "gsw", "agq", "lag_TZ_#Latn", "fr_DJ", "ca_IT", "pms_IT_#Latn", "tok_001", "ff_GM_#Adlm", "vai_LR_#Vaii", "en_LC", "bho_IN", "yue__#Hant", "ja_JP_JP_#u-ca-japanese", "yue__#Hans", "sv_AX", "en_LT", "luy_KE", "en_LR", "naq", "en_LS", "ti_ET_#Ethi", "bgc_IN_#Deva", "en_LV", "sn_ZW", "ff_NE_#Adlm", "ms_MY_#Latn", "ff_SN_#Latn", "en_MG", "en_MH", "ar_EG_#Arab", "naq_NA", "nmg_CM_#Latn", "kea_CV", "yue_CN_#Hant", "en_MO", "en_MP", "fr_DZ", "en_MU", "en_MV", "en_MS", "yue_CN_#Hans", "en_MT", "bs_BA_#Latn", "bas_CM_#Latn", "it_IT", "en_IT", "pl_PL", "teo_UG_#Latn", "fr_BE", "ks_IN", "fr_BF", "tr_TR", "fr_BI", "fr_BJ", "ca_ES_#Latn", "my_MM_#Mymr", "ff_GH_#Adlm", "guz", "de_DE", "fr_BL", "tg_TJ", "tok", "ksf_CM", "zh_HK", "en_JE", "de_CH", "uz_AF", "luy_KE_#Latn", "en_JM", "oc_FR", "ee_GH", "en_JP", "pa_PK", "pa_PK_#Arab", "yo_NG", "zu_ZA_#Latn", "mdf_RU", "fr_CA", "fr_CF", "fr_CG", "fr_CD", "so_SO_#Latn", "ff_GN_#Adlm", "fr_CH", "vi_VN", "fr_CI", "fr_CM", "de_BE", "en_KE", "en_KI", "guz_KE_#Latn", "en_KN", "nds", "uz__#Latn", "scn_IT_#Latn", "kok__#Deva", "fy_NL", "en_GS", "lag_TZ", "ast_ES_#Latn", "lmo_IT", "en_GU", "en_GY", "bn_BD_#Beng", "lv_LV_#Latn", "af_NA", "yo_NG_#Latn", "ig_NG", "vun", "ca_ES", "th_TH_#Thai", "shn_TH", "lag", "sv_SE_#Latn", "tn_ZA", "pis", "en_HK", "sa_IN_#Deva", "nl_NL", "en_HU", "ff_GW_#Latn", "lij_IT_#Latn", "yi_UA_#Hebr", "kgp_BR", "ky_KG_#Cyrl", "en_IE", "hr_HR", "en_ID", "nso_ZA_#Latn", "hi__#Latn", "ms_SG", "en_IM", "en_IN", "en_IL", "vmw_MZ_#Latn", "en_IO", "rof_TZ_#Latn", "en_ER", "kab_DZ_#Latn", "ii_CN_#Yiii", "en_ES", "zh_SG_#Hans", "rof", "sat_IN_#Olck", "hr_HR_#Latn", "fur_IT", "sat_IN", "en_FJ", "en_FK", "en_FI", "se_SE", "as_IN", "en_FM", "ann", "en_FR", "az_AZ_#Cyrl", "jmc_TZ_#Latn", "teo_UG", "frr_DE_#Latn", "ca_FR", "sr_ME", "en_GD", "ksb_TZ", "en_GB", "en_GG", "en_GH", "en_GE", "ml_IN", "be__TARASK", "en_GI", "zh_CN", "ewo", "dje_NE", "en_GM", "jgo_CM_#Latn", "nso_ZA", "ta_LK", "nb_NO_#Latn", "csw", "bem_ZM_#Latn", "to_TO_#Latn", "pis_SB", "nb_NO", "sd__#Deva", "sd_IN_#Deva", "pms", "en_US_POSIX", "tg_TJ_#Cyrl", "sr_RS_#Latn", "tn_ZA_#Latn", "el_GR_#Grek", "ia_001", "qu_BO", "zh_CN_#Hans", "bez_TZ", "mni_IN_#Beng", "fo_FO", "ta_MY", "se_NO_#Latn", "sa_IN", "jgo_CM", "bal__#Latn", "sr__#Cyrl", "twq", "gl_ES_#Latn", "gsw_CH", "lij_IT", "tyv_RU", "fo_DK", "asa", "yav", "ebu_KE", "mfe_MU_#Latn", "lv_LV", "ar_IQ", "zh_MO_#Hant", "ar_IL", "ksf_CM_#Latn", "zh_MO_#Hans", "br_FR", "ast", "nmg", "lij", "th_TH", "sw_CD", "tyv", "gu_IN_#Gujr", "su_ID", "lb_LU_#Latn", "ru_KZ", "ar_BH", "shi__#Tfng", "uz__#Arab", "haw", "hi_IN_#Latn", "ff_BF_#Latn", "uz_AF_#Arab", "mgh_MZ", "sk_SK_#Latn", "ru_KG", "tzm", "ta_IN", "gd_GB", "nnh", "tn_BW", "teo_KE", "vec_IT", "rn_BI_#Latn", "frr_DE", "szl_PL", "dua_CM_#Latn", "kk_KZ", "yue_CN", "fr_YT", "no_NO", "fr_VU", "luo_KE", "rwk", "mgh_MZ_#Latn", "twq_NE_#Latn", "ie_EE_#Latn", "gsw_FR", "jgo", "lkt", "blo_BJ_#Latn", "ar_DJ", "kde_TZ_#Latn", "wae", "mdf_RU_#Cyrl", "nyn_UG", "qu_PE_#Latn", "ce_RU", "si_LK_#Sinh", "jv_ID", "kk_KZ_#Cyrl", "eu_ES_#Latn", "ar_DZ", "lb_LU", "dsb_DE_#Latn", "fr_WF", "tzm_MA", "mt_MT_#Latn", "kkj_CM_#Latn", "ar_ER", "qu_EC", "kxv_IN_#Telu", "ar_EG", "kln_KE_#Latn", "ar_EH", "sq_XK", "nb_SJ", "saq_KE", "el__POLYTON", "pl_PL_#Latn", "en_001", "nqo", "lmo", "fr_TD", "fr_TG", "ff_NE_#Latn", "ff_GH_#Latn", "fr_TN", "te_IN", "brx_IN", "kxv__#Deva", "ff_CM_#Adlm", "cv_RU_#Cyrl", "ko_CN", "ff_GN_#Latn", "tr_CY", "ff_MR_#Adlm", "os_GE", "id_ID", "fr_RW", "nso", "en_ZM", "yrl_CO", "km_KH", "st_ZA_#Latn", "en_ZW", "rn_BI", "se_FI", "fr_RE", "no_NO_#Latn", "hy_AM_#Armn", "fr_SY", "ru_MD", "yrl_BR", "lkt_US_#Latn", "fr_SC", "zgh_MA", "sd_PK_#Arab", "sl_SI", "fr_SN", "te_IN_#Telu", "ar_AE", "gsw_LI", "vec_IT_#Latn", "jmc", "fr_PM", "nus", "luo_KE_#Latn", "kxv_IN_#Latn", "lo_LA", "gv_IM", "dav", "ug_CN", "sw_KE", "kok_IN_#Latn", "fr_PF", "lrc", "qu_PE", "ja_JP_#Jpan", "pa_IN_#Guru", "is_IS_#Latn", "vai_LR_#Latn", "ms_BN", "gaa_GH_#Latn", "de_LU", "eo_001", "en_ZA", "fy_NL_#Latn", "en_VC", "it_VA", "ru_RU", "en_VG", "mai_IN", "sd__#Arab", "zh_MY_#Hant", "seh_MZ", "en_VI", "ee_TG", "ff_GM_#Latn", "ba_RU", "bua_RU_#Cyrl", "vai__#Vaii", "nqo_GN_#Nkoo", "en_VU", "fr_NE", "raj_IN", "fr_NC", "sah", "haw_US_#Latn", "saq", "az__#Latn", "sat", "ps_PK", "mai_IN_#Deva", "bg_BG", "mn_MN_#Cyrl", "en_WS", "et_EE", "bem_ZM", "ta_SG", "zh_MY_#Hans", "csw_CA_#Cans", "sc_IT", "pcm_NG", "sbp", "ha_GH", "gv_IM_#Latn", "blo_BJ", "nyn", "bo_CN", "luo", "fil", "es_EA", "es_EC", "luy", "bas", "es_ES", "mi_NZ_#Latn", "pt_ST", "xh_ZA", "nn_NO_#Latn", "scn", "cv_RU", "af", "nnh_CM_#Latn", "bo_CN_#Tibt", "af_ZA_#Latn", "to_TO", "no_NO_NY", "pt_BR_#Latn", "ak", "sd_PK", "am_ET", "am", "ar", "as", "es_ES_#Latn", "az", "pa__#Arab", "ba", "ki_KE_#Latn", "chr_US_#Cher", "be", "bg", "es_BR", "zu_ZA", "ccp_BD", "bm", "ff__#Latn", "bn", "bo", "es_BZ", "br", "bs", "ar_YE", "seh", "es_CO", "mk_MK_#Cyrl", "ses_ML_#Latn", "pa__#Guru", "ca", "es_CL", "sq_AL_#Latn", "ff_NG_#Latn", "ses", "ce", "nmg_CM", "es_CR", "es_CU", "rof_TZ", "br_FR_#Latn", "bua_RU", "mg_MG", "kam_KE_#Latn", "cs", "az_AZ", "yrl", "cv", "cy", "es_DO", "ff_BF_#Adlm", "da", "pt_PT", "de", "ln_CD_#Latn", "mg_MG_#Latn", "bem", "wae_CH_#Latn", "hu_HU", "ar_SA", "es_419", "ar_SD", "so_KE", "dz", "bez", "ff_MR_#Latn", "szl_PL_#Latn", "tr_TR_#Latn", "jv_ID_#Latn", "dje", "ak_GH", "ee", "ar_SS", "en_US_#Latn", "ro_MD", "vai_LR", "ar_SO", "es_AR", "el", "en", "eo", "es", "et", "eu", "ar_TD", "bas_CM", "he_IL_#Hebr", "shi", "su_ID_#Latn", "hsb", "ar_SY", "shn", "es_BO", "bs_BA_#Cyrl", "fa", "ug_CN_#Arab", "bgc", "ff", "fi", "ar_TN", "yue", "fo", "hsb_DE_#Latn", "ku__#Latn", "kgp_BR_#Latn", "fr", "sah_RU_#Cyrl", "fy", "uz_UZ", "ga", "nqo_GN", "ro_RO_#Latn", "gd", "fr_FR_#Latn", "gl", "bho", "gu", "gv", "xh_ZA_#Latn", "zh_TW_#Hant", "sr__#Latn", "pt_TL", "ha", "ga_IE_#Latn", "ff_SL_#Latn", "he", "or_IN_#Orya", "om_ET", "hi", "ro_RO", "cgg_UG", "smn_FI_#Latn", "yrl_VE", "uk_UA_#Cyrl", "mt_MT", "hr", "ff_GN", "mgo_CM", "ht", "sah_RU", "hu", "scn_IT", "hy", "kxv_IN", "lrc_IR_#Arab", "om_KE", "kxv_IN_#Orya", "kkj_CM", "ia", "sc_IT_#Latn", "id", "ie", "ig", "ar_OM", "ii", "ne_NP_#Deva", "dz_BT", "ccp_IN", "yue_HK", "frr", "bal_PK_#Latn", "is", "it", "mzn_IR", "kok__#Latn", "ceb_PH_#Latn", "ja", "cy_GB_#Latn", "kde_TZ", "doi", "kl_GL_#Latn", "ko_KR_#Kore", "ku_SY_#Latn", "jv", "ps_AF_#Arab", "saq_KE_#Latn", "rwk_TZ_#Latn", "ar_QA", "bgc_IN", "mai", "smn", "ka", "sms", "ar_PS", "ki", "mas", "hu_HU_#Latn", "kk", "kl", "km", "kn", "ko", "blo", "ks", "lt_LT_#Latn", "ku", "kw", "az__#Cyrl", "ky", "am_ET_#Ethi", "lb", "ba_RU_#Cyrl", "cs_CZ_#Latn", "lg", "mi_NZ", "ln", "fur", "lo", "lt", "lu", "lv", "ckb_IQ", "ckb_IR", "sq_MK", "mni__#Beng", "so_SO", "mg", "mi", "mk", "ar_JO", "ml", "ckb_IQ_#Arab", "mn", "is_IS", "fil_PH_#Latn", "sr_ME_#Cyrl", "mr", "ms", "mt", "nus_SS", "ee_GH_#Latn", "my", "mdf", "chr_US", "ru_BY", "dsb", "nb", "shi_MA_#Tfng", "ar_KW", "kn_IN_#Knda", "nd", "nd_ZW_#Latn", "lt_LT", "ne", "kea_CV_#Latn", "ar_KM", "dyo_SN_#Latn", "ps_AF", "nl", "kk_CN", "nn", "no", "zh__#Hans", "rm_CH_#Latn", "zh__#Hant", "ar_LB", "mas_KE_#Latn", "kab", "ki_KE", "vi_VN_#Latn", "sat__#Olck", "oc", "bs__#Latn", "kam", "ar_LY", "zh_HK_#Hans", "zh_HK_#Hant", "mer", "om", "mni_IN", "or", "os", "fil_PH", "naq_NA_#Latn", "mk_MK", "mfe", "ar_MA", "pa", "dua", "lg_UG", "ml_IN_#Mlym", "uz_UZ_#Cyrl", "twq_NE", "pl", "ku_TR_#Latn", "smn_FI", "ar_MR", "en_CM", "ps", "ca_AD", "it_CH", "pt", "en_CX", "pt_BR", "es_US", "en_CY", "en_CZ", "mgh", "ig_NG_#Latn", "es_UY", "ii_CN", "mgo", "en_DE", "fo_FO_#Latn", "ln_CD", "mer_KE", "en_DG", "tzm_MA_#Latn", "en_DM", "en_DK", "dz_BT_#Tibt", "qu", "es_VE", "ff_NG_#Adlm", "da_DK", "pt_AO", "ak_GH_#Latn", "brx", "lkt_US", "kde", "ln_AO", "mua_CM", "en_EE", "yav_CM_#Latn", "fa_IR_#Arab", "rm", "tok_001_#Latn", "rn", "ro", "vmw_MZ", "el_GR", "eo_001_#Latn", "ru", "rw", "kea", "en_AU", "da_GL", "en_AS", "en_AT", "he_IL", "sa", "ka_GE_#Geor", "sc", "es_SV", "sr_BA_#Cyrl", "sd", "sbp_TZ", "se", "en_BB", "sg", "si", "gsw_CH_#Latn", "sk", "sl", "en_BE", "sn", "so", "rw_RW_#Latn", "asa_TZ", "sq", "en_BI", "sr", "hi_IN_#Deva", "st", "su", "en_BM", "sv", "ln_CG", "sw", "ln_CF", "en_BS", "za_CN", "en_BW", "ur_PK_#Arab", "en_BZ", "ia_001_#Latn", "ta", "doi_IN_#Deva", "bua", "te", "tg", "en_CC", "th", "ti", "en_CA", "ka_GE", "tyv_RU_#Cyrl", "tk", "uk_UA", "en_CH", "os_GE_#Cyrl", "tn", "hr_BA", "dyo", "to", "en_CK", "tr", "tt", "bez_TZ_#Latn", "si_LK", "ne_IN", "rm_CH", "ug", "sv_FI", "kl_GL", "kgp", "kw_GB", "uk", "it_IT_#Latn", "mua_CM_#Latn", "ur", "pms_IT", "uz", "sr_RS", "shn_MM_#Mymr", "ff_SL_#Adlm", "nds_NL", "st_LS", "vi", "zh_MO", "su__#Latn", "khq", "en_AE", "en_AI", "en_AG", "lu_CD_#Latn", "nl_SR", "ff_LR_#Adlm", "nl_SX", "gaa", "khq_ML_#Latn", "fur_IT_#Latn", "mn_MN", "syr", "za_CN_#Latn", "el_CY", "ksh_DE_#Latn", "yue_MO_#Hant", "shi_MA", "sr_XK_#Latn", "wo", "zgh", "ar_001", "ff_CM_#Latn", "pt_CH", "nn_NO", "es_PE", "szl", "es_PA", "kxv__#Latn", "fa_IR", "mni", "mas_TZ", "sms_FI_#Latn", "csw_CA", "es_PH", "pt_CV", "xh", "lg_UG_#Latn", "hsb_DE", "ewo_CM", "es_PR", "fi_FI_#Latn", "ru_RU_#Cyrl", "tt_RU", "es_PY", "xnr_IN", "kkj", "cs_CZ", "asa_TZ_#Latn", "zh__#Latn", "ann_NG", "yi", "lmo_IT_#Latn", "yo", "kln_KE", "mfe_MU", "es_MX", "sk_SK", "sms_FI", "ccp_BD_#Cakm", "vai", "gd_GB_#Latn", "sq_AL", "sv_SE", "za", "es_NI", "syr_IQ_#Syrc", "my_MM", "kln", "zh", "th_TH_TH_#u-nu-thai", "vun_TZ", "ha_NG_#Latn", "doi_IN", "mer_KE_#Latn", "zu", "ks__#Deva", "bm_ML_#Latn", "guz_KE", "km_KH_#Khmr", "ks_IN_#Arab", "ja_JP", "st_ZA", "sd_IN", "or_IN", "bs__#Cyrl", "ie_EE", "ha_NG", "eu_ES", "ha_NE", "as_IN_#Beng", "en_150", "pt_GQ", "az_AZ_#Latn", "ku_TR", "pt_GW", "nyn_UG_#Latn", "agq_CM_#Latn", "yue_HK_#Hant", "vun_TZ_#Latn", "ff_SN_#Adlm", "bs_BA", "ne_NP", "agq_CM", "ga_IE", "ebu", "brx_IN_#Deva", "bm_ML", "kok", "khq_ML", "es_IC", "sr_RS_#Cyrl", "mr_IN_#Deva", "xnr_IN_#Deva", "ff__#Adlm", "gl_ES", "vec", "kn_IN", "ff_GW_#Adlm", "ast_ES", "sl_SI_#Latn", "shi__#Latn", "ksb_TZ_#Latn", "id_ID_#Latn", "syr_SY", "pt_MZ", "dsb_DE", "zgh_MA_#Tfng", "cgg_UG_#Latn", "mas_KE", "ga_GB", "xog_UG_#Latn", "mua", "ce_RU_#Cyrl", "so_DJ", "dyo_SN", "pt_LU", "dje_NE_#Latn", "lrc_IQ", "mr_IN", "kok_IN_#Deva", "lrc_IR", "bo_IN", "ky_KG", "kxv_IN_#Deva", "zh_TW", "yav_CM", "tk_TM", "rwk_TZ", "es_GT", "pt_MO", "es_GQ", "ta_IN_#Taml", "kk__#Cyrl", "uz__#Cyrl", "zh_SG", "wo_SN", "fa_AF", "kxv__#Telu", "nds_DE", "hy_AM", "kk_CN_#Arab", "mzn_IR_#Arab", "xog_UG", "kab_DZ", "dav_KE", "de_DE_#Latn", "es_HN", "wo_SN_#Latn", "pis_SB_#Latn", "gu_IN", "ff_SN", "ebu_KE_#Latn", "so_ET", "ksb", "tk_TM_#Latn", "lo_LA_#Laoo", "ksf" ]
+ },
+ "java.nio.charset.Charset" : {
+ "type" : "string",
+ "enum" : [ "Big5", "Big5-HKSCS", "CESU-8", "EUC-JP", "EUC-KR", "GB18030", "GB2312", "GBK", "IBM-Thai", "IBM00858", "IBM01140", "IBM01141", "IBM01142", "IBM01143", "IBM01144", "IBM01145", "IBM01146", "IBM01147", "IBM01148", "IBM01149", "IBM037", "IBM1026", "IBM1047", "IBM273", "IBM277", "IBM278", "IBM280", "IBM284", "IBM285", "IBM290", "IBM297", "IBM420", "IBM424", "IBM437", "IBM500", "IBM775", "IBM850", "IBM852", "IBM855", "IBM857", "IBM860", "IBM861", "IBM862", "IBM863", "IBM864", "IBM865", "IBM866", "IBM868", "IBM869", "IBM870", "IBM871", "IBM918", "ISO-2022-CN", "ISO-2022-JP", "ISO-2022-JP-2", "ISO-2022-KR", "ISO-8859-1", "ISO-8859-13", "ISO-8859-15", "ISO-8859-16", "ISO-8859-2", "ISO-8859-3", "ISO-8859-4", "ISO-8859-5", "ISO-8859-6", "ISO-8859-7", "ISO-8859-8", "ISO-8859-9", "JIS_X0201", "JIS_X0212-1990", "KOI8-R", "KOI8-U", "Shift_JIS", "TIS-620", "US-ASCII", "UTF-16", "UTF-16BE", "UTF-16LE", "UTF-32", "UTF-32BE", "UTF-32LE", "UTF-8", "windows-1250", "windows-1251", "windows-1252", "windows-1253", "windows-1254", "windows-1255", "windows-1256", "windows-1257", "windows-1258", "windows-31j", "x-Big5-HKSCS-2001", "x-Big5-Solaris", "x-euc-jp-linux", "x-EUC-TW", "x-eucJP-Open", "x-IBM1006", "x-IBM1025", "x-IBM1046", "x-IBM1097", "x-IBM1098", "x-IBM1112", "x-IBM1122", "x-IBM1123", "x-IBM1124", "x-IBM1129", "x-IBM1166", "x-IBM1364", "x-IBM1381", "x-IBM1383", "x-IBM29626C", "x-IBM300", "x-IBM33722", "x-IBM737", "x-IBM833", "x-IBM834", "x-IBM856", "x-IBM874", "x-IBM875", "x-IBM921", "x-IBM922", "x-IBM930", "x-IBM933", "x-IBM935", "x-IBM937", "x-IBM939", "x-IBM942", "x-IBM942C", "x-IBM943", "x-IBM943C", "x-IBM948", "x-IBM949", "x-IBM949C", "x-IBM950", "x-IBM964", "x-IBM970", "x-ISCII91", "x-ISO-2022-CN-CNS", "x-ISO-2022-CN-GB", "x-iso-8859-11", "x-JIS0208", "x-JISAutoDetect", "x-Johab", "x-MacArabic", "x-MacCentralEurope", "x-MacCroatian", "x-MacCyrillic", "x-MacDingbat", "x-MacGreek", "x-MacHebrew", "x-MacIceland", "x-MacRoman", "x-MacRomania", "x-MacSymbol", "x-MacThai", "x-MacTurkish", "x-MacUkraine", "x-MS932_0213", "x-MS950-HKSCS", "x-MS950-HKSCS-XP", "x-mswin-936", "x-PCK", "x-SJIS_0213", "x-UTF-16LE-BOM", "X-UTF-32BE-BOM", "X-UTF-32LE-BOM", "x-windows-50220", "x-windows-50221", "x-windows-874", "x-windows-949", "x-windows-950", "x-windows-iso2022jp" ]
+ },
+ "org.springframework.boot.web.server.Ssl:ServerNameSslBundle" : {
+ "type" : "object",
+ "properties" : {
+ "bundle" : {
+ "type" : "string"
+ },
+ "server-name" : {
+ "type" : "string"
+ }
+ }
+ },
+ "java.util.concurrent.ThreadPoolExecutor" : {
+ "type" : "object",
+ "properties" : {
+ "allow-core-thread-time-out" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "c-o-u-n-t_b-i-t-s" : {
+ "type" : [ "integer", "string" ]
+ },
+ "c-o-u-n-t_m-a-s-k" : {
+ "type" : [ "integer", "string" ]
+ },
+ "completed-task-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "container" : {
+ "type" : "object",
+ "properties" : {
+ "c-l-o-s-e-d" : {
+ "type" : "string"
+ },
+ "closed" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "j-l-a" : {
+ "type" : "object"
+ },
+ "key" : {
+ "type" : "object"
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "v-i-r-t-u-a-l_t-h-r-e-a-d-s" : {
+ "type" : "string"
+ },
+ "virtual-threads" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "core-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "ctl" : {
+ "type" : [ "integer", "string" ]
+ },
+ "default-handler" : {
+ "type" : "object"
+ },
+ "handler" : {
+ "type" : "object"
+ },
+ "keep-alive-time" : {
+ "type" : [ "integer", "string" ]
+ },
+ "largest-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "main-lock" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "sync" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "maximum-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "o-n-l-y_o-n-e" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "r-u-n-n-i-n-g" : {
+ "type" : [ "integer", "string" ]
+ },
+ "s-h-u-t-d-o-w-n" : {
+ "type" : [ "integer", "string" ]
+ },
+ "s-t-o-p" : {
+ "type" : [ "integer", "string" ]
+ },
+ "t-e-r-m-i-n-a-t-e-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "t-i-d-y-i-n-g" : {
+ "type" : [ "integer", "string" ]
+ },
+ "termination" : {
+ "type" : "object"
+ },
+ "thread-factory" : {
+ "type" : "object"
+ },
+ "work-queue" : {
+ "type" : "string"
+ },
+ "workers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "completed-tasks" : {
+ "type" : [ "integer", "string" ]
+ },
+ "first-task" : {
+ "type" : "string"
+ },
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "this$0" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.concurrent.ThreadPoolExecutor"
+ },
+ "thread" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.parameters.Parameter" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "allow-empty-value" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "allow-reserved" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "content" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "example" : {
+ "type" : "object"
+ },
+ "examples" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.examples.Example"
+ }
+ },
+ "explode" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "in" : {
+ "type" : "string"
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "required" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "style" : {
+ "type" : "string",
+ "enum" : [ "pipeDelimited", "spaceDelimited", "spacedelimited", "pipedelimited", "form", "simple", "deepobject", "label", "matrix", "deepObject" ]
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.Operation" : {
+ "type" : "object",
+ "properties" : {
+ "callbacks" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.callbacks.Callback"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.ExternalDocumentation"
+ },
+ "operation-id" : {
+ "type" : "string"
+ },
+ "parameters" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.Parameter"
+ }
+ },
+ "request-body" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.RequestBody"
+ },
+ "responses" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "d-e-f-a-u-l-t" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ },
+ "security" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "servers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.servers.Server"
+ }
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "tags" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.headers.Header" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "content" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "example" : {
+ "type" : "object"
+ },
+ "examples" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-value" : {
+ "type" : "string"
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "value" : {
+ "type" : "object"
+ },
+ "value-set-flag" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "explode" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "required" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "schema" : {
+ "type" : "object",
+ "properties" : {
+ "$anchor" : {
+ "type" : "string"
+ },
+ "$comment" : {
+ "type" : "string"
+ },
+ "$dynamic-anchor" : {
+ "type" : "string"
+ },
+ "$id" : {
+ "type" : "string"
+ },
+ "$ref" : {
+ "type" : "string"
+ },
+ "$schema" : {
+ "type" : "string"
+ },
+ "$vocabulary" : {
+ "type" : "string"
+ },
+ "_const" : {
+ "type" : "string"
+ },
+ "_default" : {
+ "type" : "string"
+ },
+ "_else" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "_enum" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "_if" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "a-p-p-l-y_s-c-h-e-m-a_r-e-s-o-l-u-t-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "additional-items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "additional-properties" : {
+ "type" : "object"
+ },
+ "all-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "any-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "b-i-n-a-r-y_s-t-r-i-n-g_c-o-n-v-e-r-s-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "b-i-n-d_t-y-p-e_a-n-d_t-y-p-e-s" : {
+ "type" : "string"
+ },
+ "boolean-schema-value" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "contains" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "content-encoding" : {
+ "type" : "string"
+ },
+ "content-media-type" : {
+ "type" : "string"
+ },
+ "content-schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "dependent-required" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "dependent-schemas" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "discriminator" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "mapping" : {
+ "type" : "object"
+ },
+ "property-name" : {
+ "type" : "string"
+ }
+ }
+ },
+ "example" : {
+ "type" : "string"
+ },
+ "example-set-flag" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "examples" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "exclusive-maximum" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "exclusive-maximum-value" : {
+ "type" : [ "number", "string" ]
+ },
+ "exclusive-minimum" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "exclusive-minimum-value" : {
+ "type" : [ "number", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.ExternalDocumentation"
+ },
+ "format" : {
+ "type" : "string"
+ },
+ "items" : {
+ "type" : "string"
+ },
+ "json-schema" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "json-schema-impl" : {
+ "type" : "object"
+ },
+ "max-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "maximum" : {
+ "type" : [ "number", "string" ]
+ },
+ "min-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "minimum" : {
+ "type" : [ "number", "string" ]
+ },
+ "multiple-of" : {
+ "type" : [ "number", "string" ]
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "not" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "nullable" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "one-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "pattern" : {
+ "type" : "string"
+ },
+ "pattern-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "prefix-items" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "property-names" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "read-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "required" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "s-c-h-e-m-a_r-e-s-o-l-u-t-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "spec-version" : {
+ "type" : "string",
+ "enum" : [ "V30", "v30", "V31", "v31" ]
+ },
+ "then" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "title" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ },
+ "types" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "unevaluated-items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "unevaluated-properties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "unique-items" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "write-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "xml" : {
+ "type" : "object",
+ "properties" : {
+ "attribute" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "namespace" : {
+ "type" : "string"
+ },
+ "prefix" : {
+ "type" : "string"
+ },
+ "wrapped" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "style" : {
+ "type" : "string",
+ "enum" : [ "simple" ]
+ }
+ }
+ },
+ "org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties:Accesslog" : {
+ "type" : "object",
+ "properties" : {
+ "prefix" : {
+ "type" : "string",
+ "description" : "Management log file name prefix.",
+ "default" : "management_"
+ }
+ }
+ },
+ "org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties" : {
+ "type" : "object",
+ "properties" : {
+ "additional-properties" : {
+ "type" : "object"
+ },
+ "all-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "anchor" : {
+ "type" : "string"
+ },
+ "any-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "comment" : {
+ "type" : "string"
+ },
+ "const-value" : {
+ "type" : "object"
+ },
+ "contains" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "content-encoding" : {
+ "type" : "string"
+ },
+ "content-media-type" : {
+ "type" : "string"
+ },
+ "content-schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "default-value" : {
+ "type" : "object"
+ },
+ "dependent-required" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "dependent-schemas" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "else-schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "enum-values" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "examples" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "exclusive-maximum" : {
+ "type" : [ "number", "string" ]
+ },
+ "exclusive-minimum" : {
+ "type" : [ "number", "string" ]
+ },
+ "format" : {
+ "type" : "string",
+ "enum" : [ "date", "IRI", "idn_email", "IRI_REFERENCE", "EMAIL", "URI", "uuid", "duration", "hostname", "date_time", "ipv4", "IDN_EMAIL", "ipv6", "UUID", "email", "relative_json_pointer", "uri_reference", "json_pointer", "iri", "IPV6", "IPV4", "TIME", "IDN_HOSTNAME", "URI_REFERENCE", "uri", "iri_reference", "DATE", "HOSTNAME", "RELATIVE_JSON_POINTER", "idn_hostname", "DATE_TIME", "time", "JSON_POINTER", "DURATION" ]
+ },
+ "html-description" : {
+ "type" : "string"
+ },
+ "if-schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "max-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "maximum" : {
+ "type" : [ "number", "string" ]
+ },
+ "min-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "minimum" : {
+ "type" : [ "number", "string" ]
+ },
+ "multiple-of" : {
+ "type" : [ "number", "string" ]
+ },
+ "not" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "one-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "pattern" : {
+ "type" : "string"
+ },
+ "pattern-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "prefix-items" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "property-names" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "read-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "reference" : {
+ "type" : "string"
+ },
+ "required-properties" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "then-schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ },
+ "title" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string",
+ "enum" : [ "NUMBER", "ARRAY", "NULL", "string", "integer", "OBJECT", "BOOLEAN", "number", "boolean", "null", "array", "STRING", "INTEGER", "object" ]
+ },
+ "unique-items" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "write-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "x-deprecation" : {
+ "type" : "object",
+ "properties" : {
+ "level" : {
+ "type" : "string"
+ },
+ "reason" : {
+ "type" : "string"
+ },
+ "replacement" : {
+ "type" : "string"
+ },
+ "since" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ },
+ "java.util.regex.Pattern:Node" : {
+ "type" : "object",
+ "properties" : {
+ "next" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.regex.Pattern:Node"
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.OpenAPI" : {
+ "type" : "object",
+ "properties" : {
+ "components" : {
+ "type" : "object",
+ "properties" : {
+ "c-o-m-p-o-n-e-n-t-s_s-c-h-e-m-a-s_r-e-f" : {
+ "type" : "string"
+ },
+ "callbacks" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ },
+ "examples" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.examples.Example"
+ }
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "headers" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.headers.Header"
+ }
+ },
+ "links" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.links.Link"
+ }
+ },
+ "parameters" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "allow-empty-value" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "allow-reserved" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "content" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "example" : {
+ "type" : "object"
+ },
+ "examples" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.examples.Example"
+ }
+ },
+ "explode" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "in" : {
+ "type" : "string"
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "required" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "style" : {
+ "type" : "string",
+ "enum" : [ "pipeDelimited", "spaceDelimited", "spacedelimited", "pipedelimited", "form", "simple", "deepobject", "label", "matrix", "deepObject" ]
+ }
+ }
+ }
+ },
+ "path-items" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "delete" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "get" : {
+ "type" : "object",
+ "properties" : {
+ "callbacks" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.callbacks.Callback"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.ExternalDocumentation"
+ },
+ "operation-id" : {
+ "type" : "string"
+ },
+ "parameters" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.Parameter"
+ }
+ },
+ "request-body" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.RequestBody"
+ },
+ "responses" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "d-e-f-a-u-l-t" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ },
+ "security" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "servers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.servers.Server"
+ }
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "tags" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "head" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "options" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "parameters" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.Parameter"
+ }
+ },
+ "patch" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "post" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "put" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "servers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.servers.Server"
+ }
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "trace" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ }
+ }
+ }
+ },
+ "request-bodies" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "content" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "required" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "responses" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "content" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "headers" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "content" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "example" : {
+ "type" : "object"
+ },
+ "examples" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-value" : {
+ "type" : "string"
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "value" : {
+ "type" : "object"
+ },
+ "value-set-flag" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "explode" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "required" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "schema" : {
+ "type" : "object",
+ "properties" : {
+ "$anchor" : {
+ "type" : "string"
+ },
+ "$comment" : {
+ "type" : "string"
+ },
+ "$dynamic-anchor" : {
+ "type" : "string"
+ },
+ "$id" : {
+ "type" : "string"
+ },
+ "$ref" : {
+ "type" : "string"
+ },
+ "$schema" : {
+ "type" : "string"
+ },
+ "$vocabulary" : {
+ "type" : "string"
+ },
+ "_const" : {
+ "type" : "string"
+ },
+ "_default" : {
+ "type" : "string"
+ },
+ "_else" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "_enum" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "_if" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "a-p-p-l-y_s-c-h-e-m-a_r-e-s-o-l-u-t-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "additional-items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "additional-properties" : {
+ "type" : "object"
+ },
+ "all-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "any-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "b-i-n-a-r-y_s-t-r-i-n-g_c-o-n-v-e-r-s-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "b-i-n-d_t-y-p-e_a-n-d_t-y-p-e-s" : {
+ "type" : "string"
+ },
+ "boolean-schema-value" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "contains" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "content-encoding" : {
+ "type" : "string"
+ },
+ "content-media-type" : {
+ "type" : "string"
+ },
+ "content-schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "dependent-required" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "dependent-schemas" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "discriminator" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "mapping" : {
+ "type" : "object"
+ },
+ "property-name" : {
+ "type" : "string"
+ }
+ }
+ },
+ "example" : {
+ "type" : "string"
+ },
+ "example-set-flag" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "examples" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "exclusive-maximum" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "exclusive-maximum-value" : {
+ "type" : [ "number", "string" ]
+ },
+ "exclusive-minimum" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "exclusive-minimum-value" : {
+ "type" : [ "number", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.ExternalDocumentation"
+ },
+ "format" : {
+ "type" : "string"
+ },
+ "items" : {
+ "type" : "string"
+ },
+ "json-schema" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "json-schema-impl" : {
+ "type" : "object"
+ },
+ "max-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "maximum" : {
+ "type" : [ "number", "string" ]
+ },
+ "min-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "minimum" : {
+ "type" : [ "number", "string" ]
+ },
+ "multiple-of" : {
+ "type" : [ "number", "string" ]
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "not" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "nullable" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "one-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "pattern" : {
+ "type" : "string"
+ },
+ "pattern-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "prefix-items" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "property-names" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "read-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "required" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "s-c-h-e-m-a_r-e-s-o-l-u-t-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "spec-version" : {
+ "type" : "string",
+ "enum" : [ "V30", "v30", "V31", "v31" ]
+ },
+ "then" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "title" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ },
+ "types" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "unevaluated-items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "unevaluated-properties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "unique-items" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "write-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "xml" : {
+ "type" : "object",
+ "properties" : {
+ "attribute" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "namespace" : {
+ "type" : "string"
+ },
+ "prefix" : {
+ "type" : "string"
+ },
+ "wrapped" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "style" : {
+ "type" : "string",
+ "enum" : [ "simple" ]
+ }
+ }
+ }
+ },
+ "links" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "headers" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.headers.Header"
+ }
+ },
+ "operation-id" : {
+ "type" : "string"
+ },
+ "operation-ref" : {
+ "type" : "string"
+ },
+ "parameters" : {
+ "type" : "object"
+ },
+ "request-body" : {
+ "type" : "object"
+ },
+ "server" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.servers.Server"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "schemas" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "security-schemes" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "bearer-format" : {
+ "type" : "string"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "flows" : {
+ "type" : "object",
+ "properties" : {
+ "authorization-code" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.security.OAuthFlow"
+ },
+ "client-credentials" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.security.OAuthFlow"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "implicit" : {
+ "type" : "object",
+ "properties" : {
+ "authorization-url" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "refresh-url" : {
+ "type" : "string"
+ },
+ "scopes" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ },
+ "token-url" : {
+ "type" : "string"
+ }
+ }
+ },
+ "password" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.security.OAuthFlow"
+ }
+ }
+ },
+ "in" : {
+ "type" : "string",
+ "enum" : [ "cookie", "query", "header" ]
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "open-id-connect-url" : {
+ "type" : "string"
+ },
+ "scheme" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string",
+ "enum" : [ "openIdConnect", "apiKey", "apikey", "mutualtls", "mutualTLS", "http", "openidconnect", "oauth2" ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "url" : {
+ "type" : "string"
+ }
+ }
+ },
+ "info" : {
+ "type" : "object",
+ "properties" : {
+ "contact" : {
+ "type" : "object",
+ "properties" : {
+ "email" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "url" : {
+ "type" : "string"
+ }
+ }
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "license" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "identifier" : {
+ "type" : "string"
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "url" : {
+ "type" : "string"
+ }
+ }
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "terms-of-service" : {
+ "type" : "string"
+ },
+ "title" : {
+ "type" : "string"
+ },
+ "version" : {
+ "type" : "string"
+ }
+ }
+ },
+ "json-schema-dialect" : {
+ "type" : "string"
+ },
+ "openapi" : {
+ "type" : "string"
+ },
+ "paths" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ },
+ "security" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "servers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "url" : {
+ "type" : "string"
+ },
+ "variables" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "spec-version" : {
+ "type" : "string",
+ "enum" : [ "V30", "v30", "V31", "v31" ]
+ },
+ "tags" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.ExternalDocumentation"
+ },
+ "name" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "webhooks" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.PathItem"
+ }
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.media.Schema" : {
+ "type" : "object",
+ "properties" : {
+ "$anchor" : {
+ "type" : "string"
+ },
+ "$comment" : {
+ "type" : "string"
+ },
+ "$dynamic-anchor" : {
+ "type" : "string"
+ },
+ "$id" : {
+ "type" : "string"
+ },
+ "$ref" : {
+ "type" : "string"
+ },
+ "$schema" : {
+ "type" : "string"
+ },
+ "$vocabulary" : {
+ "type" : "string"
+ },
+ "_const" : {
+ "type" : "string"
+ },
+ "_default" : {
+ "type" : "string"
+ },
+ "_else" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "_enum" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "_if" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "a-p-p-l-y_s-c-h-e-m-a_r-e-s-o-l-u-t-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "additional-items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "additional-properties" : {
+ "type" : "object"
+ },
+ "all-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "any-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "b-i-n-a-r-y_s-t-r-i-n-g_c-o-n-v-e-r-s-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "b-i-n-d_t-y-p-e_a-n-d_t-y-p-e-s" : {
+ "type" : "string"
+ },
+ "boolean-schema-value" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "contains" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "content-encoding" : {
+ "type" : "string"
+ },
+ "content-media-type" : {
+ "type" : "string"
+ },
+ "content-schema" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "dependent-required" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "dependent-schemas" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "discriminator" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "mapping" : {
+ "type" : "object"
+ },
+ "property-name" : {
+ "type" : "string"
+ }
+ }
+ },
+ "example" : {
+ "type" : "string"
+ },
+ "example-set-flag" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "examples" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "exclusive-maximum" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "exclusive-maximum-value" : {
+ "type" : [ "number", "string" ]
+ },
+ "exclusive-minimum" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "exclusive-minimum-value" : {
+ "type" : [ "number", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.ExternalDocumentation"
+ },
+ "format" : {
+ "type" : "string"
+ },
+ "items" : {
+ "type" : "string"
+ },
+ "json-schema" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "json-schema-impl" : {
+ "type" : "object"
+ },
+ "max-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "maximum" : {
+ "type" : [ "number", "string" ]
+ },
+ "min-contains" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-items" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-properties" : {
+ "type" : [ "integer", "string" ]
+ },
+ "minimum" : {
+ "type" : [ "number", "string" ]
+ },
+ "multiple-of" : {
+ "type" : [ "number", "string" ]
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "not" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "nullable" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "one-of" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "pattern" : {
+ "type" : "string"
+ },
+ "pattern-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "prefix-items" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "property-names" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "read-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "required" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "s-c-h-e-m-a_r-e-s-o-l-u-t-i-o-n_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "spec-version" : {
+ "type" : "string",
+ "enum" : [ "V30", "v30", "V31", "v31" ]
+ },
+ "then" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "title" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ },
+ "types" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "unevaluated-items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "unevaluated-properties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.media.Schema"
+ },
+ "unique-items" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "write-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "xml" : {
+ "type" : "object",
+ "properties" : {
+ "attribute" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "namespace" : {
+ "type" : "string"
+ },
+ "prefix" : {
+ "type" : "string"
+ },
+ "wrapped" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "com.zaxxer.hikari.util.SuspendResumeLock" : {
+ "type" : "object",
+ "properties" : {
+ "acquisition-semaphore" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "sync" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "f-a-u-x_l-o-c-k" : {
+ "type" : "object",
+ "$ref" : "#/$defs/com.zaxxer.hikari.util.SuspendResumeLock"
+ },
+ "m-a-x_p-e-r-m-i-t-s" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ },
+ "org.springframework.boot.web.server.MimeMappings" : {
+ "type" : "object",
+ "properties" : {
+ "d-e-f-a-u-l-t" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.springframework.boot.web.server.MimeMappings"
+ },
+ "map" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "extension" : {
+ "type" : "string"
+ },
+ "mime-type" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.PathItem" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "delete" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "get" : {
+ "type" : "object",
+ "properties" : {
+ "callbacks" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.callbacks.Callback"
+ }
+ },
+ "deprecated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-docs" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.ExternalDocumentation"
+ },
+ "operation-id" : {
+ "type" : "string"
+ },
+ "parameters" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.Parameter"
+ }
+ },
+ "request-body" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.RequestBody"
+ },
+ "responses" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "d-e-f-a-u-l-t" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ },
+ "security" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "servers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.servers.Server"
+ }
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "tags" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "head" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "options" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "parameters" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.parameters.Parameter"
+ }
+ },
+ "patch" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "post" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "put" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ },
+ "servers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.servers.Server"
+ }
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "trace" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.Operation"
+ }
+ }
+ },
+ "org.springframework.boot.autoconfigure.ssl.JksSslBundleProperties:Store" : {
+ "type" : "object",
+ "properties" : {
+ "location" : {
+ "type" : "string"
+ },
+ "password" : {
+ "type" : "string"
+ },
+ "provider" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.examples.Example" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "external-value" : {
+ "type" : "string"
+ },
+ "summary" : {
+ "type" : "string"
+ },
+ "value" : {
+ "type" : "object"
+ },
+ "value-set-flag" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ },
+ "com.zaxxer.hikari.pool.HikariPool:PoolEntryCreator" : {
+ "type" : "object",
+ "properties" : {
+ "logging-prefix" : {
+ "type" : "string"
+ },
+ "this$0" : {
+ "type" : "object",
+ "$ref" : "#/$defs/com.zaxxer.hikari.pool.HikariPool"
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.parameters.RequestBody" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "content" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "required" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ },
+ "org.springframework.boot.autoconfigure.ssl.PemSslBundleProperties:Store" : {
+ "type" : "object",
+ "properties" : {
+ "certificate" : {
+ "type" : "string"
+ },
+ "private-key" : {
+ "type" : "string"
+ },
+ "private-key-password" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ },
+ "verify-keys" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ },
+ "org.springframework.boot.web.server.Ssl" : {
+ "type" : "object",
+ "properties" : {
+ "bundle" : {
+ "type" : "string",
+ "description" : "Name of a configured SSL bundle."
+ },
+ "certificate" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded SSL certificate file."
+ },
+ "certificate-private-key" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded private key file for the SSL certificate."
+ },
+ "ciphers" : {
+ "type" : [ "array", "string" ],
+ "description" : "Supported SSL ciphers.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "client-auth" : {
+ "type" : "string",
+ "description" : "Client authentication mode. Requires a trust store.",
+ "enum" : [ "NEED", "need", "want", "WANT", "none", "NONE" ]
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable SSL support.",
+ "default" : true
+ },
+ "enabled-protocols" : {
+ "type" : [ "array", "string" ],
+ "description" : "Enabled SSL protocols.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "key-alias" : {
+ "type" : "string",
+ "description" : "Alias that identifies the key in the key store."
+ },
+ "key-password" : {
+ "type" : "string",
+ "description" : "Password used to access the key in the key store."
+ },
+ "key-store" : {
+ "type" : "string",
+ "description" : "Path to the key store that holds the SSL certificate (typically a jks file)."
+ },
+ "key-store-password" : {
+ "type" : "string",
+ "description" : "Password used to access the key store."
+ },
+ "key-store-provider" : {
+ "type" : "string",
+ "description" : "Provider for the key store."
+ },
+ "key-store-type" : {
+ "type" : "string",
+ "description" : "Type of the key store."
+ },
+ "protocol" : {
+ "type" : "string",
+ "description" : "SSL protocol to use.",
+ "default" : "TLS"
+ },
+ "server-name-bundles" : {
+ "type" : [ "array", "string" ],
+ "description" : "Mapping of host names to SSL bundles for SNI configuration.",
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "bundle" : {
+ "type" : "string"
+ },
+ "server-name" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "trust-certificate" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded SSL certificate authority file."
+ },
+ "trust-certificate-private-key" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded private key file for the SSL certificate authority."
+ },
+ "trust-store" : {
+ "type" : "string",
+ "description" : "Trust store that holds SSL certificates."
+ },
+ "trust-store-password" : {
+ "type" : "string",
+ "description" : "Password used to access the trust store."
+ },
+ "trust-store-provider" : {
+ "type" : "string",
+ "description" : "Provider for the trust store."
+ },
+ "trust-store-type" : {
+ "type" : "string",
+ "description" : "Type of the trust store."
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.callbacks.Callback" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.ExternalDocumentation" : {
+ "type" : "object",
+ "properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "url" : {
+ "type" : "string"
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.servers.Server" : {
+ "type" : "object",
+ "properties" : {
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "url" : {
+ "type" : "string"
+ },
+ "variables" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.security.OAuthFlow" : {
+ "type" : "object",
+ "properties" : {
+ "authorization-url" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "refresh-url" : {
+ "type" : "string"
+ },
+ "scopes" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ },
+ "token-url" : {
+ "type" : "string"
+ }
+ }
+ },
+ "java.util.regex.Pattern" : {
+ "type" : "object",
+ "properties" : {
+ "$assertions-disabled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "a-l-l_f-l-a-g-s" : {
+ "type" : [ "integer", "string" ]
+ },
+ "accept" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.regex.Pattern:Node"
+ },
+ "buffer" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "c-a-n-o-n_e-q" : {
+ "type" : [ "integer", "string" ]
+ },
+ "c-a-s-e_i-n-s-e-n-s-i-t-i-v-e" : {
+ "type" : [ "integer", "string" ]
+ },
+ "c-o-m-m-e-n-t-s" : {
+ "type" : [ "integer", "string" ]
+ },
+ "capturing-group-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "compiled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "cursor" : {
+ "type" : [ "integer", "string" ]
+ },
+ "d-o-t-a-l-l" : {
+ "type" : [ "integer", "string" ]
+ },
+ "flags" : {
+ "type" : [ "integer", "string" ]
+ },
+ "flags0" : {
+ "type" : [ "integer", "string" ]
+ },
+ "group-nodes" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "has-group-ref" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "has-supplementary" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "l-i-t-e-r-a-l" : {
+ "type" : [ "integer", "string" ]
+ },
+ "last-accept" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.regex.Pattern:Node"
+ },
+ "local-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "local-t-c-n-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "m-a-x_r-e-p-s" : {
+ "type" : [ "integer", "string" ]
+ },
+ "m-u-l-t-i-l-i-n-e" : {
+ "type" : [ "integer", "string" ]
+ },
+ "match-root" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.regex.Pattern:Node"
+ },
+ "named-groups" : {
+ "type" : "object"
+ },
+ "normalized-pattern" : {
+ "type" : "string"
+ },
+ "pattern" : {
+ "type" : "string"
+ },
+ "pattern-length" : {
+ "type" : [ "integer", "string" ]
+ },
+ "predicate" : {
+ "type" : "object"
+ },
+ "root" : {
+ "type" : "object",
+ "properties" : {
+ "next" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.regex.Pattern:Node"
+ }
+ }
+ },
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "temp" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "top-closure-nodes" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.regex.Pattern:Node"
+ }
+ },
+ "u-n-i-c-o-d-e_c-a-s-e" : {
+ "type" : [ "integer", "string" ]
+ },
+ "u-n-i-c-o-d-e_c-h-a-r-a-c-t-e-r_c-l-a-s-s" : {
+ "type" : [ "integer", "string" ]
+ },
+ "u-n-i-x_l-i-n-e-s" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ },
+ "com.zaxxer.hikari.pool.HikariPool" : {
+ "type" : "object",
+ "properties" : {
+ "add-connection-executor" : {
+ "type" : "object",
+ "properties" : {
+ "allow-core-thread-time-out" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "c-o-u-n-t_b-i-t-s" : {
+ "type" : [ "integer", "string" ]
+ },
+ "c-o-u-n-t_m-a-s-k" : {
+ "type" : [ "integer", "string" ]
+ },
+ "completed-task-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "container" : {
+ "type" : "object",
+ "properties" : {
+ "c-l-o-s-e-d" : {
+ "type" : "string"
+ },
+ "closed" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "j-l-a" : {
+ "type" : "object"
+ },
+ "key" : {
+ "type" : "object"
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "v-i-r-t-u-a-l_t-h-r-e-a-d-s" : {
+ "type" : "string"
+ },
+ "virtual-threads" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "core-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "ctl" : {
+ "type" : [ "integer", "string" ]
+ },
+ "default-handler" : {
+ "type" : "object"
+ },
+ "handler" : {
+ "type" : "object"
+ },
+ "keep-alive-time" : {
+ "type" : [ "integer", "string" ]
+ },
+ "largest-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "main-lock" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "sync" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "maximum-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "o-n-l-y_o-n-e" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "r-u-n-n-i-n-g" : {
+ "type" : [ "integer", "string" ]
+ },
+ "s-h-u-t-d-o-w-n" : {
+ "type" : [ "integer", "string" ]
+ },
+ "s-t-o-p" : {
+ "type" : [ "integer", "string" ]
+ },
+ "t-e-r-m-i-n-a-t-e-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "t-i-d-y-i-n-g" : {
+ "type" : [ "integer", "string" ]
+ },
+ "termination" : {
+ "type" : "object"
+ },
+ "thread-factory" : {
+ "type" : "object"
+ },
+ "work-queue" : {
+ "type" : "string"
+ },
+ "workers" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "completed-tasks" : {
+ "type" : [ "integer", "string" ]
+ },
+ "first-task" : {
+ "type" : "string"
+ },
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "this$0" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.concurrent.ThreadPoolExecutor"
+ },
+ "thread" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "alive-bypass-window-ms" : {
+ "type" : [ "integer", "string" ]
+ },
+ "close-connection-executor" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.concurrent.ThreadPoolExecutor"
+ },
+ "connection-bag" : {
+ "type" : "string"
+ },
+ "d-e-a-d_c-o-n-n-e-c-t-i-o-n_m-e-s-s-a-g-e" : {
+ "type" : "string"
+ },
+ "e-v-i-c-t-e-d_c-o-n-n-e-c-t-i-o-n_m-e-s-s-a-g-e" : {
+ "type" : "string"
+ },
+ "house-keeper-task" : {
+ "type" : "string"
+ },
+ "house-keeping-executor-service" : {
+ "type" : "object"
+ },
+ "housekeeping-period-ms" : {
+ "type" : [ "integer", "string" ]
+ },
+ "is-request-boundaries-enabled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "leak-task-factory" : {
+ "type" : "object",
+ "properties" : {
+ "executor-service" : {
+ "type" : "object"
+ },
+ "leak-detection-threshold" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ },
+ "life-time-variance-factor" : {
+ "type" : [ "integer", "string" ]
+ },
+ "p-o-o-l_n-o-r-m-a-l" : {
+ "type" : [ "integer", "string" ]
+ },
+ "p-o-o-l_s-h-u-t-d-o-w-n" : {
+ "type" : [ "integer", "string" ]
+ },
+ "p-o-o-l_s-u-s-p-e-n-d-e-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "pool-entry-creator" : {
+ "type" : "object",
+ "properties" : {
+ "logging-prefix" : {
+ "type" : "string"
+ },
+ "this$0" : {
+ "type" : "object",
+ "$ref" : "#/$defs/com.zaxxer.hikari.pool.HikariPool"
+ }
+ }
+ },
+ "pool-state" : {
+ "type" : [ "integer", "string" ]
+ },
+ "post-fill-pool-entry-creator" : {
+ "type" : "object",
+ "$ref" : "#/$defs/com.zaxxer.hikari.pool.HikariPool:PoolEntryCreator"
+ },
+ "suspend-resume-lock" : {
+ "type" : "object",
+ "properties" : {
+ "acquisition-semaphore" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ },
+ "sync" : {
+ "type" : "object",
+ "properties" : {
+ "serial-version-u-i-d" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "f-a-u-x_l-o-c-k" : {
+ "type" : "object",
+ "$ref" : "#/$defs/com.zaxxer.hikari.util.SuspendResumeLock"
+ },
+ "m-a-x_p-e-r-m-i-t-s" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "io.swagger.v3.oas.models.links.Link" : {
+ "type" : "object",
+ "properties" : {
+ "$ref" : {
+ "type" : "string"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "extensions" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "headers" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.headers.Header"
+ }
+ },
+ "operation-id" : {
+ "type" : "string"
+ },
+ "operation-ref" : {
+ "type" : "string"
+ },
+ "parameters" : {
+ "type" : "object"
+ },
+ "request-body" : {
+ "type" : "object"
+ },
+ "server" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.servers.Server"
+ }
+ }
+ }
+ },
+ "properties" : {
+ "app" : {
+ "type" : "object",
+ "properties" : {
+ "commit" : {
+ "type" : "object",
+ "properties" : {
+ "sha" : {
+ "type" : "string",
+ "default" : "unknown"
+ }
+ }
+ }
+ }
+ },
+ "codebloom" : {
+ "type" : "object",
+ "properties" : {
+ "email" : {
+ "type" : "object",
+ "properties" : {
+ "host" : {
+ "type" : "string"
+ },
+ "password" : {
+ "type" : "string"
+ },
+ "port" : {
+ "type" : "string"
+ },
+ "type" : {
+ "type" : "string"
+ },
+ "username" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ },
+ "ff" : {
+ "type" : "object",
+ "properties" : {
+ "duels" : {
+ "type" : [ "boolean", "string" ],
+ "default" : false
+ },
+ "user-metrics" : {
+ "type" : [ "boolean", "string" ],
+ "default" : false
+ }
+ }
+ },
+ "grpc" : {
+ "type" : "object",
+ "properties" : {
+ "leetcode-auth-service" : {
+ "type" : "object",
+ "properties" : {
+ "host" : {
+ "type" : "string"
+ },
+ "timeout" : {
+ "type" : "string"
+ },
+ "tls" : {
+ "type" : [ "boolean", "string" ],
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "jda" : {
+ "type" : "object",
+ "properties" : {
+ "discord" : {
+ "type" : "object",
+ "properties" : {
+ "patina" : {
+ "type" : "object",
+ "properties" : {
+ "guild-id" : {
+ "type" : [ "integer", "string" ]
+ },
+ "leetcode-channel-id" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ },
+ "reporting" : {
+ "type" : "object",
+ "properties" : {
+ "error" : {
+ "type" : "object",
+ "properties" : {
+ "channel-id" : {
+ "type" : [ "integer", "string" ]
+ },
+ "guild-id" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ },
+ "log" : {
+ "type" : "object",
+ "properties" : {
+ "channel-id" : {
+ "type" : [ "integer", "string" ]
+ },
+ "guild-id" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "token" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ },
+ "json-config-schema" : {
+ "type" : "object",
+ "description" : "JSON Schema configuration properties",
+ "properties" : {
+ "additional-exclude-classes" : {
+ "type" : [ "array", "string" ],
+ "description" : "Additional class names to be excluded from schema generation. This list can be used to specify custom classes that should be excluded beyond the default exclusions. Classes specified here will be combined with the default excludeClasses list.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "additional-properties" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of additional property paths to include",
+ "default" : "logging",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "all-excluded-classes" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "allow-additional-properties" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Allow additional properties not defined in schema, currently not supported by intellij",
+ "default" : "true"
+ },
+ "description" : {
+ "type" : "string",
+ "description" : "Schema description",
+ "default" : "Auto-generated schema from configuration metadata"
+ },
+ "enable-anchor-refs" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable JSON Schema anchor references",
+ "default" : "false"
+ },
+ "enable-definition-refs" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable JSON Schema definition references",
+ "default" : "true"
+ },
+ "exclude-anchors" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of classes to exclude from anchor generation",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "exclude-classes" : {
+ "type" : [ "array", "string" ],
+ "description" : "A list of fully qualified class names that should be excluded from schema generation. By default, includes ObjectMapper and ClassLoader classes to prevent processing of system-level classes that aren't relevant to configuration.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "json-schema-properties-map" : {
+ "type" : "object",
+ "description" : "Map of property names or java objects to their type definitions. Used to store custom type mappings and property configurations that override or extend the default schema generation behavior.",
+ "additionalProperties" : {
+ "$ref" : "#/$defs/org.alexmond.config.json.schema.jsonschemamodel.JsonSchemaProperties"
+ }
+ },
+ "missing-type-log" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable logging for missing type information",
+ "default" : "false"
+ },
+ "schema-id" : {
+ "type" : "string",
+ "description" : "Schema identifier urn, or url",
+ "default" : "urn:uuid:your-schema-id"
+ },
+ "schema-spec" : {
+ "type" : "string",
+ "description" : "JSON Schema specification URL",
+ "default" : "https://json-schema.org/draft/2020-12/schema"
+ },
+ "title" : {
+ "type" : "string",
+ "description" : "Schema title",
+ "default" : "Spring Boot Configuration Properties"
+ },
+ "use-openapi" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable OpenAPI annotations processing",
+ "default" : "true"
+ },
+ "use-validation" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable validation annotations processing",
+ "default" : "true"
+ }
+ }
+ },
+ "logging" : {
+ "type" : "object",
+ "properties" : {
+ "charset" : {
+ "type" : "object",
+ "properties" : {
+ "console" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Charset to use for console output."
+ },
+ "file" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Charset to use for file output."
+ }
+ }
+ },
+ "config" : {
+ "type" : "string",
+ "description" : "Location of the logging configuration file. For instance, `classpath:logback.xml` for Logback."
+ },
+ "exception-conversion-word" : {
+ "type" : "string",
+ "description" : "Conversion word used when logging exceptions.",
+ "default" : "%wEx"
+ },
+ "file" : {
+ "type" : "object",
+ "properties" : {
+ "clean-history-on-start" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to clean the archive log files on startup. Only supported with the default logback setup.",
+ "deprecated" : true,
+ "default" : false,
+ "x-deprecation" : {
+ "replacement" : "logging.logback.rollingpolicy.clean-history-on-start"
+ }
+ },
+ "max-history" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of archive log files to keep. Only supported with the default logback setup.",
+ "deprecated" : true,
+ "default" : 7,
+ "x-deprecation" : {
+ "replacement" : "logging.logback.rollingpolicy.max-history"
+ }
+ },
+ "max-size" : {
+ "type" : "string",
+ "description" : "Maximum log file size. Only supported with the default logback setup.",
+ "deprecated" : true,
+ "default" : "10MB",
+ "x-deprecation" : {
+ "replacement" : "logging.logback.rollingpolicy.max-file-size"
+ }
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "Log file name (for instance, `myapp.log`). Names can be an exact location or relative to the current directory."
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "Location of the log file. For instance, `/var/log`."
+ },
+ "total-size-cap" : {
+ "type" : "string",
+ "description" : "Total size of log backups to be kept. Only supported with the default logback setup.",
+ "deprecated" : true,
+ "default" : "0B",
+ "x-deprecation" : {
+ "replacement" : "logging.logback.rollingpolicy.total-size-cap"
+ }
+ }
+ }
+ },
+ "group" : {
+ "type" : "object",
+ "description" : "Log groups to quickly change multiple loggers at the same time. For instance, `logging.group.db=org.hibernate,org.springframework.jdbc`.",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "include-application-group" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to include the application group in the logs.",
+ "default" : true
+ },
+ "include-application-name" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to include the application name in the logs.",
+ "default" : true
+ },
+ "level" : {
+ "$ref" : "#/$defs/loggerLevelProp",
+ "description" : "Log levels severity mapping. For instance, `logging.level.org.springframework=DEBUG`."
+ },
+ "log4j2" : {
+ "type" : "object",
+ "properties" : {
+ "config" : {
+ "type" : "object",
+ "properties" : {
+ "override" : {
+ "type" : [ "array", "string" ],
+ "description" : "Overriding configuration files used to create a composite configuration. Can be prefixed with 'optional:' to only load the override if it exists.",
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "logback" : {
+ "type" : "object",
+ "properties" : {
+ "rollingpolicy" : {
+ "type" : "object",
+ "properties" : {
+ "clean-history-on-start" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to clean the archive log files on startup.",
+ "default" : false
+ },
+ "file-name-pattern" : {
+ "type" : "string",
+ "description" : "Pattern for rolled-over log file names.",
+ "default" : "${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz"
+ },
+ "max-file-size" : {
+ "type" : "string",
+ "description" : "Maximum log file size.",
+ "default" : "10MB"
+ },
+ "max-history" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of archive log files to keep.",
+ "default" : 7
+ },
+ "total-size-cap" : {
+ "type" : "string",
+ "description" : "Total size of log backups to be kept.",
+ "default" : "0B"
+ }
+ }
+ }
+ }
+ },
+ "pattern" : {
+ "type" : "object",
+ "properties" : {
+ "console" : {
+ "type" : "string",
+ "description" : "Appender pattern for output to the console. Its default value varies according to the logging system."
+ },
+ "correlation" : {
+ "type" : "string",
+ "description" : "Appender pattern for log correlation. Its default value varies according to the logging system."
+ },
+ "dateformat" : {
+ "type" : "string",
+ "description" : "Appender pattern for log date format.",
+ "default" : "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
+ },
+ "file" : {
+ "type" : "string",
+ "description" : "Appender pattern for output to a file. Its default value varies according to the logging system."
+ },
+ "level" : {
+ "type" : "string",
+ "description" : "Appender pattern for log level.",
+ "default" : "%5p"
+ },
+ "rolling-file-name" : {
+ "type" : "string",
+ "description" : "Pattern for rolled-over log file names. Supported only with the default Logback setup.",
+ "deprecated" : true,
+ "default" : "${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz",
+ "x-deprecation" : {
+ "replacement" : "logging.logback.rollingpolicy.file-name-pattern"
+ }
+ }
+ }
+ },
+ "register-shutdown-hook" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Register a shutdown hook for the logging system when it is initialized. Disabled automatically when deployed as a war file.",
+ "default" : true
+ },
+ "structured" : {
+ "type" : "object",
+ "properties" : {
+ "ecs" : {
+ "type" : "object",
+ "properties" : {
+ "service" : {
+ "type" : "object",
+ "properties" : {
+ "environment" : {
+ "type" : "string",
+ "description" : "Structured ECS service environment."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "Structured ECS service name (defaults to 'spring.application.name')."
+ },
+ "node-name" : {
+ "type" : "string",
+ "description" : "Structured ECS service node name."
+ },
+ "version" : {
+ "type" : "string",
+ "description" : "Structured ECS service version (defaults to 'spring.application.version')."
+ }
+ }
+ }
+ }
+ },
+ "format" : {
+ "type" : "object",
+ "properties" : {
+ "console" : {
+ "type" : "string",
+ "description" : "Structured logging format for output to the console. Must be either a format id or a fully qualified class name.",
+ "examples" : [ "ecs", "gelf", "logstash" ]
+ },
+ "file" : {
+ "type" : "string",
+ "description" : "Structured logging format for output to a file. Must be either a format id or a fully qualified class name.",
+ "examples" : [ "ecs", "gelf", "logstash" ]
+ }
+ }
+ },
+ "gelf" : {
+ "type" : "object",
+ "properties" : {
+ "host" : {
+ "type" : "string",
+ "description" : "Structured GELF host (defaults to 'spring.application.name')."
+ },
+ "service" : {
+ "type" : "object",
+ "properties" : {
+ "version" : {
+ "type" : "string",
+ "description" : "Structured GELF service version (defaults to 'spring.application.version')."
+ }
+ }
+ }
+ }
+ },
+ "json" : {
+ "type" : "object",
+ "properties" : {
+ "add" : {
+ "type" : "object",
+ "description" : "Additional members that should be added to structured logging JSON"
+ },
+ "context" : {
+ "type" : "object",
+ "properties" : {
+ "include" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether context data should be included in the JSON."
+ },
+ "prefix" : {
+ "type" : "string",
+ "description" : "The prefix to use when inserting context data."
+ }
+ }
+ },
+ "customizer" : {
+ "type" : [ "array", "string" ],
+ "description" : "Fully qualified class names of StructuredLoggingJsonMembersCustomizer implementations",
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "exclude" : {
+ "type" : [ "array", "string" ],
+ "description" : "Member paths that should be excluded from structured logging JSON",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "include" : {
+ "type" : [ "array", "string" ],
+ "description" : "Member paths that should be included in structured logging JSON",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "rename" : {
+ "type" : "object",
+ "description" : "Mapping between member paths and an alternative name that should be used in structured logging JSON"
+ },
+ "stacktrace" : {
+ "type" : "object",
+ "properties" : {
+ "include-common-frames" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether common frames should be included."
+ },
+ "include-hashes" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether stack trace hashes should be included."
+ },
+ "max-length" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum length to print."
+ },
+ "max-throwable-depth" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum throwable depth to print."
+ },
+ "printer" : {
+ "type" : "string",
+ "description" : "Name of the printer to use. Can be 'standard', 'logging-system', or the fully-qualified class name of a StackTracePrinter. When not specified 'logging-system' or 'standard' will be used depending if other properties are set.",
+ "examples" : [ "standard", "logging-system" ]
+ },
+ "root" : {
+ "type" : "string",
+ "description" : "Root ordering (root first or root last)."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "threshold" : {
+ "type" : "object",
+ "properties" : {
+ "console" : {
+ "$ref" : "#/$defs/loggerLevel",
+ "description" : "Log level threshold for console output.",
+ "default" : "TRACE"
+ },
+ "file" : {
+ "$ref" : "#/$defs/loggerLevel",
+ "description" : "Log level threshold for file output.",
+ "default" : "TRACE"
+ }
+ }
+ }
+ }
+ },
+ "management" : {
+ "type" : "object",
+ "properties" : {
+ "endpoint" : {
+ "type" : "object",
+ "properties" : {
+ "health" : {
+ "type" : "object",
+ "properties" : {
+ "access" : {
+ "type" : "string",
+ "description" : "Permitted level of access for the health endpoint.",
+ "default" : "unrestricted",
+ "enum" : [ "read_only", "UNRESTRICTED", "unrestricted", "none", "NONE", "READ_ONLY" ]
+ },
+ "cache" : {
+ "type" : "object",
+ "properties" : {
+ "time-to-live" : {
+ "type" : "string",
+ "description" : "Maximum time that a response can be cached.",
+ "default" : "0ms"
+ }
+ }
+ },
+ "e-m-p-t-y_p-a-t-h" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the health endpoint.",
+ "deprecated" : true,
+ "default" : true,
+ "x-deprecation" : {
+ "replacement" : "management.endpoint.health.access",
+ "since" : "3.4.0"
+ }
+ },
+ "group" : {
+ "type" : "object",
+ "description" : "Health endpoint groups.",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "additional-path" : {
+ "type" : "string"
+ },
+ "exclude" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "include" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "m-a-n-a-g-e-m-e-n-t_p-r-e-f-i-x" : {
+ "type" : "string"
+ },
+ "s-e-r-v-e-r_p-r-e-f-i-x" : {
+ "type" : "string"
+ },
+ "show-details" : {
+ "type" : "string",
+ "enum" : [ "always", "never", "NEVER", "WHEN_AUTHORIZED", "when_authorized", "ALWAYS" ]
+ }
+ }
+ }
+ },
+ "i-d" : {
+ "type" : "object",
+ "properties" : {
+ "logged-warnings" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "logger" : {
+ "type" : "object"
+ },
+ "lower-case-alpha-numeric" : {
+ "type" : "string"
+ },
+ "lower-case-value" : {
+ "type" : "string"
+ },
+ "m-i-g-r-a-t-e_l-e-g-a-c-y_n-a-m-e-s_p-r-o-p-e-r-t-y" : {
+ "type" : "string"
+ },
+ "v-a-l-i-d_p-a-t-t-e-r-n" : {
+ "$ref" : "#/$defs/java.util.regex.Pattern"
+ },
+ "value" : {
+ "type" : "string"
+ },
+ "w-a-r-n-i-n-g_p-a-t-t-e-r-n" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.util.regex.Pattern"
+ }
+ }
+ },
+ "logging" : {
+ "type" : "object",
+ "properties" : {
+ "slow-indicator-threshold" : {
+ "type" : "string",
+ "description" : "Threshold after which a warning will be logged for slow health indicators.",
+ "default" : "10s"
+ }
+ }
+ },
+ "probes" : {
+ "type" : "object",
+ "properties" : {
+ "add-additional-paths" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to make the liveness and readiness health groups available on the main server port.",
+ "default" : false
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable liveness and readiness probes.",
+ "default" : false
+ }
+ }
+ },
+ "roles" : {
+ "type" : [ "array", "string" ],
+ "description" : "Roles used to determine whether a user is authorized to be shown details. When empty, all authenticated users are authorized.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "show-components" : {
+ "type" : "string",
+ "description" : "When to show components. If not specified the 'show-details' setting will be used.",
+ "enum" : [ "always", "never", "NEVER", "WHEN_AUTHORIZED", "when_authorized", "ALWAYS" ]
+ },
+ "show-details" : {
+ "type" : "string",
+ "description" : "When to show full health details.",
+ "default" : "never",
+ "enum" : [ "always", "never", "NEVER", "WHEN_AUTHORIZED", "when_authorized", "ALWAYS" ]
+ },
+ "status" : {
+ "type" : "object",
+ "properties" : {
+ "http-mapping" : {
+ "type" : "object",
+ "description" : "Mapping of health statuses to HTTP status codes. By default, registered health statuses map to sensible defaults (for example, UP maps to 200)."
+ },
+ "order" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of health statuses in order of severity.",
+ "default" : [ "DOWN", "OUT_OF_SERVICE", "UP", "UNKNOWN" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "validate-group-membership" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to validate health group membership on startup. Validation fails if a group includes or excludes a health contributor that does not exist.",
+ "default" : true
+ }
+ }
+ },
+ "prometheus" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the prometheus endpoint.",
+ "deprecated" : true,
+ "default" : true,
+ "x-deprecation" : {
+ "replacement" : "management.endpoint.prometheus.access",
+ "since" : "3.4.0"
+ }
+ }
+ }
+ }
+ }
+ },
+ "endpoints" : {
+ "type" : "object",
+ "properties" : {
+ "web" : {
+ "type" : "object",
+ "properties" : {
+ "base-path" : {
+ "type" : "string",
+ "description" : "Base path for Web endpoints. Relative to the servlet context path (server.servlet.context-path) or WebFlux base path (spring.webflux.base-path) when the management server is sharing the main server port. Relative to the management server base path (management.server.base-path) when a separate management server port (management.server.port) is configured.",
+ "default" : "/actuator"
+ },
+ "cors" : {
+ "type" : "object",
+ "properties" : {
+ "allow-credentials" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether credentials are supported. When not set, credentials are not supported."
+ },
+ "allowed-headers" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of headers to allow in a request. '*' allows all headers.",
+ "examples" : [ "*" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "allowed-methods" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of methods to allow. '*' allows all methods. When not set, defaults to GET.",
+ "examples" : [ "*" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "allowed-origin-patterns" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of origin patterns to allow. Unlike allowed origins which only supports '*', origin patterns are more flexible (for example 'https://*.example.com') and can be used when credentials are allowed. When no allowed origin patterns or allowed origins are set, CORS support is disabled.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "allowed-origins" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of origins to allow. '*' allows all origins. When credentials are allowed, '*' cannot be used and origin patterns should be configured instead. When no allowed origins or allowed origin patterns are set, CORS support is disabled.",
+ "examples" : [ "*" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "exposed-headers" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of headers to include in a response.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "max-age" : {
+ "type" : "string",
+ "description" : "How long the response from a pre-flight request can be cached by clients. If a duration suffix is not specified, seconds will be used.",
+ "default" : "1800s"
+ }
+ }
+ },
+ "discovery" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the discovery page is enabled.",
+ "default" : true
+ }
+ }
+ },
+ "exposure" : {
+ "type" : "object",
+ "properties" : {
+ "exclude" : {
+ "type" : [ "array", "string" ],
+ "description" : "Endpoint IDs that should be excluded or '*' for all.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "include" : {
+ "type" : [ "array", "string" ],
+ "description" : "Endpoint IDs that should be included or '*' for all.",
+ "default" : [ "health" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "path-mapping" : {
+ "type" : "object",
+ "description" : "Mapping between endpoint IDs and the path that should expose them."
+ }
+ }
+ }
+ }
+ },
+ "health" : {
+ "type" : "object",
+ "properties" : {
+ "db" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable database health check.",
+ "default" : true
+ },
+ "ignore-routing-data-sources" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to ignore AbstractRoutingDataSources when creating database health indicators.",
+ "default" : false
+ }
+ }
+ },
+ "diskspace" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable disk space health check.",
+ "default" : true
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "Path used to compute the available disk space."
+ },
+ "threshold" : {
+ "type" : "string",
+ "description" : "Minimum disk space that should be available.",
+ "default" : "10MB"
+ }
+ }
+ },
+ "ssl" : {
+ "type" : "object",
+ "properties" : {
+ "certificate-validity-warning-threshold" : {
+ "type" : "string",
+ "description" : "If an SSL Certificate will be invalid within the time span defined by this threshold, it should trigger a warning.",
+ "default" : "14d"
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable SSL certificate health check.",
+ "default" : true
+ }
+ }
+ }
+ }
+ },
+ "info" : {
+ "type" : "object",
+ "properties" : {
+ "build" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable build info.",
+ "default" : true
+ }
+ }
+ },
+ "defaults" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable default info contributors.",
+ "default" : true
+ }
+ }
+ },
+ "env" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable environment info.",
+ "default" : false
+ }
+ }
+ },
+ "git" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable git info.",
+ "default" : true
+ },
+ "mode" : {
+ "type" : "string",
+ "description" : "Mode to use to expose git information.",
+ "default" : "simple",
+ "enum" : [ "SIMPLE", "simple", "FULL", "full" ]
+ }
+ }
+ },
+ "java" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable Java info.",
+ "default" : false
+ }
+ }
+ },
+ "os" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable Operating System info.",
+ "default" : false
+ }
+ }
+ },
+ "process" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable process info.",
+ "default" : false
+ }
+ }
+ },
+ "ssl" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable SSL certificate info.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "data" : {
+ "type" : "object",
+ "properties" : {
+ "repository" : {
+ "type" : "object",
+ "properties" : {
+ "autotime" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable auto-timing.",
+ "default" : true
+ },
+ "percentiles" : {
+ "type" : [ "array", "string" ],
+ "description" : "Percentiles for which additional time series should be published.",
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "percentiles-histogram" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to publish percentile histograms.",
+ "default" : false
+ }
+ }
+ },
+ "metric-name" : {
+ "type" : "string",
+ "description" : "Name of the metric for sent requests.",
+ "default" : "spring.data.repository.invocations"
+ }
+ }
+ }
+ }
+ },
+ "distribution" : {
+ "type" : "object",
+ "properties" : {
+ "buffer-length" : {
+ "type" : "object",
+ "description" : "Number of histograms for meter IDs starting with the specified name to keep in the ring buffer. The longest match wins, the key `all` can also be used to configure all meters."
+ },
+ "expiry" : {
+ "type" : "object",
+ "description" : "Maximum amount of time that samples for meter IDs starting with the specified name are accumulated to decaying distribution statistics before they are reset and rotated. The longest match wins, the key `all` can also be used to configure all meters."
+ },
+ "maximum-expected-value" : {
+ "type" : "object",
+ "description" : "Maximum value that meter IDs starting with the specified name are expected to observe. The longest match wins. Values can be specified as a double or as a Duration value (for timer meters, defaulting to ms if no unit specified)."
+ },
+ "minimum-expected-value" : {
+ "type" : "object",
+ "description" : "Minimum value that meter IDs starting with the specified name are expected to observe. The longest match wins. Values can be specified as a double or as a Duration value (for timer meters, defaulting to ms if no unit specified)."
+ },
+ "percentiles" : {
+ "type" : [ "array", "string" ],
+ "description" : "Specific computed non-aggregable percentiles to ship to the backend for meter IDs starting-with the specified name. The longest match wins, the key 'all' can also be used to configure all meters.",
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "percentiles-histogram" : {
+ "type" : "object",
+ "description" : "Whether meter IDs starting with the specified name should publish percentile histograms. For monitoring systems that support aggregable percentile calculation based on a histogram, this can be set to true. For other systems, this has no effect. The longest match wins, the key 'all' can also be used to configure all meters."
+ },
+ "slo" : {
+ "type" : [ "array", "string" ],
+ "description" : "Specific service-level objective boundaries for meter IDs starting with the specified name. The longest match wins. Counters will be published for each specified boundary. Values can be specified as a double or as a Duration value (for timer meters, defaulting to ms if no unit specified).",
+ "items" : {
+ "type" : "object"
+ }
+ }
+ }
+ },
+ "enable" : {
+ "type" : "object",
+ "description" : "Whether meter IDs starting with the specified name should be enabled. The longest match wins, the key 'all' can also be used to configure all meters."
+ },
+ "mongo" : {
+ "type" : "object",
+ "properties" : {
+ "command" : {
+ "type" : "object",
+ "properties" : { }
+ },
+ "connectionpool" : {
+ "type" : "object",
+ "properties" : { }
+ }
+ }
+ },
+ "system" : {
+ "type" : "object",
+ "properties" : {
+ "diskspace" : {
+ "type" : "object",
+ "properties" : {
+ "paths" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of paths to report disk metrics for.",
+ "default" : [ "." ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "tags" : {
+ "type" : "object",
+ "description" : "Common tags that are applied to every meter."
+ },
+ "use-global-registry" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether auto-configured MeterRegistry implementations should be bound to the global static registry on Metrics. For testing, set this to 'false' to maximize test independence.",
+ "default" : true
+ },
+ "web" : {
+ "type" : "object",
+ "properties" : {
+ "client" : {
+ "type" : "object",
+ "properties" : {
+ "max-uri-tags" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of unique URI tag values allowed. After the max number of tag values is reached, metrics with additional tag values are denied by filter.",
+ "default" : 100
+ }
+ }
+ },
+ "server" : {
+ "type" : "object",
+ "properties" : {
+ "max-uri-tags" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of unique URI tag values allowed. After the max number of tag values is reached, metrics with additional tag values are denied by filter.",
+ "default" : 100
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "observations" : {
+ "type" : "object",
+ "properties" : {
+ "annotations" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether auto-configuration of Micrometer annotations is enabled.",
+ "default" : false
+ }
+ }
+ },
+ "enable" : {
+ "type" : "object",
+ "description" : "Whether observations starting with the specified name should be enabled. The longest match wins, the key 'all' can also be used to configure all observations."
+ },
+ "http" : {
+ "type" : "object",
+ "properties" : {
+ "client" : {
+ "type" : "object",
+ "properties" : {
+ "requests" : {
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "type" : "string",
+ "description" : "Name of the observation for client requests.",
+ "default" : "http.client.requests"
+ }
+ }
+ }
+ }
+ },
+ "server" : {
+ "type" : "object",
+ "properties" : {
+ "requests" : {
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "type" : "string",
+ "description" : "Name of the observation for server requests.",
+ "default" : "http.server.requests"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "key-values" : {
+ "type" : "object",
+ "description" : "Common key-values that are applied to every observation."
+ },
+ "long-task-timer" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to create a LongTaskTimer for every observation.",
+ "default" : true
+ }
+ }
+ },
+ "r2dbc" : {
+ "type" : "object",
+ "properties" : {
+ "include-parameter-values" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to tag actual query parameter values.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "prometheus" : {
+ "type" : "object",
+ "properties" : {
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "export" : {
+ "type" : "object",
+ "properties" : {
+ "descriptions" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable publishing descriptions as part of the scrape payload to Prometheus. Turn this off to minimize the amount of data sent on each scrape.",
+ "default" : true
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether exporting of metrics to this backend is enabled.",
+ "default" : true
+ },
+ "properties" : {
+ "type" : "object",
+ "description" : "Additional properties to pass to the Prometheus client."
+ },
+ "pushgateway" : {
+ "type" : "object",
+ "properties" : {
+ "address" : {
+ "type" : "string",
+ "description" : "Address (host:port) for the Pushgateway.",
+ "default" : "localhost:9091"
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable publishing over a Prometheus Pushgateway.",
+ "default" : false
+ },
+ "format" : {
+ "type" : "string",
+ "description" : "Format to use when pushing metrics.",
+ "default" : "protobuf",
+ "enum" : [ "protobuf", "TEXT", "text", "PROTOBUF" ]
+ },
+ "grouping-key" : {
+ "type" : "object",
+ "description" : "Grouping key for the pushed metrics."
+ },
+ "job" : {
+ "type" : "string",
+ "description" : "Job identifier for this application instance."
+ },
+ "password" : {
+ "type" : "string",
+ "description" : "Login password of the Prometheus Pushgateway."
+ },
+ "push-rate" : {
+ "type" : "string",
+ "description" : "Frequency with which to push metrics.",
+ "default" : "1m"
+ },
+ "scheme" : {
+ "type" : "string",
+ "description" : "Scheme to use when pushing metrics.",
+ "default" : "http",
+ "enum" : [ "HTTPS", "http", "HTTP", "https" ]
+ },
+ "shutdown-operation" : {
+ "type" : "string",
+ "description" : "Operation that should be performed on shutdown.",
+ "default" : "none",
+ "enum" : [ "DELETE", "post", "POST", "none", "NONE", "delete", "PUT", "put" ]
+ },
+ "token" : {
+ "type" : "string",
+ "description" : "Token to use for authentication with the Prometheus Pushgateway."
+ },
+ "username" : {
+ "type" : "string",
+ "description" : "Login user of the Prometheus Pushgateway."
+ }
+ }
+ },
+ "step" : {
+ "type" : "string",
+ "description" : "Step size (i.e. reporting frequency) to use.",
+ "default" : "1m"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "server" : {
+ "type" : "object",
+ "properties" : {
+ "add-application-context-header" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Add the \"X-Application-Context\" HTTP header in each response.",
+ "default" : false
+ },
+ "address" : {
+ "type" : "string",
+ "description" : "Network address to which the management endpoints should bind. Requires a custom management.server.port."
+ },
+ "base-path" : {
+ "type" : "string",
+ "description" : "Management endpoint base path (for instance, '/management'). Requires a custom management.server.port.",
+ "default" : ""
+ },
+ "jetty" : {
+ "type" : "object",
+ "properties" : {
+ "accesslog" : {
+ "$ref" : "#/$defs/org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties:Accesslog"
+ }
+ }
+ },
+ "port" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Management endpoint HTTP port (uses the same port as the application by default). Configure a different port to use management-specific SSL."
+ },
+ "ssl" : {
+ "$ref" : "#/$defs/org.springframework.boot.web.server.Ssl"
+ },
+ "tomcat" : {
+ "type" : "object",
+ "properties" : {
+ "accesslog" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties:Accesslog",
+ "properties" : {
+ "prefix" : {
+ "type" : "string",
+ "description" : "Management log file name prefix.",
+ "default" : "management_"
+ }
+ }
+ }
+ }
+ },
+ "undertow" : {
+ "type" : "object",
+ "properties" : {
+ "accesslog" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.springframework.boot.actuate.autoconfigure.web.server.ManagementServerProperties:Accesslog",
+ "properties" : {
+ "prefix" : {
+ "type" : "string",
+ "description" : "Management log file name prefix.",
+ "default" : "management_"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "resilience4j" : {
+ "type" : "object",
+ "properties" : {
+ "bulkhead" : {
+ "type" : "object",
+ "properties" : {
+ "backends" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-concurrent-calls" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-wait-duration" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "configs" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-concurrent-calls" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-wait-duration" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "instances" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-concurrent-calls" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-wait-duration" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the bulkhead-metrics.",
+ "default" : "true"
+ },
+ "legacy" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the legacy-bulkhead-metrics.",
+ "default" : "false"
+ }
+ }
+ }
+ }
+ },
+ "tags" : {
+ "type" : "object"
+ }
+ }
+ },
+ "circuitbreaker" : {
+ "type" : "object",
+ "properties" : {
+ "backends" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "allow-health-indicator-to-fail" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "automatic-transition-from-open-to-half-open-enabled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "base-config" : {
+ "type" : "string"
+ },
+ "enable-exponential-backoff" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enable-randomized-wait" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "exponential-backoff-multiplier" : {
+ "type" : [ "number", "string" ]
+ },
+ "exponential-max-wait-duration-in-open-state" : {
+ "type" : "string"
+ },
+ "failure-rate-threshold" : {
+ "type" : [ "number", "string" ]
+ },
+ "ignore-class-binding-exceptions" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "ignore-exception-predicate" : {
+ "type" : "string"
+ },
+ "ignore-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "max-wait-duration-in-half-open-state" : {
+ "type" : "string"
+ },
+ "minimum-number-of-calls" : {
+ "type" : [ "integer", "string" ]
+ },
+ "permitted-number-of-calls-in-half-open-state" : {
+ "type" : [ "integer", "string" ]
+ },
+ "randomized-wait-factor" : {
+ "type" : [ "number", "string" ]
+ },
+ "record-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "record-failure-predicate" : {
+ "type" : "string"
+ },
+ "record-result-predicate" : {
+ "type" : "string"
+ },
+ "register-health-indicator" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "sliding-window-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "sliding-window-type" : {
+ "type" : "string",
+ "enum" : [ "count_based", "COUNT_BASED", "TIME_BASED", "time_based" ]
+ },
+ "slow-call-duration-threshold" : {
+ "type" : "string"
+ },
+ "slow-call-rate-threshold" : {
+ "type" : [ "number", "string" ]
+ },
+ "wait-duration-in-open-state" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "circuit-breaker-aspect-order" : {
+ "type" : [ "integer", "string" ]
+ },
+ "configs" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "allow-health-indicator-to-fail" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "automatic-transition-from-open-to-half-open-enabled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "base-config" : {
+ "type" : "string"
+ },
+ "enable-exponential-backoff" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enable-randomized-wait" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "exponential-backoff-multiplier" : {
+ "type" : [ "number", "string" ]
+ },
+ "exponential-max-wait-duration-in-open-state" : {
+ "type" : "string"
+ },
+ "failure-rate-threshold" : {
+ "type" : [ "number", "string" ]
+ },
+ "ignore-class-binding-exceptions" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "ignore-exception-predicate" : {
+ "type" : "string"
+ },
+ "ignore-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "max-wait-duration-in-half-open-state" : {
+ "type" : "string"
+ },
+ "minimum-number-of-calls" : {
+ "type" : [ "integer", "string" ]
+ },
+ "permitted-number-of-calls-in-half-open-state" : {
+ "type" : [ "integer", "string" ]
+ },
+ "randomized-wait-factor" : {
+ "type" : [ "number", "string" ]
+ },
+ "record-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "record-failure-predicate" : {
+ "type" : "string"
+ },
+ "record-result-predicate" : {
+ "type" : "string"
+ },
+ "register-health-indicator" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "sliding-window-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "sliding-window-type" : {
+ "type" : "string",
+ "enum" : [ "count_based", "COUNT_BASED", "TIME_BASED", "time_based" ]
+ },
+ "slow-call-duration-threshold" : {
+ "type" : "string"
+ },
+ "slow-call-rate-threshold" : {
+ "type" : [ "number", "string" ]
+ },
+ "wait-duration-in-open-state" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "instances" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "allow-health-indicator-to-fail" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "automatic-transition-from-open-to-half-open-enabled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "base-config" : {
+ "type" : "string"
+ },
+ "enable-exponential-backoff" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enable-randomized-wait" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "exponential-backoff-multiplier" : {
+ "type" : [ "number", "string" ]
+ },
+ "exponential-max-wait-duration-in-open-state" : {
+ "type" : "string"
+ },
+ "failure-rate-threshold" : {
+ "type" : [ "number", "string" ]
+ },
+ "ignore-class-binding-exceptions" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "ignore-exception-predicate" : {
+ "type" : "string"
+ },
+ "ignore-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "max-wait-duration-in-half-open-state" : {
+ "type" : "string"
+ },
+ "minimum-number-of-calls" : {
+ "type" : [ "integer", "string" ]
+ },
+ "permitted-number-of-calls-in-half-open-state" : {
+ "type" : [ "integer", "string" ]
+ },
+ "randomized-wait-factor" : {
+ "type" : [ "number", "string" ]
+ },
+ "record-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "record-failure-predicate" : {
+ "type" : "string"
+ },
+ "record-result-predicate" : {
+ "type" : "string"
+ },
+ "register-health-indicator" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "sliding-window-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "sliding-window-type" : {
+ "type" : "string",
+ "enum" : [ "count_based", "COUNT_BASED", "TIME_BASED", "time_based" ]
+ },
+ "slow-call-duration-threshold" : {
+ "type" : "string"
+ },
+ "slow-call-rate-threshold" : {
+ "type" : [ "number", "string" ]
+ },
+ "wait-duration-in-open-state" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the circuitbreaker-metrics.",
+ "default" : "true"
+ },
+ "legacy" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the legacy-circuitbreaker-metrics.",
+ "default" : "false"
+ }
+ }
+ }
+ }
+ },
+ "tags" : {
+ "type" : "object"
+ }
+ }
+ },
+ "micrometer" : {
+ "type" : "object",
+ "properties" : {
+ "timer" : {
+ "type" : "object",
+ "properties" : {
+ "configs" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "metric-names" : {
+ "type" : "string"
+ },
+ "on-failure-tag-resolver" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "instances" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "metric-names" : {
+ "type" : "string"
+ },
+ "on-failure-tag-resolver" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "tags" : {
+ "type" : "object"
+ },
+ "timer-aspect-order" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "ratelimiter" : {
+ "type" : "object",
+ "properties" : {
+ "configs" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "allow-health-indicator-to-fail" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "limit-for-period" : {
+ "type" : [ "integer", "string" ]
+ },
+ "limit-refresh-period" : {
+ "type" : "string"
+ },
+ "register-health-indicator" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "subscribe-for-events" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "timeout-duration" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "instances" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "allow-health-indicator-to-fail" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "limit-for-period" : {
+ "type" : [ "integer", "string" ]
+ },
+ "limit-refresh-period" : {
+ "type" : "string"
+ },
+ "register-health-indicator" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "subscribe-for-events" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "timeout-duration" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "limiters" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "allow-health-indicator-to-fail" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "base-config" : {
+ "type" : "string"
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "limit-for-period" : {
+ "type" : [ "integer", "string" ]
+ },
+ "limit-refresh-period" : {
+ "type" : "string"
+ },
+ "register-health-indicator" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "subscribe-for-events" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "timeout-duration" : {
+ "type" : "string"
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the ratelimiter-metrics.",
+ "default" : "true"
+ },
+ "legacy" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the legacy-ratelimiter-metrics.",
+ "default" : "false"
+ }
+ }
+ }
+ }
+ },
+ "rate-limiter-aspect-order" : {
+ "type" : [ "integer", "string" ]
+ },
+ "tags" : {
+ "type" : "object"
+ }
+ }
+ },
+ "retry" : {
+ "type" : "object",
+ "properties" : {
+ "backends" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "consume-result-before-retry-attempt" : {
+ "type" : "string"
+ },
+ "enable-exponential-backoff" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enable-randomized-wait" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "exponential-backoff-multiplier" : {
+ "type" : [ "number", "string" ]
+ },
+ "exponential-max-wait-duration" : {
+ "type" : "string"
+ },
+ "fail-after-max-attempts" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "ignore-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "interval-bi-function" : {
+ "type" : "string"
+ },
+ "max-attempts" : {
+ "type" : [ "integer", "string" ]
+ },
+ "randomized-wait-factor" : {
+ "type" : [ "number", "string" ]
+ },
+ "result-predicate" : {
+ "type" : "string"
+ },
+ "retry-exception-predicate" : {
+ "type" : "string"
+ },
+ "retry-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "wait-duration" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "configs" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "consume-result-before-retry-attempt" : {
+ "type" : "string"
+ },
+ "enable-exponential-backoff" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enable-randomized-wait" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "exponential-backoff-multiplier" : {
+ "type" : [ "number", "string" ]
+ },
+ "exponential-max-wait-duration" : {
+ "type" : "string"
+ },
+ "fail-after-max-attempts" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "ignore-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "interval-bi-function" : {
+ "type" : "string"
+ },
+ "max-attempts" : {
+ "type" : [ "integer", "string" ]
+ },
+ "randomized-wait-factor" : {
+ "type" : [ "number", "string" ]
+ },
+ "result-predicate" : {
+ "type" : "string"
+ },
+ "retry-exception-predicate" : {
+ "type" : "string"
+ },
+ "retry-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "wait-duration" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "instances" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "consume-result-before-retry-attempt" : {
+ "type" : "string"
+ },
+ "enable-exponential-backoff" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enable-randomized-wait" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "exponential-backoff-multiplier" : {
+ "type" : [ "number", "string" ]
+ },
+ "exponential-max-wait-duration" : {
+ "type" : "string"
+ },
+ "fail-after-max-attempts" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "ignore-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "interval-bi-function" : {
+ "type" : "string"
+ },
+ "max-attempts" : {
+ "type" : [ "integer", "string" ]
+ },
+ "randomized-wait-factor" : {
+ "type" : [ "number", "string" ]
+ },
+ "result-predicate" : {
+ "type" : "string"
+ },
+ "retry-exception-predicate" : {
+ "type" : "string"
+ },
+ "retry-exceptions" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "wait-duration" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the retry-metrics.",
+ "default" : "true"
+ },
+ "legacy" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the legacy-retry-metrics.",
+ "default" : "false"
+ }
+ }
+ }
+ }
+ },
+ "retry-aspect-order" : {
+ "type" : [ "integer", "string" ]
+ },
+ "tags" : {
+ "type" : "object"
+ }
+ }
+ },
+ "thread-pool-bulkhead" : {
+ "type" : "object",
+ "properties" : {
+ "backends" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "context-propagators" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "core-thread-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "keep-alive-duration" : {
+ "type" : "string"
+ },
+ "max-thread-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "queue-capacity" : {
+ "type" : [ "integer", "string" ]
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "configs" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "context-propagators" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "core-thread-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "keep-alive-duration" : {
+ "type" : "string"
+ },
+ "max-thread-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "queue-capacity" : {
+ "type" : [ "integer", "string" ]
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "instances" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "context-propagators" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object"
+ }
+ },
+ "core-thread-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "keep-alive-duration" : {
+ "type" : "string"
+ },
+ "max-thread-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "queue-capacity" : {
+ "type" : [ "integer", "string" ]
+ },
+ "writable-stack-trace-enabled" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ }
+ },
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the thread-pool-bulkhead-metrics.",
+ "default" : "true"
+ },
+ "legacy" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the legacy-thread-pool-bulkhead-metrics.",
+ "default" : "false"
+ }
+ }
+ }
+ }
+ },
+ "tags" : {
+ "type" : "object"
+ }
+ }
+ },
+ "timelimiter" : {
+ "type" : "object",
+ "properties" : {
+ "configs" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "cancel-running-future" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "timeout-duration" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "instances" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "base-config" : {
+ "type" : "string"
+ },
+ "cancel-running-future" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "event-consumer-buffer-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "timeout-duration" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "metrics" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the timelimiter-metrics.",
+ "default" : "true"
+ },
+ "legacy" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the legacy-timelimiter-metrics.",
+ "default" : "false"
+ }
+ }
+ }
+ }
+ },
+ "tags" : {
+ "type" : "object"
+ },
+ "time-limiter-aspect-order" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ }
+ }
+ },
+ "secret" : {
+ "type" : "object",
+ "properties" : {
+ "key" : {
+ "type" : "string"
+ }
+ }
+ },
+ "server" : {
+ "type" : "object",
+ "properties" : {
+ "address" : {
+ "type" : "string",
+ "description" : "Network address to which the server should bind."
+ },
+ "compression" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether response compression is enabled.",
+ "default" : false
+ },
+ "excluded-user-agents" : {
+ "type" : [ "array", "string" ],
+ "description" : "Comma-separated list of user agents for which responses should not be compressed.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "mime-types" : {
+ "type" : [ "array", "string" ],
+ "description" : "Comma-separated list of MIME types that should be compressed.",
+ "default" : [ "text/html", "text/xml", "text/plain", "text/css", "text/javascript", "application/javascript", "application/json", "application/xml" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "min-response-size" : {
+ "type" : "string",
+ "description" : "Minimum \"Content-Length\" value that is required for compression to be performed.",
+ "default" : "2KB"
+ }
+ }
+ },
+ "error" : {
+ "type" : "object",
+ "properties" : {
+ "include-binding-errors" : {
+ "type" : "string",
+ "description" : "When to include \"errors\" attribute.",
+ "default" : "never",
+ "enum" : [ "always", "never", "NEVER", "ON_PARAM", "on_param", "ALWAYS" ]
+ },
+ "include-exception" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Include the \"exception\" attribute.",
+ "default" : false
+ },
+ "include-message" : {
+ "type" : "string",
+ "description" : "When to include \"message\" attribute.",
+ "default" : "never",
+ "enum" : [ "always", "never", "NEVER", "ON_PARAM", "on_param", "ALWAYS" ]
+ },
+ "include-path" : {
+ "type" : "string",
+ "description" : "When to include \"path\" attribute.",
+ "default" : "always",
+ "enum" : [ "always", "never", "NEVER", "ON_PARAM", "on_param", "ALWAYS" ]
+ },
+ "include-stacktrace" : {
+ "type" : "string",
+ "description" : "When to include the \"trace\" attribute.",
+ "default" : "never",
+ "enum" : [ "always", "never", "NEVER", "ON_PARAM", "on_param", "ALWAYS" ]
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "Path of the error controller.",
+ "default" : "/error"
+ },
+ "whitelabel" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the default error page displayed in browsers in case of a server error.",
+ "default" : true
+ }
+ }
+ }
+ }
+ },
+ "forward-headers-strategy" : {
+ "type" : "string",
+ "description" : "Strategy for handling X-Forwarded-* headers.",
+ "enum" : [ "NATIVE", "framework", "native", "FRAMEWORK", "none", "NONE" ]
+ },
+ "http2" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable HTTP/2 support, if the current environment supports it.",
+ "default" : false
+ }
+ }
+ },
+ "jetty" : {
+ "type" : "object",
+ "properties" : {
+ "accesslog" : {
+ "type" : "object",
+ "properties" : {
+ "append" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Append to log.",
+ "default" : false
+ },
+ "custom-format" : {
+ "type" : "string",
+ "description" : "Custom log format, see org.eclipse.jetty.server.CustomRequestLog. If defined, overrides the \"format\" configuration key."
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable access log.",
+ "default" : false
+ },
+ "file-date-format" : {
+ "type" : "string",
+ "description" : "Date format to place in log file name."
+ },
+ "filename" : {
+ "type" : "string",
+ "description" : "Log filename. If not specified, logs redirect to \"System.err\"."
+ },
+ "format" : {
+ "type" : "string",
+ "description" : "Log format.",
+ "default" : "ncsa",
+ "enum" : [ "ncsa", "EXTENDED_NCSA", "NCSA", "extended_ncsa" ]
+ },
+ "ignore-paths" : {
+ "type" : [ "array", "string" ],
+ "description" : "Request paths that should not be logged.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "retention-period" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Number of days before rotated log files are deleted.",
+ "default" : 31
+ }
+ }
+ },
+ "connection-idle-timeout" : {
+ "type" : "string",
+ "description" : "Time that the connection can be idle before it is closed."
+ },
+ "max-connections" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of connections that the server accepts and processes at any given time.",
+ "default" : -1
+ },
+ "max-form-keys" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of form keys.",
+ "default" : 1000
+ },
+ "max-http-form-post-size" : {
+ "type" : "string",
+ "description" : "Maximum size of the form content in any HTTP post request.",
+ "default" : "200000B"
+ },
+ "max-http-response-header-size" : {
+ "type" : "string",
+ "description" : "Maximum size of the HTTP response header.",
+ "default" : "8KB"
+ },
+ "threads" : {
+ "type" : "object",
+ "properties" : {
+ "acceptors" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Number of acceptor threads to use. When the value is -1, the default, the number of acceptors is derived from the operating environment.",
+ "default" : -1
+ },
+ "idle-timeout" : {
+ "type" : "string",
+ "description" : "Maximum thread idle time.",
+ "default" : "60000ms"
+ },
+ "max" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of threads. Doesn't have an effect if virtual threads are enabled.",
+ "default" : 200
+ },
+ "max-queue-capacity" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum capacity of the thread pool's backing queue. A default is computed based on the threading configuration."
+ },
+ "min" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Minimum number of threads. Doesn't have an effect if virtual threads are enabled.",
+ "default" : 8
+ },
+ "selectors" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Number of selector threads to use. When the value is -1, the default, the number of selectors is derived from the operating environment.",
+ "default" : -1
+ }
+ }
+ }
+ }
+ },
+ "max-http-request-header-size" : {
+ "type" : "string",
+ "description" : "Maximum size of the HTTP request header. Refer to the documentation for your chosen embedded server for details of exactly how this limit is applied. For example, Netty applies the limit separately to each individual header in the request whereas Tomcat applies the limit to the combined size of the request line and all of the header names and values in the request.",
+ "default" : "8KB"
+ },
+ "mime-mappings" : {
+ "$ref" : "#/$defs/org.springframework.boot.web.server.MimeMappings"
+ },
+ "netty" : {
+ "type" : "object",
+ "properties" : {
+ "connection-timeout" : {
+ "type" : "string",
+ "description" : "Connection timeout of the Netty channel."
+ },
+ "h2c-max-content-length" : {
+ "type" : "string",
+ "description" : "Maximum content length of an H2C upgrade request.",
+ "default" : "0B"
+ },
+ "idle-timeout" : {
+ "type" : "string",
+ "description" : "Idle timeout of the Netty channel. When not specified, an infinite timeout is used."
+ },
+ "initial-buffer-size" : {
+ "type" : "string",
+ "description" : "Initial buffer size for HTTP request decoding.",
+ "default" : "128B"
+ },
+ "max-initial-line-length" : {
+ "type" : "string",
+ "description" : "Maximum length that can be decoded for an HTTP request's initial line.",
+ "default" : "4KB"
+ },
+ "max-keep-alive-requests" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of requests that can be made per connection. By default, a connection serves unlimited number of requests."
+ },
+ "validate-headers" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to validate headers when decoding requests.",
+ "default" : true
+ }
+ }
+ },
+ "port" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Server HTTP port.",
+ "default" : 8080
+ },
+ "reactive" : {
+ "type" : "object",
+ "properties" : {
+ "session" : {
+ "type" : "object",
+ "properties" : {
+ "cookie" : {
+ "type" : "object",
+ "properties" : {
+ "domain" : {
+ "type" : "string",
+ "description" : "Domain for the cookie."
+ },
+ "http-only" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to use \"HttpOnly\" cookies for the cookie."
+ },
+ "max-age" : {
+ "type" : "string",
+ "description" : "Maximum age of the cookie. If a duration suffix is not specified, seconds will be used. A positive value indicates when the cookie expires relative to the current time. A value of 0 means the cookie should expire immediately. A negative value means no \"Max-Age\"."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "Name for the cookie."
+ },
+ "partitioned" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the generated cookie carries the Partitioned attribute."
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "Path of the cookie."
+ },
+ "same-site" : {
+ "type" : "string",
+ "description" : "SameSite setting for the cookie.",
+ "enum" : [ "STRICT", "LAX", "lax", "OMITTED", "omitted", "none", "NONE", "strict" ]
+ },
+ "secure" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to always mark the cookie as secure."
+ }
+ }
+ },
+ "max-sessions" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of sessions that can be stored.",
+ "default" : 10000
+ },
+ "timeout" : {
+ "type" : "string",
+ "description" : "Session timeout. If a duration suffix is not specified, seconds will be used.",
+ "default" : "30m"
+ }
+ }
+ }
+ }
+ },
+ "server-header" : {
+ "type" : "string",
+ "description" : "Value to use for the Server response header (if empty, no header is sent)."
+ },
+ "servlet" : {
+ "type" : "object",
+ "properties" : {
+ "application-display-name" : {
+ "type" : "string",
+ "description" : "Display name of the application.",
+ "default" : "application"
+ },
+ "context-parameters" : {
+ "type" : "object",
+ "description" : "Servlet context init parameters."
+ },
+ "context-path" : {
+ "type" : "string",
+ "description" : "Context path of the application."
+ },
+ "encoding" : {
+ "type" : "object",
+ "properties" : {
+ "charset" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Charset of HTTP requests and responses. Added to the \"Content-Type\" header if not set explicitly.",
+ "default" : "UTF-8"
+ },
+ "d-e-f-a-u-l-t_c-h-a-r-s-e-t" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset"
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable http encoding support.",
+ "default" : true
+ },
+ "force" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to force the encoding to the configured charset on HTTP requests and responses."
+ },
+ "force-request" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to force the encoding to the configured charset on HTTP requests. Defaults to true when \"force\" has not been specified."
+ },
+ "force-response" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to force the encoding to the configured charset on HTTP responses."
+ },
+ "mapping" : {
+ "type" : "object",
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Mapping of locale to charset for response encoding."
+ }
+ }
+ },
+ "jsp" : {
+ "type" : "object",
+ "properties" : {
+ "class-name" : {
+ "type" : "string",
+ "description" : "Class name of the servlet to use for JSPs. If registered is true and this class\n\t * is on the classpath then it will be registered.",
+ "default" : "org.apache.jasper.servlet.JspServlet"
+ },
+ "init-parameters" : {
+ "type" : "object",
+ "description" : "Init parameters used to configure the JSP servlet."
+ },
+ "registered" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the JSP servlet is registered.",
+ "default" : true
+ }
+ }
+ },
+ "register-default-servlet" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to register the default Servlet with the container.",
+ "default" : false
+ },
+ "session" : {
+ "type" : "object",
+ "properties" : {
+ "cookie" : {
+ "type" : "object",
+ "properties" : {
+ "domain" : {
+ "type" : "string",
+ "description" : "Domain for the cookie."
+ },
+ "http-only" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to use \"HttpOnly\" cookies for the cookie."
+ },
+ "max-age" : {
+ "type" : "string",
+ "description" : "Maximum age of the cookie. If a duration suffix is not specified, seconds will be used. A positive value indicates when the cookie expires relative to the current time. A value of 0 means the cookie should expire immediately. A negative value means no \"Max-Age\"."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "Name of the cookie."
+ },
+ "partitioned" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the generated cookie carries the Partitioned attribute."
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "Path of the cookie."
+ },
+ "same-site" : {
+ "type" : "string",
+ "description" : "SameSite setting for the cookie.",
+ "enum" : [ "STRICT", "LAX", "lax", "OMITTED", "omitted", "none", "NONE", "strict" ]
+ },
+ "secure" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to always mark the cookie as secure."
+ }
+ }
+ },
+ "persistent" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to persist session data between restarts.",
+ "default" : false
+ },
+ "session-store-directory" : {
+ "type" : "object",
+ "properties" : {
+ "directory" : {
+ "type" : "string"
+ }
+ }
+ },
+ "store-dir" : {
+ "type" : "string",
+ "description" : "Directory used to store session data."
+ },
+ "timeout" : {
+ "type" : "string",
+ "description" : "Session timeout. If a duration suffix is not specified, seconds will be used.",
+ "default" : "30m"
+ },
+ "tracking-modes" : {
+ "type" : [ "array", "string" ],
+ "description" : "Session tracking modes.",
+ "items" : {
+ "type" : "string",
+ "enum" : [ "cookie", "COOKIE", "SSL", "ssl", "URL", "url" ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "shutdown" : {
+ "type" : "string",
+ "description" : "Type of shutdown that the server will support.",
+ "default" : "graceful",
+ "enum" : [ "immediate", "GRACEFUL", "graceful", "IMMEDIATE" ]
+ },
+ "ssl" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.springframework.boot.web.server.Ssl",
+ "properties" : {
+ "bundle" : {
+ "type" : "string",
+ "description" : "Name of a configured SSL bundle."
+ },
+ "certificate" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded SSL certificate file."
+ },
+ "certificate-private-key" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded private key file for the SSL certificate."
+ },
+ "ciphers" : {
+ "type" : [ "array", "string" ],
+ "description" : "Supported SSL ciphers.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "client-auth" : {
+ "type" : "string",
+ "description" : "Client authentication mode. Requires a trust store.",
+ "enum" : [ "NEED", "need", "want", "WANT", "none", "NONE" ]
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable SSL support.",
+ "default" : true
+ },
+ "enabled-protocols" : {
+ "type" : [ "array", "string" ],
+ "description" : "Enabled SSL protocols.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "key-alias" : {
+ "type" : "string",
+ "description" : "Alias that identifies the key in the key store."
+ },
+ "key-password" : {
+ "type" : "string",
+ "description" : "Password used to access the key in the key store."
+ },
+ "key-store" : {
+ "type" : "string",
+ "description" : "Path to the key store that holds the SSL certificate (typically a jks file)."
+ },
+ "key-store-password" : {
+ "type" : "string",
+ "description" : "Password used to access the key store."
+ },
+ "key-store-provider" : {
+ "type" : "string",
+ "description" : "Provider for the key store."
+ },
+ "key-store-type" : {
+ "type" : "string",
+ "description" : "Type of the key store."
+ },
+ "protocol" : {
+ "type" : "string",
+ "description" : "SSL protocol to use.",
+ "default" : "TLS"
+ },
+ "server-name-bundles" : {
+ "type" : [ "array", "string" ],
+ "description" : "Mapping of host names to SSL bundles for SNI configuration.",
+ "items" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.springframework.boot.web.server.Ssl:ServerNameSslBundle"
+ }
+ },
+ "trust-certificate" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded SSL certificate authority file."
+ },
+ "trust-certificate-private-key" : {
+ "type" : "string",
+ "description" : "Path to a PEM-encoded private key file for the SSL certificate authority."
+ },
+ "trust-store" : {
+ "type" : "string",
+ "description" : "Trust store that holds SSL certificates."
+ },
+ "trust-store-password" : {
+ "type" : "string",
+ "description" : "Password used to access the trust store."
+ },
+ "trust-store-provider" : {
+ "type" : "string",
+ "description" : "Provider for the trust store."
+ },
+ "trust-store-type" : {
+ "type" : "string",
+ "description" : "Type of the trust store."
+ }
+ }
+ },
+ "tomcat" : {
+ "type" : "object",
+ "properties" : {
+ "accept-count" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum queue length for incoming connection requests when all possible request processing threads are in use.",
+ "default" : 100
+ },
+ "accesslog" : {
+ "type" : "object",
+ "properties" : {
+ "buffered" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to buffer output such that it is flushed only periodically.",
+ "default" : true
+ },
+ "check-exists" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to check for log file existence so it can be recreated if an external process has renamed it.",
+ "default" : false
+ },
+ "condition-if" : {
+ "type" : "string",
+ "description" : "Whether logging of the request will only be enabled if \"ServletRequest.getAttribute(conditionIf)\" does not yield null."
+ },
+ "condition-unless" : {
+ "type" : "string",
+ "description" : "Whether logging of the request will only be enabled if \"ServletRequest.getAttribute(conditionUnless)\" yield null."
+ },
+ "directory" : {
+ "type" : "string",
+ "description" : "Directory in which log files are created. Can be absolute or relative to the Tomcat base dir.",
+ "default" : "logs"
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enable access log.",
+ "default" : false
+ },
+ "encoding" : {
+ "type" : "string",
+ "description" : "Character set used by the log file. Default to the system default character set."
+ },
+ "file-date-format" : {
+ "type" : "string",
+ "description" : "Date format to place in the log file name.",
+ "default" : ".yyyy-MM-dd"
+ },
+ "ipv6-canonical" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to use IPv6 canonical representation format as defined by RFC 5952.",
+ "default" : false
+ },
+ "locale" : {
+ "type" : "string",
+ "description" : "Locale used to format timestamps in log entries and in log file name suffix. Default to the default locale of the Java process."
+ },
+ "max-days" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Number of days to retain the access log files before they are removed.",
+ "default" : -1
+ },
+ "pattern" : {
+ "type" : "string",
+ "description" : "Format pattern for access logs.",
+ "default" : "common"
+ },
+ "prefix" : {
+ "type" : "string",
+ "description" : "Log file name prefix.",
+ "default" : "access_log"
+ },
+ "rename-on-rotate" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to defer inclusion of the date stamp in the file name until rotate time.",
+ "default" : false
+ },
+ "request-attributes-enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Set request attributes for the IP address, Hostname, protocol, and port used for the request.",
+ "default" : false
+ },
+ "rotate" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable access log rotation.",
+ "default" : true
+ },
+ "suffix" : {
+ "type" : "string",
+ "description" : "Log file name suffix.",
+ "default" : ".log"
+ }
+ }
+ },
+ "additional-tld-skip-patterns" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of additional patterns that match jars to ignore for TLD scanning. The special '?' and '*' characters can be used in the pattern to match one and only one character and zero or more characters respectively.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "background-processor-delay" : {
+ "type" : "string",
+ "description" : "Delay between the invocation of backgroundProcess methods. If a duration suffix is not specified, seconds will be used.",
+ "default" : "10s"
+ },
+ "basedir" : {
+ "type" : "string",
+ "description" : "Tomcat base directory. If not specified, a temporary directory is used."
+ },
+ "connection-timeout" : {
+ "type" : "string",
+ "description" : "Amount of time the connector will wait, after accepting a connection, for the request URI line to be presented."
+ },
+ "keep-alive-timeout" : {
+ "type" : "string",
+ "description" : "Time to wait for another HTTP request before the connection is closed. When not set the connectionTimeout is used. When set to -1 there will be no timeout."
+ },
+ "max-connections" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of connections that the server accepts and processes at any given time. Once the limit has been reached, the operating system may still accept connections based on the \"acceptCount\" property.",
+ "default" : 8192
+ },
+ "max-http-form-post-size" : {
+ "type" : "string",
+ "description" : "Maximum size of the form content in any HTTP post request.",
+ "default" : "2MB"
+ },
+ "max-http-response-header-size" : {
+ "type" : "string",
+ "description" : "Maximum size of the HTTP response header.",
+ "default" : "8KB"
+ },
+ "max-keep-alive-requests" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of HTTP requests that can be pipelined before the connection is closed. When set to 0 or 1, keep-alive and pipelining are disabled. When set to -1, an unlimited number of pipelined or keep-alive requests are allowed.",
+ "default" : 100
+ },
+ "max-parameter-count" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of parameters (GET plus POST) that will be automatically parsed by the container. A value of less than 0 means no limit.",
+ "default" : 10000
+ },
+ "max-part-count" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum total number of parts permitted in a multipart/form-data request. Requests that exceed this limit will be rejected. A value of less than 0 means no limit.",
+ "default" : 50
+ },
+ "max-part-header-size" : {
+ "type" : "string",
+ "description" : "Maximum per-part header size permitted in a multipart/form-data request. Requests that exceed this limit will be rejected. A value of less than 0 means no limit.",
+ "default" : "512B"
+ },
+ "max-swallow-size" : {
+ "type" : "string",
+ "description" : "Maximum amount of request body to swallow.",
+ "default" : "2MB"
+ },
+ "mbeanregistry" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether Tomcat's MBean Registry should be enabled.",
+ "default" : false
+ }
+ }
+ },
+ "processor-cache" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of idle processors that will be retained in the cache and reused with a subsequent request. When set to -1 the cache will be unlimited with a theoretical maximum size equal to the maximum number of connections.",
+ "default" : 200
+ },
+ "redirect-context-root" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether requests to the context root should be redirected by appending a / to the path. When using SSL terminated at a proxy, this property should be set to false.",
+ "default" : true
+ },
+ "relaxed-path-chars" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of additional unencoded characters that should be allowed in URI paths. Only \"< > [ \\ ] ^ ` { | }\" are allowed.",
+ "examples" : [ "<", ">", "[", "\\", "]", "^", "`", "{", "|", "}" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "relaxed-query-chars" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of additional unencoded characters that should be allowed in URI query strings. Only \"< > [ \\ ] ^ ` { | }\" are allowed.",
+ "examples" : [ "<", ">", "[", "\\", "]", "^", "`", "{", "|", "}" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "remoteip" : {
+ "type" : "object",
+ "properties" : {
+ "host-header" : {
+ "type" : "string",
+ "description" : "Name of the HTTP header from which the remote host is extracted.",
+ "default" : "X-Forwarded-Host"
+ },
+ "internal-proxies" : {
+ "type" : "string",
+ "description" : "Regular expression that matches proxies that are to be trusted.",
+ "default" : "10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|192\\.168\\.\\d{1,3}\\.\\d{1,3}|169\\.254\\.\\d{1,3}\\.\\d{1,3}|127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|100\\.6[4-9]{1}\\.\\d{1,3}\\.\\d{1,3}|100\\.[7-9]{1}\\d{1}\\.\\d{1,3}\\.\\d{1,3}|100\\.1[0-1]{1}\\d{1}\\.\\d{1,3}\\.\\d{1,3}|100\\.12[0-7]{1}\\.\\d{1,3}\\.\\d{1,3}|172\\.1[6-9]{1}\\.\\d{1,3}\\.\\d{1,3}|172\\.2[0-9]{1}\\.\\d{1,3}\\.\\d{1,3}|172\\.3[0-1]{1}\\.\\d{1,3}\\.\\d{1,3}|0:0:0:0:0:0:0:1|::1|fe[89ab]\\p{XDigit}:.*|f[cd]\\p{XDigit}{2}+:.*"
+ },
+ "port-header" : {
+ "type" : "string",
+ "description" : "Name of the HTTP header used to override the original port value.",
+ "default" : "X-Forwarded-Port"
+ },
+ "protocol-header" : {
+ "type" : "string",
+ "description" : "Header that holds the incoming protocol, usually named \"X-Forwarded-Proto\"."
+ },
+ "protocol-header-https-value" : {
+ "type" : "string",
+ "description" : "Value of the protocol header indicating whether the incoming request uses SSL.",
+ "default" : "https"
+ },
+ "remote-ip-header" : {
+ "type" : "string",
+ "description" : "Name of the HTTP header from which the remote IP is extracted. For instance, 'X-FORWARDED-FOR'."
+ },
+ "trusted-proxies" : {
+ "type" : "string",
+ "description" : "Regular expression defining proxies that are trusted when they appear in the \"remote-ip-header\" header."
+ }
+ }
+ },
+ "resource" : {
+ "type" : "object",
+ "properties" : {
+ "allow-caching" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether static resource caching is permitted for this web application.",
+ "default" : true
+ },
+ "cache-ttl" : {
+ "type" : "string",
+ "description" : "Time-to-live of the static resource cache.",
+ "default" : "5s"
+ }
+ }
+ },
+ "threads" : {
+ "type" : "object",
+ "properties" : {
+ "max" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum amount of worker threads. Doesn't have an effect if virtual threads are enabled.",
+ "default" : 200
+ },
+ "max-queue-capacity" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum capacity of the thread pool's backing queue. This setting only has an effect if the value is greater than 0.",
+ "default" : 2147483647
+ },
+ "min-spare" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Minimum amount of worker threads. Doesn't have an effect if virtual threads are enabled.",
+ "default" : 10
+ }
+ }
+ },
+ "uri-encoding" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Character encoding to use to decode the URI.",
+ "default" : "UTF-8"
+ },
+ "use-apr" : {
+ "type" : "string",
+ "description" : "Whether to use APR.",
+ "default" : "never",
+ "enum" : [ "always", "never", "when_available", "WHEN_AVAILABLE", "NEVER", "ALWAYS" ]
+ },
+ "use-relative-redirects" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether HTTP 1.1 and later location headers generated by a call to sendRedirect will use relative or absolute redirects.",
+ "default" : false
+ }
+ }
+ },
+ "undertow" : {
+ "type" : "object",
+ "properties" : {
+ "accesslog" : {
+ "type" : "object",
+ "properties" : {
+ "dir" : {
+ "type" : "string",
+ "description" : "Undertow access log directory."
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the access log.",
+ "default" : false
+ },
+ "pattern" : {
+ "type" : "string",
+ "description" : "Format pattern for access logs.",
+ "default" : "common"
+ },
+ "prefix" : {
+ "type" : "string",
+ "description" : "Log file name prefix.",
+ "default" : "access_log."
+ },
+ "rotate" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable access log rotation.",
+ "default" : true
+ },
+ "suffix" : {
+ "type" : "string",
+ "description" : "Log file name suffix.",
+ "default" : "log"
+ }
+ }
+ },
+ "allow-encoded-slash" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the server should decode percent encoded slash characters. Enabling encoded slashes can have security implications due to different servers interpreting the slash differently. Only enable this if you have a legacy application that requires it. Has no effect when server.undertow.decode-slash is set.",
+ "deprecated" : true,
+ "default" : false,
+ "x-deprecation" : {
+ "replacement" : "server.undertow.decode-slash",
+ "since" : "3.0.3"
+ }
+ },
+ "always-set-keep-alive" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the 'Connection: keep-alive' header should be added to all responses, even if not required by the HTTP specification.",
+ "default" : true
+ },
+ "buffer-size" : {
+ "type" : "string",
+ "description" : "Size of each buffer. The default is derived from the maximum amount of memory that is available to the JVM."
+ },
+ "decode-slash" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether encoded slash characters (%2F) should be decoded. Decoding can cause security problems if a front-end proxy does not perform the same decoding. Only enable this if you have a legacy application that requires it. When set, server.undertow.allow-encoded-slash has no effect."
+ },
+ "decode-url" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the URL should be decoded. When disabled, percent-encoded characters in the URL will be left as-is.",
+ "default" : true
+ },
+ "direct-buffers" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to allocate buffers outside the Java heap. The default is derived from the maximum amount of memory that is available to the JVM."
+ },
+ "eager-filter-init" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether servlet filters should be initialized on startup.",
+ "default" : true
+ },
+ "max-cookies" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of cookies that are allowed. This limit exists to prevent hash collision based DOS attacks.",
+ "default" : 200
+ },
+ "max-headers" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of headers that are allowed. This limit exists to prevent hash collision based DOS attacks."
+ },
+ "max-http-post-size" : {
+ "type" : "string",
+ "description" : "Maximum size of the HTTP post content. When the value is -1, the default, the size is unlimited.",
+ "default" : "-1B"
+ },
+ "max-parameters" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of query or path parameters that are allowed. This limit exists to prevent hash collision based DOS attacks."
+ },
+ "no-request-timeout" : {
+ "type" : "string",
+ "description" : "Amount of time a connection can sit idle without processing a request, before it is closed by the server."
+ },
+ "options" : {
+ "type" : "object",
+ "properties" : {
+ "server" : {
+ "type" : "object",
+ "description" : "Server options as defined in io.undertow.UndertowOptions."
+ },
+ "socket" : {
+ "type" : "object",
+ "description" : "Socket options as defined in org.xnio.Options."
+ }
+ }
+ },
+ "preserve-path-on-forward" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to preserve the path of a request when it is forwarded.",
+ "default" : false
+ },
+ "threads" : {
+ "type" : "object",
+ "properties" : {
+ "io" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Number of I/O threads to create for the worker. The default is derived from the number of available processors."
+ },
+ "worker" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Number of worker threads. The default is 8 times the number of I/O threads."
+ }
+ }
+ },
+ "url-charset" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Charset used to decode URLs.",
+ "default" : "UTF-8"
+ }
+ }
+ },
+ "url" : {
+ "type" : "string"
+ }
+ }
+ },
+ "spring" : {
+ "type" : "object",
+ "properties" : {
+ "application" : {
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "type" : "string",
+ "description" : "Application name. Typically used with logging to help identify the application."
+ }
+ }
+ },
+ "datasource" : {
+ "type" : "object",
+ "properties" : {
+ "dbcp2" : {
+ "type" : "string",
+ "properties" : {
+ "abandoned-usage-tracking" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "access-to-underlying-connection-allowed" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "auto-commit-on-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "cache-state" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "clear-statement-pool-on-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "connection-factory-class-name" : {
+ "type" : "string"
+ },
+ "connection-init-sqls" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "default-auto-commit" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "default-catalog" : {
+ "type" : "string"
+ },
+ "default-query-timeout" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "default-read-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "default-schema" : {
+ "type" : "string"
+ },
+ "default-transaction-isolation" : {
+ "type" : [ "integer", "string" ]
+ },
+ "disconnection-ignore-sql-codes" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "disconnection-sql-codes" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "driver-class-name" : {
+ "type" : "string"
+ },
+ "duration-between-eviction-runs" : {
+ "type" : "string"
+ },
+ "enable-auto-commit-on-return" : {
+ "type" : [ "boolean", "string" ],
+ "deprecated" : true
+ },
+ "eviction-policy-class-name" : {
+ "type" : "string"
+ },
+ "fast-fail-validation" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "initial-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "jmx-name" : {
+ "type" : "string"
+ },
+ "lifo" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "log-abandoned" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "log-expired-connections" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "login-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-conn-lifetime-millis" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "max-idle" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-open-prepared-statements" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-total" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-wait-millis" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "min-evictable-idle-time-millis" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "min-idle" : {
+ "type" : [ "integer", "string" ]
+ },
+ "num-tests-per-eviction-run" : {
+ "type" : [ "integer", "string" ]
+ },
+ "password" : {
+ "type" : "string"
+ },
+ "pool-prepared-statements" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "remove-abandoned-on-borrow" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "remove-abandoned-on-maintenance" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "remove-abandoned-timeout" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "rollback-on-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "soft-min-evictable-idle-time-millis" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "test-on-borrow" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "test-on-create" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "test-on-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "test-while-idle" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "time-between-eviction-runs-millis" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "url" : {
+ "type" : "string"
+ },
+ "username" : {
+ "type" : "string"
+ },
+ "validation-query" : {
+ "type" : "string"
+ },
+ "validation-query-timeout" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ }
+ }
+ },
+ "driver-class-name" : {
+ "type" : "string",
+ "description" : "Fully qualified name of the JDBC driver. Auto-detected based on the URL by default."
+ },
+ "embedded-database-connection" : {
+ "type" : "string",
+ "description" : "Connection details for an embedded database. Defaults to the most suitable embedded database that is available on the classpath.",
+ "enum" : [ "HSQLDB", "hsqldb", "DERBY", "derby", "H2", "h2", "none", "NONE" ]
+ },
+ "generate-unique-name" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to generate a random datasource name.",
+ "default" : true
+ },
+ "hikari" : {
+ "type" : "object",
+ "properties" : {
+ "allow-pool-suspension" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "auto-commit" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "catalog" : {
+ "type" : "string"
+ },
+ "connection-init-sql" : {
+ "type" : "string"
+ },
+ "connection-test-query" : {
+ "type" : "string"
+ },
+ "connection-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "data-source-class-name" : {
+ "type" : "string"
+ },
+ "data-source-j-n-d-i" : {
+ "type" : "string"
+ },
+ "data-source-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "driver-class-name" : {
+ "type" : "string"
+ },
+ "exception-override-class-name" : {
+ "type" : "string"
+ },
+ "fast-path-pool" : {
+ "$ref" : "#/$defs/com.zaxxer.hikari.pool.HikariPool"
+ },
+ "health-check-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "health-check-registry" : {
+ "type" : "object"
+ },
+ "idle-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "initialization-fail-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "is-shutdown" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "isolate-internal-queries" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "jdbc-url" : {
+ "type" : "string"
+ },
+ "keepalive-time" : {
+ "type" : [ "integer", "string" ]
+ },
+ "leak-detection-threshold" : {
+ "type" : [ "integer", "string" ]
+ },
+ "login-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-lifetime" : {
+ "type" : [ "integer", "string" ]
+ },
+ "maximum-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "metric-registry" : {
+ "type" : "object"
+ },
+ "minimum-idle" : {
+ "type" : [ "integer", "string" ]
+ },
+ "password" : {
+ "type" : "string"
+ },
+ "pool" : {
+ "type" : "object",
+ "$ref" : "#/$defs/com.zaxxer.hikari.pool.HikariPool"
+ },
+ "pool-name" : {
+ "type" : "string"
+ },
+ "read-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "register-mbeans" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "schema" : {
+ "type" : "string"
+ },
+ "transaction-isolation" : {
+ "type" : "string"
+ },
+ "username" : {
+ "type" : "string"
+ },
+ "validation-timeout" : {
+ "type" : [ "integer", "string" ]
+ }
+ }
+ },
+ "jndi-name" : {
+ "type" : "string",
+ "description" : "JNDI location of the datasource. Class, url, username and password are ignored when set."
+ },
+ "name" : {
+ "type" : "string",
+ "description" : "Datasource name to use if \"generate-unique-name\" is false. Defaults to \"testdb\" when using an embedded database, otherwise null."
+ },
+ "oracleucp" : {
+ "type" : "string",
+ "properties" : {
+ "abandoned-connection-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "commit-on-connection-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "connection-factory-class-name" : {
+ "type" : "string"
+ },
+ "connection-factory-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "connection-harvest-max-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "connection-harvest-trigger-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "connection-labeling-high-cost" : {
+ "type" : [ "integer", "string" ]
+ },
+ "connection-pool-name" : {
+ "type" : "string"
+ },
+ "connection-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "connection-repurpose-threshold" : {
+ "type" : [ "integer", "string" ]
+ },
+ "connection-validation-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "connection-wait-duration" : {
+ "type" : "string"
+ },
+ "connection-wait-timeout" : {
+ "type" : [ "integer", "string" ],
+ "deprecated" : true
+ },
+ "create-connection-in-borrow-thread" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "data-source-name" : {
+ "type" : "string"
+ },
+ "database-name" : {
+ "type" : "string"
+ },
+ "description" : {
+ "type" : "string"
+ },
+ "fast-connection-failover-enabled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "high-cost-connection-reuse-threshold" : {
+ "type" : [ "integer", "string" ]
+ },
+ "inactive-connection-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "initial-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "login-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-connection-reuse-count" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-connection-reuse-time" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-connections-per-shard" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-idle-time" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-statements" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-idle" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-pool-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "network-protocol" : {
+ "type" : "string"
+ },
+ "o-n-s-configuration" : {
+ "type" : "string"
+ },
+ "pdb-roles" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "port-number" : {
+ "type" : [ "integer", "string" ]
+ },
+ "property-cycle" : {
+ "type" : [ "integer", "string" ]
+ },
+ "query-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "read-only-instance-allowed" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "role-name" : {
+ "type" : "string"
+ },
+ "s-q-l-for-validate-connection" : {
+ "type" : "string"
+ },
+ "seconds-to-trust-idle-connection" : {
+ "type" : [ "integer", "string" ]
+ },
+ "server-name" : {
+ "type" : "string"
+ },
+ "sharding-mode" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "time-to-live-connection-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "timeout-check-interval" : {
+ "type" : [ "integer", "string" ]
+ },
+ "u-r-l" : {
+ "type" : "string"
+ },
+ "user" : {
+ "type" : "string"
+ },
+ "validate-connection-on-borrow" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ },
+ "password" : {
+ "type" : "string",
+ "description" : "Login password of the database."
+ },
+ "tomcat" : {
+ "type" : "string",
+ "properties" : {
+ "abandon-when-percentage-full" : {
+ "type" : [ "integer", "string" ]
+ },
+ "access-to-underlying-connection-allowed" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "alternate-username-allowed" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "commit-on-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "connection-properties" : {
+ "type" : "string"
+ },
+ "data-source" : {
+ "type" : "object"
+ },
+ "data-source-j-n-d-i" : {
+ "type" : "string"
+ },
+ "db-properties" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "default-auto-commit" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "default-catalog" : {
+ "type" : "string"
+ },
+ "default-read-only" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "default-transaction-isolation" : {
+ "type" : [ "integer", "string" ]
+ },
+ "driver-class-name" : {
+ "type" : "string"
+ },
+ "fair-queue" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "ignore-exception-on-pre-load" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "init-s-q-l" : {
+ "type" : "string"
+ },
+ "initial-size" : {
+ "type" : [ "integer", "string" ]
+ },
+ "jdbc-interceptors" : {
+ "type" : "string"
+ },
+ "jmx-enabled" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "log-abandoned" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "log-validation-errors" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "login-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-active" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-age" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-idle" : {
+ "type" : [ "integer", "string" ]
+ },
+ "max-wait" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-evictable-idle-time-millis" : {
+ "type" : [ "integer", "string" ]
+ },
+ "min-idle" : {
+ "type" : [ "integer", "string" ]
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "num-tests-per-eviction-run" : {
+ "type" : [ "integer", "string" ]
+ },
+ "password" : {
+ "type" : "string"
+ },
+ "propagate-interrupt-state" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "remove-abandoned" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "remove-abandoned-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "rollback-on-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "suspect-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "test-on-borrow" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "test-on-connect" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "test-on-return" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "test-while-idle" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "time-between-eviction-runs-millis" : {
+ "type" : [ "integer", "string" ]
+ },
+ "url" : {
+ "type" : "string"
+ },
+ "use-disposable-connection-facade" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "use-equals" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "use-lock" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "use-statement-facade" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "username" : {
+ "type" : "string"
+ },
+ "validation-interval" : {
+ "type" : [ "integer", "string" ]
+ },
+ "validation-query" : {
+ "type" : "string"
+ },
+ "validation-query-timeout" : {
+ "type" : [ "integer", "string" ]
+ },
+ "validator-class-name" : {
+ "type" : "string"
+ }
+ }
+ },
+ "type" : {
+ "type" : "string",
+ "description" : "Fully qualified name of the DataSource implementation to use. By default, a connection pool implementation is auto-detected from the classpath."
+ },
+ "unique-name" : {
+ "type" : "string"
+ },
+ "url" : {
+ "type" : "string",
+ "description" : "JDBC URL of the database."
+ },
+ "username" : {
+ "type" : "string",
+ "description" : "Login username of the database."
+ },
+ "xa" : {
+ "type" : "object",
+ "properties" : {
+ "data-source-class-name" : {
+ "type" : "string",
+ "description" : "XA datasource fully qualified name."
+ },
+ "properties" : {
+ "type" : "object",
+ "description" : "Properties to pass to the XA data source."
+ }
+ }
+ }
+ }
+ },
+ "devtools" : {
+ "type" : "object",
+ "properties" : {
+ "add-properties" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable development property defaults.",
+ "default" : true
+ },
+ "livereload" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable a livereload.com-compatible server.",
+ "default" : true
+ },
+ "port" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Server port.",
+ "default" : 35729
+ }
+ }
+ },
+ "remote" : {
+ "type" : "object",
+ "properties" : {
+ "context-path" : {
+ "type" : "string",
+ "description" : "Context path used to handle the remote connection.",
+ "default" : "/.~~spring-boot!~"
+ },
+ "d-e-f-a-u-l-t_c-o-n-t-e-x-t_p-a-t-h" : {
+ "type" : "string"
+ },
+ "d-e-f-a-u-l-t_s-e-c-r-e-t_h-e-a-d-e-r_n-a-m-e" : {
+ "type" : "string"
+ },
+ "proxy" : {
+ "type" : "object",
+ "properties" : {
+ "host" : {
+ "type" : "string",
+ "description" : "The host of the proxy to use to connect to the remote application."
+ },
+ "port" : {
+ "type" : [ "integer", "string" ],
+ "description" : "The port of the proxy to use to connect to the remote application."
+ }
+ }
+ },
+ "restart" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable remote restart.",
+ "default" : true
+ }
+ }
+ },
+ "secret" : {
+ "type" : "string",
+ "description" : "A shared secret required to establish a connection (required to enable remote support)."
+ },
+ "secret-header-name" : {
+ "type" : "string",
+ "description" : "HTTP header used to transfer the shared secret.",
+ "default" : "X-AUTH-TOKEN"
+ }
+ }
+ },
+ "restart" : {
+ "type" : "object",
+ "properties" : {
+ "additional-exclude" : {
+ "type" : "string",
+ "description" : "Additional patterns that should be excluded from triggering a full restart."
+ },
+ "additional-paths" : {
+ "type" : [ "array", "string" ],
+ "description" : "Additional paths to watch for changes.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "d-e-f-a-u-l-t_r-e-s-t-a-r-t_e-x-c-l-u-d-e-s" : {
+ "type" : "string"
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable automatic restart.",
+ "default" : true
+ },
+ "exclude" : {
+ "type" : "string",
+ "description" : "Patterns that should be excluded from triggering a full restart.",
+ "default" : "META-INF/maven/**,META-INF/resources/**,resources/**,static/**,public/**,templates/**,**/*Test.class,**/*Tests.class,git.properties,META-INF/build-info.properties"
+ },
+ "log-condition-evaluation-delta" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to log the condition evaluation delta upon restart.",
+ "default" : true
+ },
+ "poll-interval" : {
+ "type" : "string",
+ "description" : "Amount of time to wait between polling for classpath changes.",
+ "default" : "1s"
+ },
+ "quiet-period" : {
+ "type" : "string",
+ "description" : "Amount of quiet time required without any classpath changes before a restart is triggered.",
+ "default" : "400ms"
+ },
+ "trigger-file" : {
+ "type" : "string",
+ "description" : "Name of a specific file that, when changed, triggers the restart check. Must be a simple name (without any path) of a file that appears on your classpath. If not specified, any classpath file change triggers the restart."
+ }
+ }
+ }
+ }
+ },
+ "flyway" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable flyway.",
+ "default" : true
+ }
+ }
+ },
+ "freemarker" : {
+ "type" : "object",
+ "properties" : {
+ "cache" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable template caching. Only supported with Spring MVC.",
+ "default" : false
+ }
+ }
+ },
+ "graphql" : {
+ "type" : "object",
+ "properties" : {
+ "graphiql" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the default GraphiQL UI is enabled.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "groovy" : {
+ "type" : "object",
+ "properties" : {
+ "template" : {
+ "type" : "object",
+ "properties" : {
+ "cache" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable template caching.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "gson" : {
+ "type" : "object",
+ "properties" : {
+ "date-format" : {
+ "type" : "string",
+ "description" : "Format to use when serializing Date objects."
+ },
+ "disable-html-escaping" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to disable the escaping of HTML characters such as '<', '>', etc."
+ },
+ "disable-inner-class-serialization" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to exclude inner classes during serialization."
+ },
+ "enable-complex-map-key-serialization" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable serialization of complex map keys (i.e. non-primitives)."
+ },
+ "exclude-fields-without-expose-annotation" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to exclude all fields from consideration for serialization or deserialization that do not have the \"Expose\" annotation."
+ },
+ "field-naming-policy" : {
+ "type" : "string",
+ "description" : "Naming policy that should be applied to an object's field during serialization and deserialization.",
+ "enum" : [ "lower_case_with_dashes", "upper_camel_case_with_spaces", "lower_case_with_underscores", "UPPER_CAMEL_CASE", "upper_case_with_underscores", "upper_camel_case", "LOWER_CASE_WITH_DASHES", "IDENTITY", "UPPER_CAMEL_CASE_WITH_SPACES", "identity", "LOWER_CASE_WITH_DOTS", "LOWER_CASE_WITH_UNDERSCORES", "UPPER_CASE_WITH_UNDERSCORES", "lower_case_with_dots" ]
+ },
+ "generate-non-executable-json" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to generate non-executable JSON by prefixing the output with some special text."
+ },
+ "lenient" : {
+ "type" : [ "boolean", "string" ],
+ "deprecated" : true,
+ "x-deprecation" : {
+ "replacement" : "spring.gson.strictness",
+ "since" : "3.4.0"
+ }
+ },
+ "long-serialization-policy" : {
+ "type" : "string",
+ "description" : "Serialization policy for Long and long types.",
+ "enum" : [ "default", "string", "STRING", "DEFAULT" ]
+ },
+ "pretty-printing" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to output serialized JSON that fits in a page for pretty printing."
+ },
+ "serialize-nulls" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to serialize null fields."
+ },
+ "strictness" : {
+ "type" : "string",
+ "description" : "Sets how strictly the RFC 8259 specification will be enforced when reading and writing JSON.",
+ "enum" : [ "legacy_strict", "STRICT", "LENIENT", "LEGACY_STRICT", "strict", "lenient" ]
+ }
+ }
+ },
+ "h2" : {
+ "type" : "object",
+ "properties" : {
+ "console" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the console.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "http" : {
+ "type" : "object",
+ "properties" : {
+ "client" : {
+ "type" : "object",
+ "properties" : {
+ "connect-timeout" : {
+ "type" : "string",
+ "description" : "Default connect timeout for a client HTTP request."
+ },
+ "factory" : {
+ "type" : "string",
+ "description" : "Default factory used for a client HTTP request.",
+ "enum" : [ "JDK", "jdk", "http_components", "REACTOR", "HTTP_COMPONENTS", "reactor", "SIMPLE", "simple", "jetty", "JETTY" ]
+ },
+ "read-timeout" : {
+ "type" : "string",
+ "description" : "Default read timeout for a client HTTP request."
+ },
+ "redirects" : {
+ "type" : "string",
+ "description" : "Handling for HTTP redirects.",
+ "enum" : [ "follow_when_possible", "FOLLOW", "FOLLOW_WHEN_POSSIBLE", "dont_follow", "DONT_FOLLOW", "follow" ]
+ },
+ "ssl" : {
+ "type" : "object",
+ "properties" : {
+ "bundle" : {
+ "type" : "string",
+ "description" : "SSL bundle to use."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "info" : {
+ "type" : "object",
+ "properties" : {
+ "build" : {
+ "type" : "object",
+ "properties" : {
+ "encoding" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "File encoding.",
+ "default" : "UTF-8"
+ },
+ "location" : {
+ "type" : "string",
+ "description" : "Location of the generated build-info.properties file.",
+ "default" : "classpath:META-INF/build-info.properties"
+ }
+ }
+ },
+ "git" : {
+ "type" : "object",
+ "properties" : {
+ "encoding" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "File encoding.",
+ "default" : "UTF-8"
+ },
+ "location" : {
+ "type" : "string",
+ "description" : "Location of the generated git.properties file.",
+ "default" : "classpath:git.properties"
+ }
+ }
+ }
+ }
+ },
+ "jackson" : {
+ "type" : "object",
+ "properties" : {
+ "constructor-detector" : {
+ "type" : "string",
+ "description" : "Strategy to use to auto-detect constructor, and in particular behavior with single-argument constructors.",
+ "default" : "default",
+ "enum" : [ "EXPLICIT_ONLY", "explicit_only", "default", "USE_PROPERTIES_BASED", "USE_DELEGATING", "use_delegating", "use_properties_based", "DEFAULT" ]
+ },
+ "datatype" : {
+ "type" : "object",
+ "properties" : {
+ "enum" : {
+ "type" : "object",
+ "description" : "Jackson on/off features for enums."
+ },
+ "enum-features" : {
+ "type" : "object"
+ },
+ "json-node" : {
+ "type" : "object",
+ "description" : "Jackson on/off features for JsonNodes."
+ }
+ }
+ },
+ "date-format" : {
+ "type" : "string",
+ "description" : "Date format string or a fully-qualified date format class name. For instance, 'yyyy-MM-dd HH:mm:ss'."
+ },
+ "default-leniency" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Global default setting (if any) for leniency."
+ },
+ "default-property-inclusion" : {
+ "type" : "string",
+ "description" : "Controls the inclusion of properties during serialization. Configured with one of the values in Jackson's JsonInclude.Include enumeration.",
+ "enum" : [ "always", "non_null", "non_absent", "non_default", "custom", "ALWAYS", "non_empty", "NON_DEFAULT", "NON_EMPTY", "NON_ABSENT", "USE_DEFAULTS", "NON_NULL", "CUSTOM", "use_defaults" ]
+ },
+ "deserialization" : {
+ "type" : "object",
+ "description" : "Jackson on/off features that affect the way Java objects are deserialized."
+ },
+ "generator" : {
+ "type" : "object",
+ "description" : "Jackson on/off features for generators."
+ },
+ "locale" : {
+ "$ref" : "#/$defs/java.util.Locale",
+ "description" : "Locale used for formatting."
+ },
+ "mapper" : {
+ "type" : "object",
+ "description" : "Jackson general purpose on/off features."
+ },
+ "parser" : {
+ "type" : "object",
+ "description" : "Jackson on/off features for parsers."
+ },
+ "property-naming-strategy" : {
+ "type" : "string",
+ "description" : "One of the constants on Jackson's PropertyNamingStrategies. Can also be a fully-qualified class name of a PropertyNamingStrategy implementation."
+ },
+ "serialization" : {
+ "type" : "object",
+ "description" : "Jackson on/off features that affect the way Java objects are serialized."
+ },
+ "time-zone" : {
+ "type" : "string",
+ "description" : "Time zone used when formatting dates. For instance, \"America/Los_Angeles\" or \"GMT+10\"."
+ },
+ "visibility" : {
+ "type" : "object",
+ "description" : "Jackson visibility thresholds that can be used to limit which methods (and fields) are auto-detected."
+ }
+ }
+ },
+ "jdbc" : {
+ "type" : "object",
+ "properties" : {
+ "template" : {
+ "type" : "object",
+ "properties" : {
+ "fetch-size" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Number of rows that should be fetched from the database when more rows are needed. Use -1 to use the JDBC driver's default configuration.",
+ "default" : -1
+ },
+ "ignore-warnings" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to ignore JDBC statement warnings (SQLWarning). When set to false, throw an SQLWarningException instead.",
+ "default" : true
+ },
+ "max-rows" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of rows. Use -1 to use the JDBC driver's default configuration.",
+ "default" : -1
+ },
+ "query-timeout" : {
+ "type" : "string",
+ "description" : "Query timeout. Default is to use the JDBC driver's default configuration. If a duration suffix is not specified, seconds will be used."
+ },
+ "results-map-case-insensitive" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether execution of a CallableStatement will return the results in a Map that uses case-insensitive names for the parameters.",
+ "default" : false
+ },
+ "skip-results-processing" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether results processing should be skipped. Can be used to optimize callable statement processing when we know that no results are being passed back.",
+ "default" : false
+ },
+ "skip-undeclared-results" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether undeclared results should be skipped.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "lifecycle" : {
+ "type" : "object",
+ "properties" : {
+ "timeout-per-shutdown-phase" : {
+ "type" : "string",
+ "description" : "Timeout for the shutdown of any phase (group of SmartLifecycle beans with the same 'phase' value).",
+ "default" : "30s"
+ }
+ }
+ },
+ "main" : {
+ "type" : "object",
+ "properties" : {
+ "keep-alive" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to keep the application alive even if there are no more non-daemon threads.",
+ "default" : false
+ }
+ }
+ },
+ "mustache" : {
+ "type" : "object",
+ "properties" : {
+ "servlet" : {
+ "type" : "object",
+ "properties" : {
+ "cache" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable template caching.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "mvc" : {
+ "type" : "object",
+ "properties" : {
+ "async" : {
+ "type" : "object",
+ "properties" : {
+ "request-timeout" : {
+ "type" : "string",
+ "description" : "Amount of time before asynchronous request handling times out. If this value is not set, the default timeout of the underlying implementation is used."
+ }
+ }
+ },
+ "contentnegotiation" : {
+ "type" : "object",
+ "properties" : {
+ "default-content-types" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of default content types to be used when no specific content type is requested.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "favor-parameter" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether a request parameter (\"format\" by default) should be used to determine the requested media type.",
+ "default" : false
+ },
+ "media-types" : {
+ "type" : "object",
+ "description" : "Map file extensions to media types for content negotiation. For instance, yml to text/yaml."
+ },
+ "parameter-name" : {
+ "type" : "string",
+ "description" : "Query parameter name to use when \"favor-parameter\" is enabled."
+ }
+ }
+ },
+ "dispatch-options-request" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to dispatch OPTIONS requests to the FrameworkServlet doService method.",
+ "default" : true
+ },
+ "dispatch-trace-request" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to dispatch TRACE requests to the FrameworkServlet doService method.",
+ "default" : false
+ },
+ "format" : {
+ "type" : "object",
+ "properties" : {
+ "date" : {
+ "type" : "string",
+ "description" : "Date format to use, for example 'dd/MM/yyyy'. Used for formatting of java.util.Date and java.time.LocalDate.",
+ "examples" : [ "dd/MM/yyyy", "iso" ]
+ },
+ "date-time" : {
+ "type" : "string",
+ "description" : "Date-time format to use, for example 'yyyy-MM-dd HH:mm:ss'. Used for formatting of java.time's LocalDateTime, OffsetDateTime, and ZonedDateTime.",
+ "examples" : [ "yyyy-MM-dd HH:mm:ss", "iso", "iso-offset" ]
+ },
+ "time" : {
+ "type" : "string",
+ "description" : "Time format to use, for example 'HH:mm:ss'. Used for formatting of java.time's LocalTime and OffsetTime.",
+ "examples" : [ "HH:mm:ss", "iso", "iso-offset" ]
+ }
+ }
+ },
+ "formcontent" : {
+ "type" : "object",
+ "properties" : {
+ "filter" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable Spring's FormContentFilter.",
+ "default" : true
+ }
+ }
+ }
+ }
+ },
+ "hiddenmethod" : {
+ "type" : "object",
+ "properties" : {
+ "filter" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable Spring's HiddenHttpMethodFilter.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "log-request-details" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether logging of (potentially sensitive) request details at DEBUG and TRACE level is allowed.",
+ "default" : false
+ },
+ "log-resolved-exception" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable warn logging of exceptions resolved by a \"HandlerExceptionResolver\", except for \"DefaultHandlerExceptionResolver\".",
+ "default" : false
+ },
+ "message-codes-resolver-format" : {
+ "type" : "string",
+ "description" : "Formatting strategy for message codes. For instance, 'PREFIX_ERROR_CODE'.",
+ "enum" : [ "prefix_error_code", "postfix_error_code", "POSTFIX_ERROR_CODE", "PREFIX_ERROR_CODE" ]
+ },
+ "pathmatch" : {
+ "type" : "object",
+ "properties" : {
+ "matching-strategy" : {
+ "type" : "string",
+ "description" : "Choice of strategy for matching request paths against registered mappings.",
+ "default" : "path-pattern-parser",
+ "enum" : [ "ANT_PATH_MATCHER", "PATH_PATTERN_PARSER", "path_pattern_parser", "ant_path_matcher" ]
+ }
+ }
+ },
+ "problemdetails" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether RFC 9457 Problem Details support should be enabled.",
+ "default" : false
+ }
+ }
+ },
+ "publish-request-handled-events" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to publish a ServletRequestHandledEvent at the end of each request.",
+ "default" : true
+ },
+ "servlet" : {
+ "type" : "object",
+ "properties" : {
+ "load-on-startup" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Load on startup priority of the dispatcher servlet.",
+ "default" : -1
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "Path of the dispatcher servlet. Setting a custom value for this property is not compatible with the PathPatternParser matching strategy.",
+ "default" : "/"
+ }
+ }
+ },
+ "static-path-pattern" : {
+ "type" : "string",
+ "description" : "Path pattern used for static resources.",
+ "default" : "/**"
+ },
+ "view" : {
+ "type" : "object",
+ "properties" : {
+ "prefix" : {
+ "type" : "string",
+ "description" : "Spring MVC view prefix."
+ },
+ "suffix" : {
+ "type" : "string",
+ "description" : "Spring MVC view suffix."
+ }
+ }
+ },
+ "webjars-path-pattern" : {
+ "type" : "string",
+ "description" : "Path pattern used for WebJar assets.",
+ "default" : "/webjars/**"
+ }
+ }
+ },
+ "profiles" : {
+ "type" : "object",
+ "properties" : {
+ "active" : {
+ "type" : [ "array", "string" ],
+ "description" : "Comma-separated list of active profiles. Can be overridden by a command line switch.",
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "reactor" : {
+ "type" : "object",
+ "properties" : {
+ "netty" : {
+ "type" : "object",
+ "properties" : {
+ "shutdown-quiet-period" : {
+ "type" : "string",
+ "description" : "Amount of time to wait before shutting down resources."
+ }
+ }
+ }
+ }
+ },
+ "security" : {
+ "type" : "object",
+ "properties" : {
+ "b-a-s-i-c_a-u-t-h_o-r-d-e-r" : {
+ "type" : [ "integer", "string" ]
+ },
+ "d-e-f-a-u-l-t_f-i-l-t-e-r_o-r-d-e-r" : {
+ "type" : [ "integer", "string" ]
+ },
+ "filter" : {
+ "type" : "object",
+ "properties" : {
+ "dispatcher-types" : {
+ "type" : [ "array", "string" ],
+ "description" : "Security filter chain dispatcher types for Servlet-based web applications.",
+ "default" : [ "async", "error", "forward", "include", "request" ],
+ "items" : {
+ "type" : "string",
+ "enum" : [ "include", "request", "async", "REQUEST", "forward", "ASYNC", "FORWARD", "ERROR", "INCLUDE", "error" ]
+ }
+ },
+ "order" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Security filter chain order for Servlet-based web applications.",
+ "default" : -100
+ }
+ }
+ },
+ "i-g-n-o-r-e-d_o-r-d-e-r" : {
+ "type" : [ "integer", "string" ]
+ },
+ "oauth2" : {
+ "type" : "object",
+ "properties" : {
+ "authorizationserver" : {
+ "type" : "object",
+ "properties" : {
+ "client" : {
+ "type" : "object",
+ "description" : "Registered clients of the Authorization Server.",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "jwk-set-uri" : {
+ "type" : "string"
+ },
+ "registration" : {
+ "type" : "object",
+ "properties" : {
+ "authorization-grant-types" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "client-authentication-methods" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "client-id" : {
+ "type" : "string"
+ },
+ "client-name" : {
+ "type" : "string"
+ },
+ "client-secret" : {
+ "type" : "string"
+ },
+ "post-logout-redirect-uris" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "redirect-uris" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "scopes" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "require-authorization-consent" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "require-proof-key" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "token" : {
+ "type" : "object",
+ "properties" : {
+ "access-token-format" : {
+ "type" : "string"
+ },
+ "access-token-time-to-live" : {
+ "type" : "string"
+ },
+ "authorization-code-time-to-live" : {
+ "type" : "string"
+ },
+ "device-code-time-to-live" : {
+ "type" : "string"
+ },
+ "id-token-signature-algorithm" : {
+ "type" : "string"
+ },
+ "refresh-token-time-to-live" : {
+ "type" : "string"
+ },
+ "reuse-refresh-tokens" : {
+ "type" : [ "boolean", "string" ]
+ }
+ }
+ },
+ "token-endpoint-authentication-signing-algorithm" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "endpoint" : {
+ "type" : "object",
+ "properties" : {
+ "authorization-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OAuth 2.0 Authorization Endpoint.",
+ "default" : "/oauth2/authorize"
+ },
+ "device-authorization-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OAuth 2.0 Device Authorization Endpoint.",
+ "default" : "/oauth2/device_authorization"
+ },
+ "device-verification-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OAuth 2.0 Device Verification Endpoint.",
+ "default" : "/oauth2/device_verification"
+ },
+ "jwk-set-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's JWK Set Endpoint.",
+ "default" : "/oauth2/jwks"
+ },
+ "oidc" : {
+ "type" : "object",
+ "properties" : {
+ "client-registration-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OpenID Connect 1.0 Client Registration Endpoint.",
+ "default" : "/connect/register"
+ },
+ "logout-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OpenID Connect 1.0 Logout Endpoint.",
+ "default" : "/connect/logout"
+ },
+ "user-info-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OpenID Connect 1.0 UserInfo Endpoint.",
+ "default" : "/userinfo"
+ }
+ }
+ },
+ "pushed-authorization-request-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OAuth 2.0 Pushed Authorization Request Endpoint.",
+ "default" : "/oauth2/par"
+ },
+ "token-introspection-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OAuth 2.0 Token Introspection Endpoint.",
+ "default" : "/oauth2/introspect"
+ },
+ "token-revocation-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OAuth 2.0 Token Revocation Endpoint.",
+ "default" : "/oauth2/revoke"
+ },
+ "token-uri" : {
+ "type" : "string",
+ "description" : "Authorization Server's OAuth 2.0 Token Endpoint.",
+ "default" : "/oauth2/token"
+ }
+ }
+ },
+ "issuer" : {
+ "type" : "string",
+ "description" : "URL of the Authorization Server's Issuer Identifier."
+ },
+ "multiple-issuers-allowed" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether multiple issuers are allowed per host. Using path components in the URL of the issuer identifier enables supporting multiple issuers per host in a multi-tenant hosting configuration.",
+ "default" : false
+ }
+ }
+ },
+ "client" : {
+ "type" : "object",
+ "properties" : {
+ "provider" : {
+ "type" : "object",
+ "description" : "OAuth provider details.",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "authorization-uri" : {
+ "type" : "string"
+ },
+ "issuer-uri" : {
+ "type" : "string"
+ },
+ "jwk-set-uri" : {
+ "type" : "string"
+ },
+ "token-uri" : {
+ "type" : "string"
+ },
+ "user-info-authentication-method" : {
+ "type" : "string"
+ },
+ "user-info-uri" : {
+ "type" : "string"
+ },
+ "user-name-attribute" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "registration" : {
+ "type" : "object",
+ "description" : "OAuth client registrations.",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "authorization-grant-type" : {
+ "type" : "string"
+ },
+ "client-authentication-method" : {
+ "type" : "string"
+ },
+ "client-id" : {
+ "type" : "string"
+ },
+ "client-name" : {
+ "type" : "string"
+ },
+ "client-secret" : {
+ "type" : "string"
+ },
+ "provider" : {
+ "type" : "string"
+ },
+ "redirect-uri" : {
+ "type" : "string"
+ },
+ "scope" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "resourceserver" : {
+ "type" : "object",
+ "properties" : {
+ "jwt" : {
+ "type" : "object",
+ "properties" : {
+ "audiences" : {
+ "type" : [ "array", "string" ],
+ "description" : "Identifies the recipients that the JWT is intended for.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "authorities-claim-delimiter" : {
+ "type" : "string",
+ "description" : "Regex to use for splitting the value of the authorities claim into authorities."
+ },
+ "authorities-claim-name" : {
+ "type" : "string",
+ "description" : "Name of token claim to use for mapping authorities from JWT."
+ },
+ "authority-prefix" : {
+ "type" : "string",
+ "description" : "Prefix to use for authorities mapped from JWT."
+ },
+ "issuer-uri" : {
+ "type" : "string",
+ "description" : "URI that can either be an OpenID Connect discovery endpoint or an OAuth 2.0 Authorization Server Metadata endpoint defined by RFC 8414."
+ },
+ "jwk-set-uri" : {
+ "type" : "string",
+ "description" : "JSON Web Key URI to use to verify the JWT token."
+ },
+ "jws-algorithms" : {
+ "type" : [ "array", "string" ],
+ "description" : "JSON Web Algorithms used for verifying the digital signatures.",
+ "default" : "RS256",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "principal-claim-name" : {
+ "type" : "string",
+ "description" : "JWT principal claim name."
+ },
+ "public-key-location" : {
+ "type" : "string",
+ "description" : "Location of the file containing the public key used to verify a JWT."
+ }
+ }
+ },
+ "opaquetoken" : {
+ "type" : "object",
+ "properties" : {
+ "client-id" : {
+ "type" : "string",
+ "description" : "Client id used to authenticate with the token introspection endpoint."
+ },
+ "client-secret" : {
+ "type" : "string",
+ "description" : "Client secret used to authenticate with the token introspection endpoint."
+ },
+ "introspection-uri" : {
+ "type" : "string",
+ "description" : "OAuth 2.0 endpoint through which token introspection is accomplished."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "saml2" : {
+ "type" : "object",
+ "properties" : {
+ "relyingparty" : {
+ "type" : "object",
+ "properties" : {
+ "registration" : {
+ "type" : "object",
+ "description" : "SAML2 relying party registrations.",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "acs" : {
+ "type" : "object"
+ },
+ "assertingparty" : {
+ "type" : "object",
+ "properties" : {
+ "entity-id" : {
+ "type" : "string"
+ },
+ "metadata-uri" : {
+ "type" : "string"
+ },
+ "singlelogout" : {
+ "type" : "object"
+ },
+ "singlesignon" : {
+ "type" : "object"
+ },
+ "verification" : {
+ "type" : "object",
+ "properties" : {
+ "credentials" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "certificate" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "decryption" : {
+ "type" : "object",
+ "properties" : {
+ "credentials" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "certificate-location" : {
+ "type" : "string"
+ },
+ "private-key-location" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "entity-id" : {
+ "type" : "string"
+ },
+ "name-id-format" : {
+ "type" : "string"
+ },
+ "signing" : {
+ "type" : "object",
+ "properties" : {
+ "credentials" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "certificate-location" : {
+ "type" : "string"
+ },
+ "private-key-location" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "singlelogout" : {
+ "type" : "object"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "user" : {
+ "type" : "object",
+ "properties" : {
+ "name" : {
+ "type" : "string",
+ "description" : "Default user name.",
+ "default" : "user"
+ },
+ "password" : {
+ "type" : "string",
+ "description" : "Password for the default user name."
+ },
+ "password-generated" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "roles" : {
+ "type" : [ "array", "string" ],
+ "description" : "Granted roles for the default user name.",
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "servlet" : {
+ "type" : "object",
+ "properties" : {
+ "multipart" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable support of multipart uploads.",
+ "default" : true
+ },
+ "file-size-threshold" : {
+ "type" : "string",
+ "description" : "Threshold after which files are written to disk.",
+ "default" : "0B"
+ },
+ "location" : {
+ "type" : "string",
+ "description" : "Intermediate location of uploaded files."
+ },
+ "max-file-size" : {
+ "type" : "string",
+ "description" : "Max file size.",
+ "default" : "1MB"
+ },
+ "max-request-size" : {
+ "type" : "string",
+ "description" : "Max request size.",
+ "default" : "10MB"
+ },
+ "resolve-lazily" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to resolve the multipart request lazily at the time of file or parameter access.",
+ "default" : false
+ },
+ "strict-servlet-compliance" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to resolve the multipart request strictly complying with the Servlet specification, only to be used for \"multipart/form-data\" requests.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "sql" : {
+ "type" : "object",
+ "properties" : {
+ "init" : {
+ "type" : "object",
+ "properties" : {
+ "continue-on-error" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether initialization should continue when an error occurs.",
+ "default" : false
+ },
+ "data-locations" : {
+ "type" : [ "array", "string" ],
+ "description" : "Locations of the data (DML) scripts to apply to the database.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether basic script-based initialization of an SQL database is enabled.",
+ "deprecated" : true,
+ "default" : true,
+ "x-deprecation" : {
+ "replacement" : "spring.sql.init.mode",
+ "level" : "WARNING"
+ }
+ },
+ "encoding" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Encoding of the schema and data scripts."
+ },
+ "mode" : {
+ "type" : "string",
+ "description" : "Mode to apply when determining whether initialization should be performed.",
+ "default" : "embedded",
+ "enum" : [ "always", "never", "EMBEDDED", "NEVER", "ALWAYS", "embedded" ]
+ },
+ "password" : {
+ "type" : "string",
+ "description" : "Password of the database to use when applying initialization scripts (if different)."
+ },
+ "platform" : {
+ "type" : "string",
+ "description" : "Platform to use in the default schema or data script locations, schema-${platform}.sql and data-${platform}.sql.",
+ "default" : "all"
+ },
+ "schema-locations" : {
+ "type" : [ "array", "string" ],
+ "description" : "Locations of the schema (DDL) scripts to apply to the database.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "separator" : {
+ "type" : "string",
+ "description" : "Statement separator in the schema and data scripts.",
+ "default" : ";"
+ },
+ "username" : {
+ "type" : "string",
+ "description" : "Username of the database to use when applying initialization scripts (if different)."
+ }
+ }
+ }
+ }
+ },
+ "ssl" : {
+ "type" : "object",
+ "properties" : {
+ "bundle" : {
+ "type" : "object",
+ "properties" : {
+ "jks" : {
+ "type" : "object",
+ "description" : "Java keystore SSL trust material.",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "keystore" : {
+ "$ref" : "#/$defs/org.springframework.boot.autoconfigure.ssl.JksSslBundleProperties:Store"
+ },
+ "truststore" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.springframework.boot.autoconfigure.ssl.JksSslBundleProperties:Store"
+ }
+ }
+ }
+ },
+ "pem" : {
+ "type" : "object",
+ "description" : "PEM-encoded SSL trust material.",
+ "additionalProperties" : {
+ "type" : "object",
+ "properties" : {
+ "keystore" : {
+ "$ref" : "#/$defs/org.springframework.boot.autoconfigure.ssl.PemSslBundleProperties:Store"
+ },
+ "truststore" : {
+ "type" : "object",
+ "$ref" : "#/$defs/org.springframework.boot.autoconfigure.ssl.PemSslBundleProperties:Store"
+ }
+ }
+ }
+ },
+ "watch" : {
+ "type" : "object",
+ "properties" : {
+ "file" : {
+ "type" : "object",
+ "properties" : {
+ "quiet-period" : {
+ "type" : "string",
+ "description" : "Quiet period, after which changes are detected.",
+ "default" : "10s"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "task" : {
+ "type" : "object",
+ "properties" : {
+ "execution" : {
+ "type" : "object",
+ "properties" : {
+ "mode" : {
+ "type" : "string",
+ "description" : "Determine when the task executor is to be created.",
+ "default" : "auto",
+ "enum" : [ "AUTO", "auto", "FORCE", "force" ]
+ },
+ "pool" : {
+ "type" : "object",
+ "properties" : {
+ "allow-core-thread-timeout" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether core threads are allowed to time out. This enables dynamic growing and shrinking of the pool. Doesn't have an effect if virtual threads are enabled.",
+ "default" : true
+ },
+ "core-size" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Core number of threads. Doesn't have an effect if virtual threads are enabled.",
+ "default" : 8
+ },
+ "keep-alive" : {
+ "type" : "string",
+ "description" : "Time limit for which threads may remain idle before being terminated. Doesn't have an effect if virtual threads are enabled.",
+ "default" : "60s"
+ },
+ "max-size" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum allowed number of threads. If tasks are filling up the queue, the pool can expand up to that size to accommodate the load. Ignored if the queue is unbounded. Doesn't have an effect if virtual threads are enabled."
+ },
+ "queue-capacity" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Queue capacity. An unbounded capacity does not increase the pool and therefore ignores the \"max-size\" property. Doesn't have an effect if virtual threads are enabled."
+ },
+ "shutdown" : {
+ "type" : "object",
+ "properties" : {
+ "accept-tasks-after-context-close" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to accept further tasks after the application context close phase has begun.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "shutdown" : {
+ "type" : "object",
+ "properties" : {
+ "await-termination" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the executor should wait for scheduled tasks to complete on shutdown.",
+ "default" : false
+ },
+ "await-termination-period" : {
+ "type" : "string",
+ "description" : "Maximum time the executor should wait for remaining tasks to complete."
+ }
+ }
+ },
+ "simple" : {
+ "type" : "object",
+ "properties" : {
+ "concurrency-limit" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Set the maximum number of parallel accesses allowed. -1 indicates no concurrency limit at all."
+ },
+ "reject-tasks-when-limit-reached" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to reject tasks when the concurrency limit has been reached.",
+ "default" : false
+ }
+ }
+ },
+ "thread-name-prefix" : {
+ "type" : "string",
+ "description" : "Prefix to use for the names of newly created threads.",
+ "default" : "task-"
+ }
+ }
+ },
+ "scheduling" : {
+ "type" : "object",
+ "properties" : {
+ "pool" : {
+ "type" : "object",
+ "properties" : {
+ "size" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum allowed number of threads. Doesn't have an effect if virtual threads are enabled.",
+ "default" : 1
+ }
+ }
+ },
+ "shutdown" : {
+ "type" : "object",
+ "properties" : {
+ "await-termination" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether the executor should wait for scheduled tasks to complete on shutdown.",
+ "default" : false
+ },
+ "await-termination-period" : {
+ "type" : "string",
+ "description" : "Maximum time the executor should wait for remaining tasks to complete."
+ }
+ }
+ },
+ "simple" : {
+ "type" : "object",
+ "properties" : {
+ "concurrency-limit" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Set the maximum number of parallel accesses allowed. -1 indicates no concurrency limit at all."
+ }
+ }
+ },
+ "thread-name-prefix" : {
+ "type" : "string",
+ "description" : "Prefix to use for the names of newly created threads.",
+ "default" : "scheduling-"
+ }
+ }
+ }
+ }
+ },
+ "threads" : {
+ "type" : "object",
+ "properties" : {
+ "virtual" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to use virtual threads.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "thymeleaf" : {
+ "type" : "object",
+ "properties" : {
+ "cache" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable template caching.",
+ "default" : true
+ }
+ }
+ },
+ "transaction" : {
+ "type" : "object",
+ "properties" : {
+ "default-timeout" : {
+ "type" : "string",
+ "description" : "Default transaction timeout. If a duration suffix is not specified, seconds will be used."
+ },
+ "rollback-on-commit-failure" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to roll back on commit failures."
+ }
+ }
+ },
+ "web" : {
+ "type" : "object",
+ "properties" : {
+ "locale" : {
+ "$ref" : "#/$defs/java.util.Locale",
+ "description" : "Locale to use. By default, this locale is overridden by the \"Accept-Language\" header."
+ },
+ "locale-resolver" : {
+ "type" : "string",
+ "description" : "Define how the locale should be resolved.",
+ "default" : "accept-header",
+ "enum" : [ "ACCEPT_HEADER", "accept_header", "FIXED", "fixed" ]
+ },
+ "resources" : {
+ "type" : "object",
+ "properties" : {
+ "add-mappings" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable default resource handling.",
+ "default" : true
+ },
+ "c-l-a-s-s-p-a-t-h_r-e-s-o-u-r-c-e_l-o-c-a-t-i-o-n-s" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "cache" : {
+ "type" : "object",
+ "properties" : {
+ "cachecontrol" : {
+ "type" : "object",
+ "properties" : {
+ "cache-private" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Indicate that the response message is intended for a single user and must not be stored by a shared cache."
+ },
+ "cache-public" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Indicate that any cache may store the response."
+ },
+ "customized" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "max-age" : {
+ "type" : "string",
+ "description" : "Maximum time the response should be cached, in seconds if no duration suffix is not specified."
+ },
+ "must-revalidate" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Indicate that once it has become stale, a cache must not use the response without re-validating it with the server."
+ },
+ "no-cache" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Indicate that the cached response can be reused only if re-validated with the server."
+ },
+ "no-store" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Indicate to not cache the response in any case."
+ },
+ "no-transform" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Indicate intermediaries (caches and others) that they should not transform the response content."
+ },
+ "proxy-revalidate" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Same meaning as the \"must-revalidate\" directive, except that it does not apply to private caches."
+ },
+ "s-max-age" : {
+ "type" : "string",
+ "description" : "Maximum time the response should be cached by shared caches, in seconds if no duration suffix is not specified."
+ },
+ "stale-if-error" : {
+ "type" : "string",
+ "description" : "Maximum time the response may be used when errors are encountered, in seconds if no duration suffix is not specified."
+ },
+ "stale-while-revalidate" : {
+ "type" : "string",
+ "description" : "Maximum time the response can be served after it becomes stale, in seconds if no duration suffix is not specified."
+ }
+ }
+ },
+ "customized" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "period" : {
+ "type" : "string",
+ "description" : "Cache period for the resources served by the resource handler. If a duration suffix is not specified, seconds will be used. Can be overridden by the 'spring.web.resources.cache.cachecontrol' properties."
+ },
+ "use-last-modified" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether we should use the \"lastModified\" metadata of the files in HTTP caching headers.",
+ "default" : true
+ }
+ }
+ },
+ "chain" : {
+ "type" : "object",
+ "properties" : {
+ "cache" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable caching in the Resource chain.",
+ "default" : true
+ },
+ "compressed" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable resolution of already compressed resources (gzip, brotli). Checks for a resource name with the '.gz' or '.br' file extensions.",
+ "default" : false
+ },
+ "customized" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the Spring Resource Handling chain. By default, disabled unless at least one strategy has been enabled."
+ },
+ "strategy" : {
+ "type" : "object",
+ "properties" : {
+ "content" : {
+ "type" : "object",
+ "properties" : {
+ "customized" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the content Version Strategy.",
+ "default" : false
+ },
+ "paths" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of patterns to apply to the content Version Strategy.",
+ "default" : [ "/**" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "fixed" : {
+ "type" : "object",
+ "properties" : {
+ "customized" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable the fixed Version Strategy.",
+ "default" : false
+ },
+ "paths" : {
+ "type" : [ "array", "string" ],
+ "description" : "List of patterns to apply to the fixed Version Strategy.",
+ "default" : [ "/**" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "version" : {
+ "type" : "string",
+ "description" : "Version string to use for the fixed Version Strategy."
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "customized" : {
+ "type" : [ "boolean", "string" ]
+ },
+ "static-locations" : {
+ "type" : [ "array", "string" ],
+ "description" : "Locations of static resources. Defaults to classpath:[/META-INF/resources/, /resources/, /static/, /public/].",
+ "default" : [ "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "webflux" : {
+ "type" : "object",
+ "properties" : {
+ "base-path" : {
+ "type" : "string",
+ "description" : "Base path for all web handlers."
+ },
+ "format" : {
+ "type" : "object",
+ "properties" : {
+ "date" : {
+ "type" : "string",
+ "description" : "Date format to use, for example 'dd/MM/yyyy'. Used for formatting of java.util.Date and java.time.LocalDate.",
+ "examples" : [ "dd/MM/yyyy", "iso" ]
+ },
+ "date-time" : {
+ "type" : "string",
+ "description" : "Date-time format to use, for example 'yyyy-MM-dd HH:mm:ss'. Used for formatting of java.time's LocalDateTime, OffsetDateTime, and ZonedDateTime.",
+ "examples" : [ "yyyy-MM-dd HH:mm:ss", "iso", "iso-offset" ]
+ },
+ "time" : {
+ "type" : "string",
+ "description" : "Time format to use, for example 'HH:mm:ss'. Used for formatting of java.time's LocalTime and OffsetTime.",
+ "examples" : [ "HH:mm:ss", "iso", "iso-offset" ]
+ }
+ }
+ },
+ "hiddenmethod" : {
+ "type" : "object",
+ "properties" : {
+ "filter" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to enable Spring's HiddenHttpMethodFilter.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "multipart" : {
+ "type" : "object",
+ "properties" : {
+ "file-storage-directory" : {
+ "type" : "string",
+ "description" : "Directory used to store file parts larger than 'maxInMemorySize'. Default is a directory named 'spring-multipart' created under the system temporary directory. Ignored when using the PartEvent streaming support."
+ },
+ "headers-charset" : {
+ "$ref" : "#/$defs/java.nio.charset.Charset",
+ "description" : "Character set used to decode headers.",
+ "default" : "UTF-8"
+ },
+ "max-disk-usage-per-part" : {
+ "type" : "string",
+ "description" : "Maximum amount of disk space allowed per part. Default is -1 which enforces no limits.",
+ "default" : "-1B"
+ },
+ "max-headers-size" : {
+ "type" : "string",
+ "description" : "Maximum amount of memory allowed per headers section of each part. Set to -1 to enforce no limits.",
+ "default" : "10KB"
+ },
+ "max-in-memory-size" : {
+ "type" : "string",
+ "description" : "Maximum amount of memory allowed per part before it's written to disk. Set to -1 to store all contents in memory.",
+ "default" : "256KB"
+ },
+ "max-parts" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Maximum number of parts allowed in a given multipart request. Default is -1 which enforces no limits.",
+ "default" : -1
+ }
+ }
+ },
+ "problemdetails" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether RFC 9457 Problem Details support should be enabled.",
+ "default" : false
+ }
+ }
+ },
+ "static-path-pattern" : {
+ "type" : "string",
+ "description" : "Path pattern used for static resources.",
+ "default" : "/**"
+ },
+ "webjars-path-pattern" : {
+ "type" : "string",
+ "description" : "Path pattern used for WebJar assets.",
+ "default" : "/webjars/**"
+ }
+ }
+ },
+ "webservices" : {
+ "type" : "object",
+ "properties" : {
+ "path" : {
+ "type" : "string",
+ "description" : "Path that serves as the base URI for the services.",
+ "default" : "/services"
+ },
+ "servlet" : {
+ "type" : "object",
+ "properties" : {
+ "init" : {
+ "type" : "object",
+ "description" : "Servlet init parameters to pass to Spring Web Services."
+ },
+ "load-on-startup" : {
+ "type" : [ "integer", "string" ],
+ "description" : "Load on startup priority of the Spring Web Services servlet.",
+ "default" : -1
+ }
+ }
+ },
+ "wsdl-locations" : {
+ "type" : [ "array", "string" ],
+ "description" : "Comma-separated list of locations of WSDLs and accompanying XSDs to be exposed as beans.",
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "springdoc" : {
+ "type" : "object",
+ "properties" : {
+ "api-docs" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to generate and serve an OpenAPI document.",
+ "default" : true
+ },
+ "groups" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enabled.",
+ "default" : false
+ }
+ }
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "Path to the generated OpenAPI documentation. For a yaml file, append \".yaml\" to the path."
+ },
+ "resolve-extensions-properties" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Resolve extensions properties.",
+ "default" : false
+ },
+ "resolve-schema-properties" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Resolve schema properties.",
+ "default" : false
+ },
+ "version" : {
+ "type" : "string",
+ "description" : "The OpenAPI version.",
+ "default" : "openapi-3-1",
+ "enum" : [ "OPENAPI_3_0", "OPENAPI_3_1", "openapi_3_1", "openapi_3_0" ]
+ }
+ }
+ },
+ "auto-tag-classes" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Auto tag classes.",
+ "default" : true
+ },
+ "cache" : {
+ "type" : "object",
+ "properties" : {
+ "disabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Disabled.",
+ "default" : false
+ }
+ }
+ },
+ "consumes-to-match" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Consumes to match.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "default-consumes-media-type" : {
+ "type" : "string",
+ "description" : "The Default consumes media type."
+ },
+ "default-flat-param-object" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The param default flatten",
+ "default" : false
+ },
+ "default-produces-media-type" : {
+ "type" : "string",
+ "description" : "The Default produces media type."
+ },
+ "default-support-form-data" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "convert query param to form data when consumes is multipart/form-data",
+ "default" : false
+ },
+ "disable-i18n" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Disable i18n.",
+ "default" : false
+ },
+ "enable-data-rest" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enable hateoas.",
+ "default" : true
+ },
+ "enable-default-api-docs" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enable default api docs.",
+ "default" : true
+ },
+ "enable-groovy" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enable groovy.",
+ "default" : true
+ },
+ "enable-hateoas" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enable hateoas.",
+ "default" : true
+ },
+ "enable-javadoc" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enable javadoc.",
+ "default" : true
+ },
+ "enable-kotlin" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enable kotlin.",
+ "default" : true
+ },
+ "enable-spring-security" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enable spring security.",
+ "default" : true
+ },
+ "group-configs" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Group configs.",
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "consumes-to-match" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "display-name" : {
+ "type" : "string"
+ },
+ "group" : {
+ "type" : "string"
+ },
+ "headers-to-match" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "open-api" : {
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.OpenAPI"
+ },
+ "packages-to-exclude" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "packages-to-scan" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "paths-to-exclude" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "paths-to-match" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "produces-to-match" : {
+ "type" : [ "array", "string" ],
+ "items" : {
+ "type" : "string"
+ }
+ }
+ }
+ }
+ },
+ "headers-to-match" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Headers to match.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "model-and-view-allowed" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Model and view allowed.",
+ "default" : false
+ },
+ "model-converters" : {
+ "type" : "object",
+ "properties" : {
+ "deprecating-converter" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enabled.",
+ "default" : false
+ }
+ }
+ },
+ "pageable-converter" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enabled.",
+ "default" : false
+ }
+ }
+ },
+ "polymorphic-converter" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enabled.",
+ "default" : false
+ }
+ }
+ }
+ }
+ },
+ "nullable-request-parameter-enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Nullable request parameter enabled.",
+ "default" : false
+ },
+ "open-api" : {
+ "type" : "object",
+ "$ref" : "#/$defs/io.swagger.v3.oas.models.OpenAPI"
+ },
+ "override-with-generic-response" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Override with generic response."
+ },
+ "packages-to-exclude" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Packages to exclude.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "packages-to-scan" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Packages to scan.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "paths-to-exclude" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Paths to exclude.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "paths-to-match" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Paths to match.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "pre-loading-enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Allow for pre-loading OpenAPI",
+ "default" : false
+ },
+ "pre-loading-locales" : {
+ "type" : [ "array", "string" ],
+ "description" : "locale list to pre-loading",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "produces-to-match" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Produces to match.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "remove-broken-reference-definitions" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Remove broken reference definitions.",
+ "default" : true
+ },
+ "show-actuator" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Show actuator.",
+ "default" : false
+ },
+ "show-login-endpoint" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Show login endpoint.",
+ "default" : false
+ },
+ "show-oauth2-endpoints" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Show oauth 2 endpoint.",
+ "default" : false
+ },
+ "show-spring-cloud-functions" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Show spring cloud functions.",
+ "default" : true
+ },
+ "sort-converter" : {
+ "type" : "object",
+ "properties" : {
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enabled.",
+ "default" : false
+ }
+ }
+ },
+ "swagger-ui" : {
+ "type" : "object",
+ "properties" : {
+ "config-url" : {
+ "type" : "string",
+ "description" : "URL to fetch external configuration document from."
+ },
+ "csrf" : {
+ "type" : "object",
+ "properties" : {
+ "cookie-name" : {
+ "type" : "string",
+ "description" : "The Cookie name."
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Enabled.",
+ "default" : false
+ },
+ "header-name" : {
+ "type" : "string",
+ "description" : "The Header name."
+ },
+ "local-storage-key" : {
+ "type" : "string",
+ "description" : "The Local storage key."
+ },
+ "session-storage-key" : {
+ "type" : "string",
+ "description" : "The Session storage key."
+ },
+ "use-local-storage" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Use Local storage.",
+ "default" : false
+ },
+ "use-session-storage" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Use Session storage.",
+ "default" : false
+ }
+ }
+ },
+ "deep-linking" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Enables or disables deep linking for tags and operations. @see deep-linking.md"
+ },
+ "default-model-expand-depth" : {
+ "type" : [ "integer", "string" ],
+ "description" : "The default expansion depth for the model on the model-example section."
+ },
+ "default-model-rendering" : {
+ "type" : "string",
+ "description" : "Controls how the model is shown when the API is first rendered."
+ },
+ "default-models-expand-depth" : {
+ "type" : [ "integer", "string" ],
+ "description" : "The default expansion depth for models (set to -1 completely hide the models)."
+ },
+ "disable-swagger-default-url" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Disable swagger default url.",
+ "default" : false
+ },
+ "display-operation-id" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Controls the display of operationId in operations list."
+ },
+ "display-request-duration" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Controls the display of the request duration (in milliseconds) for Try-It-Out requests."
+ },
+ "doc-expansion" : {
+ "type" : "string",
+ "description" : "Controls the default expansion setting for the operations and tags."
+ },
+ "enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Whether to generate and serve an OpenAPI document.",
+ "default" : true
+ },
+ "filter" : {
+ "type" : "string",
+ "description" : "If set, enables filtering. The top bar will show an edit box that could be used to filter the tagged operations that are shown."
+ },
+ "groups-order" : {
+ "type" : "string",
+ "description" : "The Groups order.",
+ "default" : "asc",
+ "enum" : [ "asc", "ASC", "DESC", "desc" ]
+ },
+ "layout" : {
+ "type" : "string",
+ "description" : "The name of a component available via the plugin system to use as the top-level layout for Swagger UI."
+ },
+ "max-displayed-tags" : {
+ "type" : [ "integer", "string" ],
+ "description" : "If set, limits the number of tagged operations displayed to at most this many."
+ },
+ "oauth" : {
+ "type" : "object",
+ "properties" : {
+ "additional-query-string-params" : {
+ "type" : "object",
+ "description" : "The Additional query string params."
+ },
+ "app-name" : {
+ "type" : "string",
+ "description" : "The App name."
+ },
+ "client-id" : {
+ "type" : "string",
+ "description" : "The Client id."
+ },
+ "client-secret" : {
+ "type" : "string",
+ "description" : "The Client secret."
+ },
+ "config-parameters" : {
+ "type" : "object",
+ "additionalProperties" : {
+ "type" : "object"
+ }
+ },
+ "realm" : {
+ "type" : "string",
+ "description" : "The Realm."
+ },
+ "scope-separator" : {
+ "type" : "string",
+ "description" : "The Scope separator."
+ },
+ "scopes" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Scopes selected by default upon authentication.",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "use-basic-authentication-with-access-code-grant" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Use basic authentication with access code grant."
+ },
+ "use-pkce-with-authorization-code-grant" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Use pkce with authorization code grant."
+ }
+ }
+ },
+ "oauth2-redirect-url" : {
+ "type" : "string",
+ "description" : "OAuth redirect URL."
+ },
+ "operations-sorter" : {
+ "type" : "string",
+ "description" : "Apply a sort to the operation list of each API"
+ },
+ "path" : {
+ "type" : "string",
+ "description" : "The path for the Swagger UI pages to load. Will redirect to the springdoc.webjars.prefix property."
+ },
+ "persist-authorization" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Persist authorization."
+ },
+ "query-config-enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Query config enabled."
+ },
+ "show-common-extensions" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Controls the display of extensions"
+ },
+ "show-extensions" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Controls the display of vendor extension (x-) fields and values."
+ },
+ "supported-submit-methods" : {
+ "type" : [ "array", "string" ],
+ "description" : "The supported try it out methods",
+ "items" : {
+ "type" : "string"
+ }
+ },
+ "syntax-highlight" : {
+ "type" : "object",
+ "properties" : {
+ "activated" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Activated."
+ },
+ "theme" : {
+ "type" : "string",
+ "description" : "The Theme."
+ }
+ }
+ },
+ "tags-sorter" : {
+ "type" : "string",
+ "description" : "Apply a sort to the tag list of each API"
+ },
+ "try-it-out-enabled" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Try it out enabled"
+ },
+ "url" : {
+ "type" : "string",
+ "description" : "The Url."
+ },
+ "urls" : {
+ "type" : [ "array", "string" ],
+ "description" : "The Urls.",
+ "items" : {
+ "type" : "object",
+ "properties" : {
+ "display-name" : {
+ "type" : "string"
+ },
+ "name" : {
+ "type" : "string"
+ },
+ "url" : {
+ "type" : "string"
+ }
+ }
+ }
+ },
+ "urls-primary-name" : {
+ "type" : "string",
+ "description" : "The Urls primary name."
+ },
+ "use-root-path" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Use root path.",
+ "default" : false
+ },
+ "validator-url" : {
+ "type" : "string",
+ "description" : "URL to validate specs against."
+ },
+ "version" : {
+ "type" : "string",
+ "description" : "The Swagger ui version."
+ },
+ "with-credentials" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The With credentials."
+ }
+ }
+ },
+ "trim-kotlin-indent" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The trim kotlin indent.",
+ "default" : false
+ },
+ "use-fqn" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "Use fully qualified name",
+ "default" : false
+ },
+ "use-management-port" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "If set to true, exposes the swagger-ui on the actuator management port.",
+ "default" : false
+ },
+ "webjars" : {
+ "type" : "object",
+ "properties" : {
+ "prefix" : {
+ "type" : "string",
+ "description" : "The Prefix."
+ }
+ }
+ },
+ "writer-with-default-pretty-printer" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Writer with default pretty printer.",
+ "default" : false
+ },
+ "writer-with-order-by-keys" : {
+ "type" : [ "boolean", "string" ],
+ "description" : "The Writer with order by keys.",
+ "default" : false
+ }
+ }
+ }
+ },
+ "additionalProperties" : true
+}
diff --git a/src/test/java/org/patinanetwork/codebloom/utilities/generator/schema/ConfigSchemaGeneratorTest.java b/src/test/java/org/patinanetwork/codebloom/utilities/generator/schema/ConfigSchemaGeneratorTest.java
new file mode 100644
index 000000000..a8ef400f1
--- /dev/null
+++ b/src/test/java/org/patinanetwork/codebloom/utilities/generator/schema/ConfigSchemaGeneratorTest.java
@@ -0,0 +1,141 @@
+package org.patinanetwork.codebloom.utilities.generator.schema;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import org.alexmond.config.json.schema.service.JsonSchemaService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.io.TempDir;
+
+class ConfigSchemaGeneratorTest {
+
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+
+ @TempDir
+ private Path tempDir;
+
+ private Path outputPath;
+ private JsonSchemaService jsonSchemaService;
+ private ConfigSchemaGenerator generator;
+
+ @BeforeEach
+ void setUp() {
+ outputPath = tempDir.resolve("config-schema.json");
+ jsonSchemaService = mock(JsonSchemaService.class);
+ generator = new ConfigSchemaGenerator(jsonSchemaService, outputPath);
+ }
+
+ private JsonNode generate(final String librarySchema) throws Exception {
+ when(jsonSchemaService.generateFullSchemaJson()).thenReturn(librarySchema);
+ generator.run();
+ return MAPPER.readTree(Files.readString(outputPath));
+ }
+
+ @Test
+ void stripsStringAnchorsAtEveryDepth() throws Exception {
+ JsonNode schema = generate("""
+ {
+ "$defs": {
+ "a.B:C": {"type": "object", "$anchor": "a.B:C"}
+ },
+ "properties": {
+ "server": {
+ "type": "object",
+ "$anchor": "x.Y$Z",
+ "properties": {
+ "list": {"type": "array", "items": {"type": "object", "$anchor": "p.Q$R"}},
+ "map": {"type": "object", "additionalProperties": {"type": "object", "$anchor": "m.N"}}
+ }
+ }
+ }
+ }
+ """);
+
+ assertFalse(schema.at("/$defs/a.B:C").has("$anchor"));
+ JsonNode server = schema.at("/properties/server");
+ assertFalse(server.has("$anchor"));
+ assertFalse(server.at("/properties/list/items").has("$anchor"));
+ assertFalse(server.at("/properties/map/additionalProperties").has("$anchor"));
+ }
+
+ @Test
+ void keepsPropertyNamedAnchor() throws Exception {
+ JsonNode schema = generate("""
+ {"properties": {"$anchor": {"type": "string"}}}
+ """);
+
+ assertEquals("string", schema.at("/properties/$anchor/type").asText());
+ }
+
+ @Test
+ void widensCoercibleTypesToAlsoAcceptString() throws Exception {
+ JsonNode schema = generate("""
+ {
+ "properties": {
+ "flag": {"type": "boolean", "default": false},
+ "port": {"type": "integer"},
+ "ratio": {"type": "number"},
+ "scopes": {"type": "array", "items": {"type": "integer"}}
+ }
+ }
+ """);
+
+ assertEquals(MAPPER.readTree("[\"boolean\", \"string\"]"), schema.at("/properties/flag/type"));
+ assertFalse(schema.at("/properties/flag/default").asBoolean());
+ assertEquals(MAPPER.readTree("[\"integer\", \"string\"]"), schema.at("/properties/port/type"));
+ assertEquals(MAPPER.readTree("[\"number\", \"string\"]"), schema.at("/properties/ratio/type"));
+ assertEquals(MAPPER.readTree("[\"array\", \"string\"]"), schema.at("/properties/scopes/type"));
+ assertEquals(MAPPER.readTree("[\"integer\", \"string\"]"), schema.at("/properties/scopes/items/type"));
+ }
+
+ @Test
+ void leavesStringAndObjectTypesAlone() throws Exception {
+ JsonNode schema = generate("""
+ {
+ "type": "object",
+ "properties": {
+ "host": {"type": "string"},
+ "type": {"type": "object", "properties": {}}
+ }
+ }
+ """);
+
+ assertEquals("object", schema.at("/type").asText());
+ assertEquals("string", schema.at("/properties/host/type").asText());
+ assertEquals("object", schema.at("/properties/type/type").asText());
+ }
+
+ @Test
+ void writesPrettyPrintedJsonEndingInNewline() throws Exception {
+ when(jsonSchemaService.generateFullSchemaJson()).thenReturn("{\"type\":\"object\"}");
+
+ generator.run();
+
+ String written = Files.readString(outputPath);
+ assertTrue(written.endsWith("}\n"));
+ assertTrue(written.contains("\"type\" : \"object\""));
+ }
+
+ @Test
+ void generationFailureDoesNotThrowOrWriteFile() {
+ when(jsonSchemaService.generateFullSchemaJson()).thenThrow(new IllegalStateException("boom"));
+
+ assertDoesNotThrow(() -> generator.run());
+ assertFalse(Files.exists(outputPath));
+ }
+
+ @Test
+ void invalidJsonFromLibraryLeavesExistingFileUntouched() throws Exception {
+ Files.writeString(outputPath, "previous\n");
+ when(jsonSchemaService.generateFullSchemaJson()).thenReturn("not json");
+
+ assertDoesNotThrow(() -> generator.run());
+ assertEquals("previous\n", Files.readString(outputPath));
+ }
+}