{
  "$schema" : "https://json-schema.org/draft/2019-09/schema",
  "$defs" : {
    "Codegen" : {
      "type" : "object",
      "properties" : {
        "NamespacePackage" : {
          "$ref" : "#/$defs/Map(String,String)",
          "description" : "Namespace to package name mappings"
        },
        "UnderscoreNames" : {
          "type" : "boolean",
          "description" : "Whether underscore names in types should be stated in client-code or writen in camelCase flavor.",
          "default" : "false"
        },
        "WsdlUrl" : {
          "description" : "WSDL Uri to generate the client from. Can also be a local file.",
          "additionalProperties" : false,
          "type" : "string",
          "format" : "uri",
          "examples" : [ "https://acme.com/service?WSDL", "file:///home/user/Downloads/acmeService.wsdl" ]
        }
      },
      "additionalProperties" : false
    },
    "Map(String,String)" : {
      "type" : "object",
      "additionalProperties" : {
        "type" : "string"
      }
    },
    "Map(String,WebServiceClientSchema)" : {
      "type" : "object",
      "additionalProperties" : {
        "$ref" : "#/$defs/WebServiceClient"
      }
    },
    "WebServiceClient" : {
      "type" : "object",
      "properties" : {
        "Name" : {
          "type" : "string"
        },
        "Icon" : {
          "type" : "string"
        },
        "ServiceClass" : {
          "type" : "string"
        },
        "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/WebServiceClientProperties"
        },
        "Endpoints" : {
          "description" : "Endpoint names, to URIs",
          "additionalProperties" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "type" : "object",
          "examples" : [ "myPort: - https://myCustomProdHost/hr/employee/soap" ]
        },
        "Codegen" : {
          "$ref" : "#/$defs/Codegen"
        },
        "LegacyId" : {
          "type" : "string",
          "description" : "Legacy ID of the web service client, only used for migration purposes and should not be set by users",
          "deprecated" : true
        }
      },
      "additionalProperties" : false
    },
    "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" ]
        }
      }
    }
  },
  "type" : "object",
  "properties" : {
    "WebServiceClients" : {
      "$ref" : "#/$defs/Map(String,WebServiceClientSchema)"
    }
  },
  "additionalProperties" : false
}
