{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "type" : "object",
  "properties" : {
    "SecuritySystem" : {
      "type" : "string",
      "description" : "The security system manages users and roles and must be referred by name.\nThis setting is only evaluated at deployment time when the application not already exists!\nYou can not change the security system of an application later on.",
      "default" : "default"
    },
    "OverrideProject" : {
      "type" : "string",
      "description" : "Defines a project containing overriding SubProcesses, HtmlDialogs or CMS entries for a dependent project.\nThis allows you to customize generic solutions with minimal effort.\nThe overriding project must be declared in the format <group-id>:<project-id> (e.g. ch.ivyteam.ivy:overrideProject).\nThese identifiers can be copied from the ivy project deployment definition (pom.xml).\n@designer.guide.url@/how-to/overrides.html"
    },
    "Data" : {
      "$ref" : "#/$defs/Data"
    },
    "StandardProcess" : {
      "$ref" : "#/$defs/StandardProcess"
    },
    "Jsf" : {
      "$ref" : "#/$defs/Jsf"
    },
    "Databases" : {
      "$ref" : "#/$defs/databases.json.Map(String,Database)",
      "description" : "Databases are defined in ivy projects with a name.\nConnection details from those databases can be overridden by addressing the database by name."
    },
    "RestClients" : {
      "$ref" : "#/$defs/rest-clients.json.Map(String,AppRestClient)",
      "description" : "Rest Clients are defined in ivy projects with a name.\nAny configuration from those clients can be overridden by addressing the client by name."
    },
    "WebServiceClients" : {
      "$ref" : "#/$defs/webservice-clients.json.Map(String,AppWsClient)",
      "description" : "Web Service Clients are defined in ivy projects with a name.\nAny configuration from those clients can be overridden by addressing the client with its name."
    },
    "BusinessCalendar" : {
      "type" : "string",
      "description" : "Currently active business calendar for this application."
    },
    "BusinessCalendars" : {
      "$ref" : "#/$defs/business-calendars.json.Map(String,BusinessCalendarSchema)",
      "description" : "Business calendars are organized as trees, with one root / default calendar and an arbitrary number of child calendars.\nChild business calendars inherit the values of their parent. A parent can be the root calendar or any child calendar.\n\nAt least one root calendar needs to be defined. If non is configured, a root / default calendar will be created automatically\nwith following default values:\n- Parent is empty\n- First day of week is: Monday\n- Working times are: 'morning: 8:00 - 12:00' and 'afternoon: 13:00 - 17:00'\n\nYou can reference a business calendars in a ivy projects by its name. E.g ivy.cal.get(\"myRootBusinessCalendar\")\n@engine.guide.url@/configuration/advanced-configuration.html#business-calendar"
    },
    "Variables" : {
      "$ref" : "#/$defs/variables.json.VariableMap",
      "description" : "Variables are defined in ivy projects.\nAll of them can be overridden."
    }
  },
  "additionalProperties" : false,
  "$defs" : {
    "Data" : {
      "type" : "object",
      "properties" : {
        "FilesDirectory" : {
          "type" : "string",
          "description" : "DEPRECATED: All runtime data will be stored by default in Data.Directory specified in ivy.yaml. Use Data.Directory\nto change the location of stored files.\n\nApplication folder where application files are stored. It overrides the root file folder setting.\nA change in this setting will NOT automatically move existing application files to the new location, so you need to move files manually.\nAbsolute and relative (to the engine root directory) paths are supported.\nIf not set the files will be stored under the path Data.Directory configured in ivy.yaml.\n[restart required] for existing apps"
        }
      },
      "additionalProperties" : false
    },
    "Jsf" : {
      "type" : "object",
      "properties" : {
        "primefaces.theme" : {
          "type" : "string",
          "description" : "JSF Primefaces Theme that is used by HTML Dialogs\nStandard themes:\n vela, saga, arya\nFreya themes:\n freya-ivy-light, freya-ivy-dark\nDeprecated themes:\n luna-amber, luna-blue, luna-green, luna-pink, nova-colored, nova-dark, nova-light\nThis configuration has no effect if theme is specified in the xhtml template.\n@designer.guide.url@/user-interface/user-dialogs/html-dialog-themes.html",
          "default" : "freya-ivy-light"
        }
      },
      "additionalProperties" : false
    },
    "StandardProcess" : {
      "type" : "object",
      "properties" : {
        "DefaultPages" : {
          "type" : "string",
          "description" : "Standard processes are a set of predefined processes, which you can customize in your ivy project.\nTo enable these custom processes, the library id of the ivy project must be specified here.\nThe library id is <group-id>:<project-id> from the ivy project deployment definition.\ne.g the library id of the portal template is \"ch.ivyteam.ivy.project.portal:portalTemplate\"\nThe default is 'auto' which means auto detection of standard process in your application\n@designer.guide.url@/user-interface/default-pages",
          "default" : "auto"
        }
      },
      "additionalProperties" : false
    },
    "databases.json.Database" : {
      "type" : "object",
      "properties" : {
        "Url" : {
          "description" : "JDBC Url to use for connections.",
          "additionalProperties" : false,
          "type" : "string",
          "format" : "uri",
          "examples" : [ "jdbc:{vendor}://{host}:{port}/{dbName}", "jdbc:postgresql://pghost/prod", "jdbc:mysql://mysqlhost/erpTstaging", "jdbc:sqlserver://microsoft-host;databaseName=stammdaten" ]
        },
        "Driver" : {
          "description" : "JDBC driver Name.",
          "additionalProperties" : false,
          "type" : "string",
          "examples" : [ "com.mysql.cj.jdbc.Driver", "org.postgresql.Driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver", "oracle.jdbc.OracleDriver", "org.mariadb.jdbc.Driver", "org.hsqldb.jdbc.JDBCDriver" ]
        },
        "UserName" : {
          "type" : "string"
        },
        "Password" : {
          "type" : "string",
          "description" : "Secret password, should be stored encrypted. Encrypted values have a ${decrypt:} prefix",
          "format" : "password"
        },
        "MaxConnections" : {
          "type" : "integer"
        },
        "Properties" : {
          "$ref" : "#/$defs/databases.json.Map(String,String)",
          "description" : "Driver specific custom properties"
        }
      },
      "additionalProperties" : false
    },
    "databases.json.Map(String,Database)" : {
      "type" : "object",
      "additionalProperties" : {
        "$ref" : "#/$defs/databases.json.Database"
      }
    },
    "databases.json.Map(String,String)" : {
      "type" : "object",
      "additionalProperties" : {
        "type" : "string"
      }
    },
    "rest-clients.json.AppRestClient" : {
      "type" : "object",
      "properties" : {
        "Url" : {
          "type" : "string",
          "format" : "uri"
        },
        "Features" : {
          "description" : "Full qualified class names, that contribute REST-client features, such as authentication.",
          "type" : "array",
          "items" : {
            "type" : "string"
          },
          "examples" : [ "ch.ivyteam.ivy.rest.client.mapper.JsonFeature", "ch.ivyteam.ivy.rest.client.security.CsrfHeaderFeature", "org.glassfish.jersey.media.multipart.MultiPartFeature", "ch.ivyteam.ivy.rest.client.authentication.HttpBasicAuthenticationFeature", "ch.ivyteam.ivy.rest.client.authentication.HttpBasicOrDigestAuthenticationFeature", "ch.ivyteam.ivy.rest.client.authentication.HttpDigestAuthenticationFeature", "ch.ivyteam.ivy.rest.client.authentication.NtlmAuthenticationFeature" ]
        },
        "Properties" : {
          "description" : "Properties that supply dynamic values for REST-client features.",
          "$ref" : "#/$defs/rest-clients.json.RestProperties"
        }
      },
      "additionalProperties" : false
    },
    "rest-clients.json.Map(String,AppRestClient)" : {
      "type" : "object",
      "additionalProperties" : {
        "$ref" : "#/$defs/rest-clients.json.AppRestClient"
      }
    },
    "rest-clients.json.RestProperties" : {
      "type" : "object",
      "additionalProperties" : {
        "type" : "string"
      },
      "properties" : {
        "jersey.config.client.followRedirects" : {
          "type" : "string"
        },
        "jersey.config.client.readTimeout" : {
          "type" : "integer",
          "description" : "Read timeout interval, in milliseconds.",
          "default" : 30000
        },
        "jersey.config.client.connectTimeout" : {
          "type" : "integer",
          "description" : "Connect timeout interval, in milliseconds.",
          "default" : 30000
        },
        "jersey.config.client.chunkedEncodingSize" : {
          "type" : "string"
        },
        "jersey.config.client.async.threadPoolSize" : {
          "type" : "string"
        },
        "jersey.config.client.backgroundScheduler.threadPoolSize" : {
          "type" : "string"
        },
        "jersey.config.client.useEncoding" : {
          "type" : "string"
        },
        "jersey.config.client.ignoreExceptionResponse" : {
          "type" : "string"
        },
        "jersey.config.client.disableAutoDiscovery" : {
          "type" : "string"
        },
        "jersey.config.client.contentLength.buffer" : {
          "type" : "string"
        },
        "jersey.config.client.disableJsonBinding" : {
          "type" : "string"
        },
        "jersey.config.client.disableJsonProcessing" : {
          "type" : "string"
        },
        "jersey.config.client.disableMetainfServicesLookup" : {
          "type" : "string"
        },
        "jersey.config.client.disableMoxyJson" : {
          "type" : "string"
        },
        "jersey.config.client.suppressHttpComplianceValidation" : {
          "type" : "string"
        },
        "jersey.config.client.digestAuthUriCacheSizeLimit" : {
          "type" : "string"
        },
        "jersey.config.client.proxy.uri" : {
          "type" : "string"
        },
        "jersey.config.client.proxy.username" : {
          "type" : "string"
        },
        "jersey.config.client.proxy.password" : {
          "type" : "string"
        },
        "jersey.config.client.request.entity.processing" : {
          "type" : "string"
        },
        "jersey.config.client.request.expect.100.continue.processing" : {
          "type" : "string"
        },
        "jersey.config.client.request.expect.100.continue.threshold.size" : {
          "type" : "string"
        },
        "jersey.config.client.uri.query.param.style" : {
          "type" : "string"
        },
        "jersey.config.client.connector.provider" : {
          "type" : "string",
          "description" : "The fully-qualified class name for the connector provider to use. Ivy uses the ApacheConnectorProvider.\nImplementations of `org.glassfish.jersey.client.spi.ConnectorProvider` are valid.\nOnly has an effect when set in the REST Client Editor, cannot be changed during execution.",
          "default" : "org.glassfish.jersey.apache.connector.ApacheConnectorProvider",
          "examples" : [ "org.glassfish.jersey.client.HttpUrlConnectorProvider" ]
        },
        "jersey.config.client.sniHostName" : {
          "type" : "string"
        },
        "jersey.config.client.ssl.context.supplier" : {
          "type" : "string"
        },
        "jersey.client.pool.maxConnections" : {
          "type" : "integer",
          "description" : "Maximum number of connections to pool.\nOnly has an effect if no or the Apache connector provider is set.\nOnly has an effect when set in the REST Client Editor, cannot be changed during execution.",
          "default" : 5
        },
        "jersey.config.client.logging.entity.maxSize" : {
          "type" : "integer",
          "description" : "Bytes to record of the outgoing and incoming entity",
          "default" : 8192
        },
        "JSON.Deserialization.USE_BIG_DECIMAL_FOR_FLOATS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.USE_BIG_INTEGER_FOR_INTS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.USE_LONG_FOR_INTS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.USE_JAVA_ARRAY_FOR_JSON_ARRAY" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_UNKNOWN_PROPERTIES" : {
          "type" : "boolean",
          "description" : "Feature that determines whether encountering of unknown properties\n(those that do not map to a property, and there is not \"any setter\" or handler that can handle it)\nshould result in a failure or not.",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_NULL_FOR_PRIMITIVES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_NUMBERS_FOR_ENUMS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_INVALID_SUBTYPE" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.FAIL_ON_READING_DUP_TREE_KEY" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_IGNORED_PROPERTIES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_UNRESOLVED_OBJECT_IDS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.FAIL_ON_MISSING_CREATOR_PROPERTIES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_NULL_CREATOR_PROPERTIES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_MISSING_EXTERNAL_TYPE_ID_PROPERTY" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.FAIL_ON_TRAILING_TOKENS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_SUBTYPE_CLASS_NOT_REGISTERED" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.WRAP_EXCEPTIONS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.FAIL_ON_UNEXPECTED_VIEW_PROPERTIES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.FAIL_ON_UNKNOWN_INJECT_VALUE" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.ACCEPT_SINGLE_VALUE_AS_ARRAY" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.UNWRAP_SINGLE_VALUE_ARRAYS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.UNWRAP_ROOT_VALUE" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.ACCEPT_FLOAT_AS_INT" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.READ_ENUMS_USING_TO_STRING" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.READ_UNKNOWN_ENUM_VALUES_AS_NULL" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Deserialization.READ_DATE_TIMESTAMPS_AS_NANOSECONDS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.ADJUST_DATES_TO_CONTEXT_TIME_ZONE" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Deserialization.EAGER_DESERIALIZER_FETCH" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRAP_ROOT_VALUE" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.INDENT_OUTPUT" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.FAIL_ON_EMPTY_BEANS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.FAIL_ON_SELF_REFERENCES" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRAP_EXCEPTIONS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.FAIL_ON_UNWRAPPED_TYPE_IDENTIFIERS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRITE_SELF_REFERENCES_AS_NULL" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.CLOSE_CLOSEABLE" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.FLUSH_AFTER_WRITE_VALUE" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRITE_DATES_AS_TIMESTAMPS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRITE_DATE_KEYS_AS_TIMESTAMPS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_DATES_WITH_ZONE_ID" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_DATES_WITH_CONTEXT_TIME_ZONE" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRITE_DURATIONS_AS_TIMESTAMPS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRITE_CHAR_ARRAYS_AS_JSON_ARRAYS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_ENUMS_USING_TO_STRING" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_ENUMS_USING_INDEX" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_ENUM_KEYS_USING_INDEX" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_NULL_MAP_VALUES" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRITE_EMPTY_JSON_ARRAYS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.WRITE_SINGLE_ELEM_ARRAYS_UNWRAPPED" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_BIGDECIMAL_AS_PLAIN" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.ORDER_MAP_ENTRIES_BY_KEYS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Serialization.FAIL_ON_ORDER_MAP_BY_INCOMPARABLE_KEY" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.EAGER_SERIALIZER_FETCH" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.USE_EQUALITY_FOR_OBJECT_ID" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.USE_ANNOTATIONS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.USE_GETTERS_AS_SETTERS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.PROPAGATE_TRANSIENT_MARKER" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.AUTO_DETECT_CREATORS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.AUTO_DETECT_FIELDS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.AUTO_DETECT_GETTERS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.AUTO_DETECT_IS_GETTERS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.AUTO_DETECT_SETTERS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.REQUIRE_SETTERS_FOR_GETTERS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.ALLOW_FINAL_FIELDS_AS_MUTATORS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.INFER_PROPERTY_MUTATORS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.ALLOW_IS_GETTERS_FOR_NON_BOOLEAN" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.ALLOW_VOID_VALUED_PROPERTIES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.CAN_OVERRIDE_ACCESS_MODIFIERS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.OVERRIDE_PUBLIC_ACCESS_MODIFIERS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.INVERSE_READ_WRITE_ACCESS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.USE_STATIC_TYPING" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.USE_BASE_TYPE_AS_DEFAULT_IMPL" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.INFER_BUILDER_TYPE_BINDINGS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.REQUIRE_TYPE_ID_FOR_SUBTYPES" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.DEFAULT_VIEW_INCLUSION" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.SORT_PROPERTIES_ALPHABETICALLY" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.SORT_CREATOR_PROPERTIES_FIRST" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.SORT_CREATOR_PROPERTIES_BY_DECLARATION_ORDER" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.ACCEPT_CASE_INSENSITIVE_PROPERTIES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.ACCEPT_CASE_INSENSITIVE_ENUMS" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.ACCEPT_CASE_INSENSITIVE_VALUES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.USE_WRAPPER_NAME_AS_PROPERTY_NAME" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.USE_STD_BEAN_NAMING" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.ALLOW_EXPLICIT_PROPERTY_RENAMING" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.FIX_FIELD_NAME_UPPER_CASE_PREFIX" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.ALLOW_COERCION_OF_SCALARS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.IGNORE_DUPLICATE_MODULE_REGISTRATIONS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.IGNORE_MERGE_FOR_UNMERGEABLE" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES" : {
          "type" : "boolean",
          "default" : false
        },
        "JSON.Mapper.APPLY_DEFAULT_VALUES" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.REQUIRE_HANDLERS_FOR_JAVA8_OPTIONALS" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Mapper.REQUIRE_HANDLERS_FOR_JAVA8_TIMES" : {
          "type" : "boolean",
          "default" : true
        },
        "JSON.Serialization.PROPERTY_INCLUSION" : {
          "type" : "string",
          "description" : "Defines which properties of a java object should be included in the resulting JSON",
          "examples" : [ "ALWAYS", "NON_NULL", "NON_ABSENT", "NON_EMPTY", "NON_DEFAULT", "CUSTOM", "USE_DEFAULTS" ]
        },
        "JSON.Module.JavaTime" : {
          "type" : "boolean",
          "description" : "Enable serialization of JSR310/JavaTime objects.",
          "default" : true
        },
        "username" : {
          "type" : "string",
          "description" : "The username used for authentication by Basic, Digest or NTLM authentication."
        },
        "password" : {
          "type" : "string",
          "description" : "The password used for authentication by Basic, Digest or NTLM authentication."
        },
        "NTLM.workstation" : {
          "type" : "string",
          "description" : "The Workstation that is used for making the NTLM Request (optional). Used by the NtlmAuthenticationFeature."
        },
        "NTLM.domain" : {
          "type" : "string",
          "description" : "The Active Directory Domain to authenticate against (optional). Used by the NtlmAuthenticationFeature."
        },
        "SSL.keyAlias" : {
          "type" : "string",
          "description" : "The keystore key alias to use if the SSL connection to the REST service is configured to use client authentication.\nThis configuration can only be set in the REST Client configuration and cannot be configured in the REST Client call step.\nBy default no keystore key alias is definied."
        },
        "SensitiveData" : {
          "type" : "boolean",
          "description" : "Wether the client is exchanging sensitive data (e.g. access tokens) or not.\nIf set to 'true', the content won't be logged in tracing.\n",
          "default" : "false"
        }
      }
    },
    "webservice-clients.json.AppWsClient" : {
      "type" : "object",
      "properties" : {
        "Features" : {
          "description" : "Full qualified class names, that contribute WS-client call features, such as authentication.",
          "type" : "array",
          "items" : {
            "type" : "string"
          },
          "examples" : [ "ch.ivyteam.ivy.webservice.exec.cxf.feature.HttpBasicAuthenticationFeature", "ch.ivyteam.ivy.webservice.exec.cxf.feature.HttpDigestAuthenticationFeature", "ch.ivyteam.ivy.webservice.exec.cxf.feature.NTLMAuthenticationFeature", "ch.ivyteam.ivy.webservice.exec.cxf.feature.policy.IgnoreAllPoliciesFeature", "ch.ivyteam.ivy.webservice.exec.cxf.feature.policy.IgnorePolicyFeature", "ch.ivyteam.ivy.webservice.exec.cxf.feature.ProxyFeature", "ch.ivyteam.ivy.webservice.exec.cxf.feature.WSSecurityAuthenticationFeature" ]
        },
        "Properties" : {
          "description" : "Properties that supply dynamic values for Webservice-client features.",
          "$ref" : "#/$defs/webservice-clients.json.WebServiceClientProperties"
        },
        "Endpoints" : {
          "description" : "Endpoint names, to URIs",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "type" : "object",
          "examples" : [ "myPort: - https://myCustomProdHost/hr/employee/soap" ]
        }
      },
      "additionalProperties" : false
    },
    "webservice-clients.json.Map(String,AppWsClient)" : {
      "type" : "object",
      "additionalProperties" : {
        "$ref" : "#/$defs/webservice-clients.json.AppWsClient"
      }
    },
    "webservice-clients.json.WebServiceClientProperties" : {
      "type" : "object",
      "additionalProperties" : {
        "type" : "string"
      },
      "properties" : {
        "username" : {
          "type" : "string",
          "description" : "The username used to authenticate on the remote web service"
        },
        "password" : {
          "type" : "string",
          "description" : "The password used to authenticate on the remote web service"
        },
        "NTLM.challenge" : {
          "type" : "boolean",
          "description" : "Whether to authenticate via NTLM by responding to auth-challenges. Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.NTLMAuthenticationFeature",
          "default" : true
        },
        "NTLM.domain" : {
          "type" : "string",
          "description" : "The Active Directory Domain to authenticate against (optional). Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.NTLMAuthenticationFeature"
        },
        "NTLM.workstation" : {
          "type" : "string",
          "description" : "The workstation (host) of the computer originating the request (optional). Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.NTLMAuthenticationFeature"
        },
        "SSL.keyAlias" : {
          "type" : "string",
          "description" : "The keystore key alias to use if the SSL connection to the web service is configured to use client authentication."
        },
        "session.handlingMode" : {
          "type" : "string",
          "description" : "Defines how the session should be reused.OFF: No session handling is used.APPLICATION: Whenever the same service is invoked within an application, the existing session will be reused. In fact the cookies will be restored.",
          "examples" : [ "OFF", "APPLICATION" ]
        },
        "proxy.host" : {
          "type" : "string",
          "description" : "The name of the proxy server. Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.ProxyFeature"
        },
        "proxy.port" : {
          "type" : "integer",
          "description" : "The port number of the proxy serverUsed by the ch.ivyteam.ivy.webservice.exec.cxf.feature.ProxyFeature"
        },
        "proxy.nonProxyHosts" : {
          "type" : "integer",
          "description" : "A list of hosts that should be reached directly, not going through the proxy.It is a list of patterns seperated by \"|\". The patterns may start or end with a '*' for wildcards.Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.ProxyFeature"
        },
        "proxy.auth.scheme" : {
          "type" : "string",
          "description" : "The name of the autentication scheme used for the proxy server. Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.ProxyFeature",
          "examples" : [ "basic", "digest" ]
        },
        "proxy.auth.username" : {
          "type" : "string",
          "description" : "The user name used to authenticate against the proxy server. Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.ProxyFeature"
        },
        "proxy.auth.password" : {
          "type" : "string",
          "description" : "The password used to authenticate against the proxy server. Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.ProxyFeature"
        },
        "use.async.http.conduit" : {
          "type" : "boolean",
          "description" : "Whether to use the 'org.apache.http.nio.client.HttpAsyncClient' or not. Otherwise 'java.net.HttpURLConnection' will be used. ",
          "default" : true
        },
        "javax.xml.ws.client.connectionTimeout" : {
          "type" : "integer",
          "description" : "Specifies the amount of time, in milliseconds, that the consumer will attempt to establish a connection before it times out.",
          "default" : 30000
        },
        "javax.xml.ws.client.receiveTimeout" : {
          "type" : "integer",
          "description" : "Specifies the amount of time, in milliseconds, that the consumer will wait for a response before it times out. ",
          "default" : 60000
        },
        "log.limit" : {
          "type" : "integer",
          "description" : "Defines the maximum recorded characters, when logging input and output payloads.Values should not exceed 2147483647",
          "default" : 49152
        },
        "endpoint.cache" : {
          "type" : "boolean",
          "description" : "Caching used webservice endpoints is a performance improvement. However, if you need unique feature instances you may disable this cache.",
          "default" : true
        },
        "policy.disabled" : {
          "type" : "string",
          "description" : "A comma-separated list of policies to be disabled. A policy definition has the form 'namespaceURI:policy'. Used by the ch.ivyteam.ivy.webservice.exec.cxf.feature.policy.IgnorePolicyFeature",
          "examples" : [ "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy:SupportingTokens" ]
        },
        "schema-validation-enabled" : {
          "type" : "string",
          "description" : "Xml schema validation of SOAP requests and responses",
          "default" : "NONE",
          "examples" : [ "true", "false", "IN", "REQUEST", "OUT", "RESPONSE", "BOTH", "NONE" ]
        }
      }
    },
    "business-calendars.json.BusinessCalendar" : {
      "type" : "object",
      "properties" : {
        "FirstDayOfWeek" : {
          "$ref" : "#/$defs/business-calendars.json.Day",
          "description" : "First day of the week.\nIf empty or not existing the parent calendar's value is inherited.\nIf not defined by any parent the value is retrieved from the current locale settings"
        },
        "FreeDays" : {
          "description" : "Name-value pairs of non-working days.\n\nYearly days:\n  Recurring non-working days during a year, falling on the same date, e.g. Jan. 1 or Christmas.\n  Format: MM-dd, e.g. 01-01 (New Year), 12-25 (Christmas Day)\n\nRelative Easter Days:\n  Recurring non-working days relative to Easter Sunday, e.g. Good Friday or Pentecost.\n  Format (case insensitive): easter +/- Number, e.g. 'easter - 2' (Good Friday), 'easter + 50' (Pentecost Monday)\n\nFixed Dates:\n  Once-off non-working days, e.g. a company celebration day or a special local public holiday.\n  Format: YYYY-MM-dd\n",
          "type" : "object",
          "properties" : {
            "WeekendEnd" : {
              "description" : "End of days that are always off",
              "additionalProperties" : false,
              "type" : "string",
              "enum" : [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ],
              "examples" : [ "sunday" ]
            },
            "WeekendStart" : {
              "description" : "Start of days that are always off",
              "additionalProperties" : false,
              "type" : "string",
              "enum" : [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ],
              "examples" : [ "saturday" ]
            }
          },
          "examples" : [ "\"New Year\": 01-01", "\"Christmas Day\": 12-25", "\"Good Friday\": easter - 2", "\"Easter Monday\": easter + 1", "\"Pentecost Monday\": easter + 50", "\"50 Years Ivyteam\": 2043-04-07" ]
        },
        "Parent" : {
          "type" : [ "string", "null" ],
          "description" : "Name of the parent business calendar.\nIf empty or not existing this business calendar will be the root calendar for this application.\nOnly one root calendar is allowed."
        },
        "WorkingTimes" : {
          "description" : "Name-value pairs of working times during a business day.\nAt least one working time needs to be defined here or in any of the parents for business calendar calculations to work.\n\nWarning: Ensure that your working times in your calendar tree do not overlap.\nOtherwise the business calendar calculations may not work correctly!\n\nValue format is : HH:mm-HH:mm",
          "additionalProperties" : {
            "type" : "string"
          },
          "type" : "object",
          "examples" : [ "myMorning: 8:00-12:00", "myAfternoon: 13:00-17:00" ]
        }
      },
      "additionalProperties" : false
    },
    "business-calendars.json.Day" : {
      "type" : "string",
      "enum" : [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ]
    },
    "business-calendars.json.Map(String,BusinessCalendarSchema)" : {
      "type" : "object",
      "additionalProperties" : {
        "$ref" : "#/$defs/business-calendars.json.BusinessCalendar"
      }
    },
    "variables.json.VariableMap" : {
      "type" : "object"
    }
  }
}
