{
	"connector": {
		"class": "org.apache.camel.kafkaconnector.paho.CamelPahoSinkConnector",
		"artifactId": "camel-paho-kafka-connector",
		"groupId": "org.apache.camel.kafkaconnector",
		"id": "camel-paho-sink",
		"type": "sink",
		"version": "0.9.0",
		"description": "Communicate with MQTT message brokers using Eclipse Paho MQTT Client."
	},
	"properties": {
		"camel.sink.path.topic": {
			"name": "camel.sink.path.topic",
			"description": "Name of the topic",
			"priority": "HIGH",
			"required": "true"
		},
		"camel.sink.endpoint.automaticReconnect": {
			"name": "camel.sink.endpoint.automaticReconnect",
			"description": "Sets whether the client will automatically attempt to reconnect to the server if the connection is lost. If set to false, the client will not attempt to automatically reconnect to the server in the event that the connection is lost. If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server. It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay will double until it is at 2 minutes at which point the delay will stay at 2 minutes.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.brokerUrl": {
			"name": "camel.sink.endpoint.brokerUrl",
			"description": "The URL of the MQTT broker.",
			"defaultValue": "\"tcp:\/\/localhost:1883\"",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.cleanSession": {
			"name": "camel.sink.endpoint.cleanSession",
			"description": "Sets whether the client and server should remember state across restarts and reconnects. If set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained: Message delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted. The server will treat a subscription as durable. If set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means Message delivery to the specified QOS cannot be maintained if the client, server or connection are restarted The server will treat a subscription as non-durable",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.clientId": {
			"name": "camel.sink.endpoint.clientId",
			"description": "MQTT client identifier. The identifier must be unique.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.connectionTimeout": {
			"name": "camel.sink.endpoint.connectionTimeout",
			"description": "Sets the connection timeout value. This value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. The default timeout is 30 seconds. A value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails.",
			"defaultValue": "30",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.filePersistenceDirectory": {
			"name": "camel.sink.endpoint.filePersistenceDirectory",
			"description": "Base directory used by file persistence. Will by default use user directory.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.keepAliveInterval": {
			"name": "camel.sink.endpoint.keepAliveInterval",
			"description": "Sets the keep alive interval. This value, measured in seconds, defines the maximum time interval between messages sent or received. It enables the client to detect if the server is no longer available, without having to wait for the TCP\/IP timeout. The client will ensure that at least one message travels across the network within each keep alive period. In the absence of a data-related message during the time period, the client sends a very small ping message, which the server will acknowledge. A value of 0 disables keepalive processing in the client. The default value is 60 seconds",
			"defaultValue": "60",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.maxInflight": {
			"name": "camel.sink.endpoint.maxInflight",
			"description": "Sets the max inflight. please increase this value in a high traffic environment. The default value is 10",
			"defaultValue": "10",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.maxReconnectDelay": {
			"name": "camel.sink.endpoint.maxReconnectDelay",
			"description": "Get the maximum time (in millis) to wait between reconnects",
			"defaultValue": "128000",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.mqttVersion": {
			"name": "camel.sink.endpoint.mqttVersion",
			"description": "Sets the MQTT version. The default action is to connect with version 3.1.1, and to fall back to 3.1 if that fails. Version 3.1.1 or 3.1 can be selected specifically, with no fall back, by using the MQTT_VERSION_3_1_1 or MQTT_VERSION_3_1 options respectively.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.persistence": {
			"name": "camel.sink.endpoint.persistence",
			"description": "Client persistence to be used - memory or file. One of: [FILE] [MEMORY]",
			"defaultValue": "\"MEMORY\"",
			"priority": "MEDIUM",
			"required": "false",
			"enum": [
				"FILE",
				"MEMORY"
			]
		},
		"camel.sink.endpoint.qos": {
			"name": "camel.sink.endpoint.qos",
			"description": "Client quality of service level (0-2).",
			"defaultValue": "2",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.retained": {
			"name": "camel.sink.endpoint.retained",
			"description": "Retain option",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.serverURIs": {
			"name": "camel.sink.endpoint.serverURIs",
			"description": "Set a list of one or more serverURIs the client may connect to. Multiple servers can be separated by comma. Each serverURI specifies the address of a server that the client may connect to. Two types of connection are supported tcp:\/\/ for a TCP connection and ssl:\/\/ for a TCP connection secured by SSL\/TLS. For example: tcp:\/\/localhost:1883 ssl:\/\/localhost:8883 If the port is not specified, it will default to 1883 for tcp:\/\/ URIs, and 8883 for ssl:\/\/ URIs. If serverURIs is set then it overrides the serverURI parameter passed in on the constructor of the MQTT client. When an attempt to connect is initiated the client will start with the first serverURI in the list and work through the list until a connection is established with a server. If a connection cannot be made to any of the servers then the connect attempt fails. Specifying a list of servers that a client may connect to has several uses: High Availability and reliable message delivery Some MQTT servers support a high availability feature where two or more equal MQTT servers share state. An MQTT client can connect to any of the equal servers and be assured that messages are reliably delivered and durable subscriptions are maintained no matter which server the client connects to. The cleansession flag must be set to false if durable subscriptions and\/or reliable message delivery is required. Hunt List A set of servers may be specified that are not equal (as in the high availability option). As no state is shared across the servers reliable message delivery and durable subscriptions are not valid. The cleansession flag must be set to true if the hunt list mode is used",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.willPayload": {
			"name": "camel.sink.endpoint.willPayload",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.willQos": {
			"name": "camel.sink.endpoint.willQos",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.willRetained": {
			"name": "camel.sink.endpoint.willRetained",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.willTopic": {
			"name": "camel.sink.endpoint.willTopic",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.lazyStartProducer": {
			"name": "camel.sink.endpoint.lazyStartProducer",
			"description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.client": {
			"name": "camel.sink.endpoint.client",
			"description": "To use an existing mqtt client",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.customWebSocketHeaders": {
			"name": "camel.sink.endpoint.customWebSocketHeaders",
			"description": "Sets the Custom WebSocket Headers for the WebSocket Connection.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.executorServiceTimeout": {
			"name": "camel.sink.endpoint.executorServiceTimeout",
			"description": "Set the time in seconds that the executor service should wait when terminating before forcefully terminating. It is not recommended to change this value unless you are absolutely sure that you need to.",
			"defaultValue": "1",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.httpsHostnameVerificationEnabled": {
			"name": "camel.sink.endpoint.httpsHostnameVerificationEnabled",
			"description": "Whether SSL HostnameVerifier is enabled or not. The default value is true.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.password": {
			"name": "camel.sink.endpoint.password",
			"description": "Password to be used for authentication against the MQTT broker",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.socketFactory": {
			"name": "camel.sink.endpoint.socketFactory",
			"description": "Sets the SocketFactory to use. This allows an application to apply its own policies around the creation of network sockets. If using an SSL connection, an SSLSocketFactory can be used to supply application-specific security settings.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.sslClientProps": {
			"name": "camel.sink.endpoint.sslClientProps",
			"description": "Sets the SSL properties for the connection. Note that these properties are only valid if an implementation of the Java Secure Socket Extensions (JSSE) is available. These properties are not used if a custom SocketFactory has been set. The following properties can be used: com.ibm.ssl.protocol One of: SSL, SSLv3, TLS, TLSv1, SSL_TLS. com.ibm.ssl.contextProvider Underlying JSSE provider. For example IBMJSSE2 or SunJSSE com.ibm.ssl.keyStore The name of the file that contains the KeyStore object that you want the KeyManager to use. For example \/mydir\/etc\/key.p12 com.ibm.ssl.keyStorePassword The password for the KeyStore object that you want the KeyManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.keyStoreType Type of key store, for example PKCS12, JKS, or JCEKS. com.ibm.ssl.keyStoreProvider Key store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.trustStore The name of the file that contains the KeyStore object that you want the TrustManager to use. com.ibm.ssl.trustStorePassword The password for the TrustStore object that you want the TrustManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.trustStoreType The type of KeyStore object that you want the default TrustManager to use. Same possible values as keyStoreType. com.ibm.ssl.trustStoreProvider Trust store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.enabledCipherSuites A list of which ciphers are enabled. Values are dependent on the provider, for example: SSL_RSA_WITH_AES_128_CBC_SHA;SSL_RSA_WITH_3DES_EDE_CBC_SHA. com.ibm.ssl.keyManager Sets the algorithm that will be used to instantiate a KeyManagerFactory object instead of using the default algorithm available in the platform. Example values: IbmX509 or IBMJ9X509. com.ibm.ssl.trustManager Sets the algorithm that will be used to instantiate a TrustManagerFactory object instead of using the default algorithm available in the platform. Example values: PKIX or IBMJ9X509.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.sslHostnameVerifier": {
			"name": "camel.sink.endpoint.sslHostnameVerifier",
			"description": "Sets the HostnameVerifier for the SSL connection. Note that it will be used after handshake on a connection and you should do actions by yourself when hostname is verified error. There is no default HostnameVerifier",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.userName": {
			"name": "camel.sink.endpoint.userName",
			"description": "Username to be used for authentication against the MQTT broker",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.automaticReconnect": {
			"name": "camel.component.paho.automaticReconnect",
			"description": "Sets whether the client will automatically attempt to reconnect to the server if the connection is lost. If set to false, the client will not attempt to automatically reconnect to the server in the event that the connection is lost. If set to true, in the event that the connection is lost, the client will attempt to reconnect to the server. It will initially wait 1 second before it attempts to reconnect, for every failed reconnect attempt, the delay will double until it is at 2 minutes at which point the delay will stay at 2 minutes.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.brokerUrl": {
			"name": "camel.component.paho.brokerUrl",
			"description": "The URL of the MQTT broker.",
			"defaultValue": "\"tcp:\/\/localhost:1883\"",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.cleanSession": {
			"name": "camel.component.paho.cleanSession",
			"description": "Sets whether the client and server should remember state across restarts and reconnects. If set to false both the client and server will maintain state across restarts of the client, the server and the connection. As state is maintained: Message delivery will be reliable meeting the specified QOS even if the client, server or connection are restarted. The server will treat a subscription as durable. If set to true the client and server will not maintain state across restarts of the client, the server or the connection. This means Message delivery to the specified QOS cannot be maintained if the client, server or connection are restarted The server will treat a subscription as non-durable",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.clientId": {
			"name": "camel.component.paho.clientId",
			"description": "MQTT client identifier. The identifier must be unique.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.configuration": {
			"name": "camel.component.paho.configuration",
			"description": "To use the shared Paho configuration",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.connectionTimeout": {
			"name": "camel.component.paho.connectionTimeout",
			"description": "Sets the connection timeout value. This value, measured in seconds, defines the maximum time interval the client will wait for the network connection to the MQTT server to be established. The default timeout is 30 seconds. A value of 0 disables timeout processing meaning the client will wait until the network connection is made successfully or fails.",
			"defaultValue": "30",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.filePersistenceDirectory": {
			"name": "camel.component.paho.filePersistenceDirectory",
			"description": "Base directory used by file persistence. Will by default use user directory.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.keepAliveInterval": {
			"name": "camel.component.paho.keepAliveInterval",
			"description": "Sets the keep alive interval. This value, measured in seconds, defines the maximum time interval between messages sent or received. It enables the client to detect if the server is no longer available, without having to wait for the TCP\/IP timeout. The client will ensure that at least one message travels across the network within each keep alive period. In the absence of a data-related message during the time period, the client sends a very small ping message, which the server will acknowledge. A value of 0 disables keepalive processing in the client. The default value is 60 seconds",
			"defaultValue": "60",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.maxInflight": {
			"name": "camel.component.paho.maxInflight",
			"description": "Sets the max inflight. please increase this value in a high traffic environment. The default value is 10",
			"defaultValue": "10",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.maxReconnectDelay": {
			"name": "camel.component.paho.maxReconnectDelay",
			"description": "Get the maximum time (in millis) to wait between reconnects",
			"defaultValue": "128000",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.mqttVersion": {
			"name": "camel.component.paho.mqttVersion",
			"description": "Sets the MQTT version. The default action is to connect with version 3.1.1, and to fall back to 3.1 if that fails. Version 3.1.1 or 3.1 can be selected specifically, with no fall back, by using the MQTT_VERSION_3_1_1 or MQTT_VERSION_3_1 options respectively.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.persistence": {
			"name": "camel.component.paho.persistence",
			"description": "Client persistence to be used - memory or file. One of: [FILE] [MEMORY]",
			"defaultValue": "\"MEMORY\"",
			"priority": "MEDIUM",
			"required": "false",
			"enum": [
				"FILE",
				"MEMORY"
			]
		},
		"camel.component.paho.qos": {
			"name": "camel.component.paho.qos",
			"description": "Client quality of service level (0-2).",
			"defaultValue": "2",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.retained": {
			"name": "camel.component.paho.retained",
			"description": "Retain option",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.serverURIs": {
			"name": "camel.component.paho.serverURIs",
			"description": "Set a list of one or more serverURIs the client may connect to. Multiple servers can be separated by comma. Each serverURI specifies the address of a server that the client may connect to. Two types of connection are supported tcp:\/\/ for a TCP connection and ssl:\/\/ for a TCP connection secured by SSL\/TLS. For example: tcp:\/\/localhost:1883 ssl:\/\/localhost:8883 If the port is not specified, it will default to 1883 for tcp:\/\/ URIs, and 8883 for ssl:\/\/ URIs. If serverURIs is set then it overrides the serverURI parameter passed in on the constructor of the MQTT client. When an attempt to connect is initiated the client will start with the first serverURI in the list and work through the list until a connection is established with a server. If a connection cannot be made to any of the servers then the connect attempt fails. Specifying a list of servers that a client may connect to has several uses: High Availability and reliable message delivery Some MQTT servers support a high availability feature where two or more equal MQTT servers share state. An MQTT client can connect to any of the equal servers and be assured that messages are reliably delivered and durable subscriptions are maintained no matter which server the client connects to. The cleansession flag must be set to false if durable subscriptions and\/or reliable message delivery is required. Hunt List A set of servers may be specified that are not equal (as in the high availability option). As no state is shared across the servers reliable message delivery and durable subscriptions are not valid. The cleansession flag must be set to true if the hunt list mode is used",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.willPayload": {
			"name": "camel.component.paho.willPayload",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.willQos": {
			"name": "camel.component.paho.willQos",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.willRetained": {
			"name": "camel.component.paho.willRetained",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.willTopic": {
			"name": "camel.component.paho.willTopic",
			"description": "Sets the Last Will and Testament (LWT) for the connection. In the event that this client unexpectedly loses its connection to the server, the server will publish a message to itself using the supplied details. The topic to publish to The byte payload for the message. The quality of service to publish the message at (0, 1 or 2). Whether or not the message should be retained.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.lazyStartProducer": {
			"name": "camel.component.paho.lazyStartProducer",
			"description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.autowiredEnabled": {
			"name": "camel.component.paho.autowiredEnabled",
			"description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.client": {
			"name": "camel.component.paho.client",
			"description": "To use a shared Paho client",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.customWebSocketHeaders": {
			"name": "camel.component.paho.customWebSocketHeaders",
			"description": "Sets the Custom WebSocket Headers for the WebSocket Connection.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.executorServiceTimeout": {
			"name": "camel.component.paho.executorServiceTimeout",
			"description": "Set the time in seconds that the executor service should wait when terminating before forcefully terminating. It is not recommended to change this value unless you are absolutely sure that you need to.",
			"defaultValue": "1",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.httpsHostnameVerificationEnabled": {
			"name": "camel.component.paho.httpsHostnameVerificationEnabled",
			"description": "Whether SSL HostnameVerifier is enabled or not. The default value is true.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.password": {
			"name": "camel.component.paho.password",
			"description": "Password to be used for authentication against the MQTT broker",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.socketFactory": {
			"name": "camel.component.paho.socketFactory",
			"description": "Sets the SocketFactory to use. This allows an application to apply its own policies around the creation of network sockets. If using an SSL connection, an SSLSocketFactory can be used to supply application-specific security settings.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.sslClientProps": {
			"name": "camel.component.paho.sslClientProps",
			"description": "Sets the SSL properties for the connection. Note that these properties are only valid if an implementation of the Java Secure Socket Extensions (JSSE) is available. These properties are not used if a custom SocketFactory has been set. The following properties can be used: com.ibm.ssl.protocol One of: SSL, SSLv3, TLS, TLSv1, SSL_TLS. com.ibm.ssl.contextProvider Underlying JSSE provider. For example IBMJSSE2 or SunJSSE com.ibm.ssl.keyStore The name of the file that contains the KeyStore object that you want the KeyManager to use. For example \/mydir\/etc\/key.p12 com.ibm.ssl.keyStorePassword The password for the KeyStore object that you want the KeyManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.keyStoreType Type of key store, for example PKCS12, JKS, or JCEKS. com.ibm.ssl.keyStoreProvider Key store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.trustStore The name of the file that contains the KeyStore object that you want the TrustManager to use. com.ibm.ssl.trustStorePassword The password for the TrustStore object that you want the TrustManager to use. The password can either be in plain-text, or may be obfuscated using the static method: com.ibm.micro.security.Password.obfuscate(char password). This obfuscates the password using a simple and insecure XOR and Base64 encoding mechanism. Note that this is only a simple scrambler to obfuscate clear-text passwords. com.ibm.ssl.trustStoreType The type of KeyStore object that you want the default TrustManager to use. Same possible values as keyStoreType. com.ibm.ssl.trustStoreProvider Trust store provider, for example IBMJCE or IBMJCEFIPS. com.ibm.ssl.enabledCipherSuites A list of which ciphers are enabled. Values are dependent on the provider, for example: SSL_RSA_WITH_AES_128_CBC_SHA;SSL_RSA_WITH_3DES_EDE_CBC_SHA. com.ibm.ssl.keyManager Sets the algorithm that will be used to instantiate a KeyManagerFactory object instead of using the default algorithm available in the platform. Example values: IbmX509 or IBMJ9X509. com.ibm.ssl.trustManager Sets the algorithm that will be used to instantiate a TrustManagerFactory object instead of using the default algorithm available in the platform. Example values: PKIX or IBMJ9X509.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.sslHostnameVerifier": {
			"name": "camel.component.paho.sslHostnameVerifier",
			"description": "Sets the HostnameVerifier for the SSL connection. Note that it will be used after handshake on a connection and you should do actions by yourself when hostname is verified error. There is no default HostnameVerifier",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.paho.userName": {
			"name": "camel.component.paho.userName",
			"description": "Username to be used for authentication against the MQTT broker",
			"priority": "MEDIUM",
			"required": "false"
		}
	}
}