{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "Map(String,RestClientSchema)" : {
      "type" : "object",
      "additionalProperties" : {
        "$ref" : "#/$defs/RestClient"
      }
    },
    "OpenAPI" : {
      "type" : "object",
      "properties" : {
        "Namespace" : {
          "type" : "string",
          "description" : "Namespace into which service data objects are generated into"
        },
        "ResolveFully" : {
          "type" : "boolean"
        },
        "SpecUrl" : {
          "type" : "string",
          "format" : "uri",
          "description" : "URI where the OpenAPI specification was resolved from"
        }
      },
      "additionalProperties" : false
    },
    "RestClient" : {
      "type" : "object",
      "properties" : {
        "UUID" : {
          "type" : "string",
          "format" : "uuid"
        },
        "Url" : {
          "type" : "string",
          "format" : "uri"
        },
        "Icon" : {
          "type" : "string"
        },
        "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/RestProperties"
        },
        "OpenAPI" : {
          "$ref" : "#/$defs/OpenAPI"
        }
      },
      "additionalProperties" : false
    },
    "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"
        }
      }
    }
  },
  "type" : "object",
  "properties" : {
    "RestClients" : {
      "$ref" : "#/$defs/Map(String,RestClientSchema)"
    }
  },
  "additionalProperties" : false
}
