{
  "name": "MQTT3",
  "description": "MQTT3 is a MQTT v3 compliant MuleSoft Extension, used to consume and produce MQTT Messages. The Extension supports all MQTT v3 functionality including message retention, last will and testament messages and persistent sessions.",
  "version": "1.0.2",
  "vendor": "Mulesoft",
  "category": "SELECT",
  "xmlDsl": {
    "prefix": "mqtt3",
    "namespace": "http://www.mulesoft.org/schema/mule/mqtt3",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/mqtt3/current/mule-mqtt3.xsd",
    "schemaVersion": "1.0.2",
    "xsdFileName": "mule-mqtt3.xsd"
  },
  "resources": [],
  "subTypes": [
    {
      "baseType": {
        "format": "java",
        "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
      },
      "subTypes": [
        {
          "format": "java",
          "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDRandomSuffixGenerator"
        },
        {
          "format": "java",
          "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDCustomExpressionGenerator"
        }
      ]
    }
  ],
  "privilegedPackages": [],
  "privilegedArtifacts": [],
  "externalLibraries": [],
  "importedTypes": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.runtime.api.store.ObjectStore",
        "extensibleType": {},
        "typeAlias": {
          "value": "ObjectStore"
        },
        "classInformation": {
          "classname": "org.mule.runtime.api.store.ObjectStore",
          "hasDefaultConstructor": false,
          "isInterface": true,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        }
      },
      "fields": []
    }
  ],
  "configurations": [
    {
      "stereotype": {
        "type": "CONFIG",
        "namespace": "MQTT3",
        "parent": {
          "type": "MODULE_CONFIG",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "isComponentId": true,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "allowedStereotypeModels": [],
              "name": "name",
              "description": "The identifier of this element used to reference it in other components",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.extension.api.runtime.ExpirationPolicy",
                  "description": {
                    "value": "Configures the minimum amount of time that a dynamic configuration instance can remain idle before the runtime considers it eligible for expiration. This does not mean that the platform will expire the instance at the exact moment that it becomes eligible. The runtime will actually purge the instances when it sees it fit."
                  },
                  "typeDsl": {
                    "allowInlineDefinition": true,
                    "allowTopLevelDefinition": false
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "maxIdleTime"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "classInformation": {
                          "classname": "java.lang.Long",
                          "hasDefaultConstructor": false,
                          "isInterface": false,
                          "isInstantiable": false,
                          "isAbstract": false,
                          "isFinal": true,
                          "implementedInterfaces": [
                            "java.lang.Comparable"
                          ],
                          "parent": "java.lang.Number",
                          "genericTypes": [],
                          "isMap": false
                        },
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "A scalar time value for the maximum amount of time a dynamic configuration instance should be allowed to be idle before it\u0027s considered eligible for expiration"
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "timeUnit"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "NANOSECONDS",
                            "MICROSECONDS",
                            "MILLISECONDS",
                            "SECONDS",
                            "MINUTES",
                            "HOURS",
                            "DAYS"
                          ]
                        },
                        "default": "MINUTES"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "A time unit that qualifies the maxIdleTime attribute"
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "expirationPolicy",
              "description": "Configures the minimum amount of time that a dynamic configuration instance can remain idle before the runtime considers it eligible for expiration. This does not mean that the platform will expire the instance at the exact moment that it becomes eligible. The runtime will actually purge the instances when it sees it fit.",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "expiration-policy",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 4
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        }
      ],
      "externalLibraryModels": [],
      "operations": [
        {
          "blocking": false,
          "executionType": "CPU_LITE",
          "output": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": false,
          "notifications": [],
          "nestedComponents": [],
          "errors": [
            "MQTT3:CONNECTIVITY",
            "MQTT3:PUBLISH",
            "MQTT3:INVALID_TOPIC",
            "MQTT3:PERSISTENCE",
            "MQTT3:RETRY_EXHAUSTED",
            "MQTT3:WRITE_TIMEOUT"
          ],
          "stereotype": {
            "type": "PUBLISH",
            "namespace": "MQTT3",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "MQTT3",
              "parent": {
                "type": "PROCESSOR",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "allowedStereotypeModels": [],
                  "name": "topic",
                  "description": "the topic to which the message must be published",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Any",
                    "annotations": {
                      "classInformation": {
                        "classname": "java.io.InputStream",
                        "hasDefaultConstructor": true,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": false,
                        "implementedInterfaces": [
                          "java.io.Closeable"
                        ],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "#[payload]",
                  "role": "PRIMARY_CONTENT",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "message",
                  "description": "the content of the message to be published",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "AT_MOST_ONCE",
                          "AT_LEAST_ONCE",
                          "EXACTLY_ONCE"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "AT_LEAST_ONCE",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "allowedStereotypeModels": [],
                  "name": "qos",
                  "description": "the QoS with which the message will be published",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4
                  },
                  "allowedStereotypeModels": [],
                  "name": "isRetained",
                  "description": "whether the message should be retained by the broker",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONFIG",
                      "namespace": "MQTT3",
                      "parent": {
                        "type": "MODULE_CONFIG",
                        "namespace": "MULE"
                      }
                    }
                  ],
                  "name": "config-ref",
                  "description": "The name of the configuration to be used to execute this component",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Union",
                    "annotations": {
                      "typeId": "ReconnectionStrategy"
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "reconnect"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "classInformation": {
                                  "classname": "java.lang.Long",
                                  "hasDefaultConstructor": false,
                                  "isInterface": false,
                                  "isInstantiable": false,
                                  "isAbstract": false,
                                  "isFinal": true,
                                  "implementedInterfaces": [
                                    "java.lang.Comparable"
                                  ],
                                  "parent": "java.lang.Number",
                                  "genericTypes": [],
                                  "isMap": false
                                },
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "blocking"
                            },
                            "model": {
                              "type": "Boolean",
                              "annotations": {
                                "default": "true"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "count"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "2"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How many reconnection attempts to make"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "reconnect-forever"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "classInformation": {
                                  "classname": "java.lang.Long",
                                  "hasDefaultConstructor": false,
                                  "isInterface": false,
                                  "isInstantiable": false,
                                  "isAbstract": false,
                                  "isFinal": true,
                                  "implementedInterfaces": [
                                    "java.lang.Comparable"
                                  ],
                                  "parent": "java.lang.Number",
                                  "genericTypes": [],
                                  "isMap": false
                                },
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "blocking"
                            },
                            "model": {
                              "type": "Boolean",
                              "annotations": {
                                "default": "true"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "reconnectionStrategy",
                  "description": "A retry strategy in case of connectivity errors",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-reconnection-strategy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 3
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "publish",
          "description": "Operation that allows the user to publish a single MQTT3Message to a given exchange",
          "modelProperties": {},
          "kind": "operation"
        }
      ],
      "connectionProviders": [
        {
          "connectionManagementType": "CACHED",
          "externalLibraryModels": [
            {
              "name": "Eclipse Paho MQTT3",
              "description": "Eclipse Paho MQTT3 client library for MQTT v3",
              "regexMatcher": "(.*)\\.jar",
              "requiredClassName": "org.eclipse.paho.client.mqttv3.MqttAsyncClient",
              "type": "JAR",
              "suggestedCoordinates": "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5",
              "optional": true
            }
          ],
          "supportsConnectivityTesting": true,
          "stereotype": {
            "type": "CONNECTION",
            "namespace": "MQTT3",
            "parent": {
              "type": "CONNECTION",
              "namespace": "MULE"
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 9
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CLIENT_ID_GENERATOR",
                      "namespace": "MQTT3"
                    }
                  ],
                  "name": "clientIDGenerator",
                  "displayModel": {
                    "summary": "The generator used to create a connection\u0027s client id"
                  },
                  "description": "A ClientIDGenerator that generates a Client ID to identify a connection to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 10
                  },
                  "allowedStereotypeModels": [],
                  "name": "username",
                  "displayModel": {
                    "summary": "The username used when providing authentication credentials to the MQTT broker"
                  },
                  "description": "Username to be used when providing authentication credentials to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": true,
                    "text": false,
                    "query": false,
                    "order": 11
                  },
                  "allowedStereotypeModels": [],
                  "name": "password",
                  "displayModel": {
                    "summary": "The password to be used when providing authentication credentials to the MQTT broker"
                  },
                  "description": "Password to be used when providing authentication credentials to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 13
                  },
                  "allowedStereotypeModels": [],
                  "name": "url",
                  "displayModel": {
                    "displayName": "URL",
                    "summary": "The url to connect to",
                    "example": "tcp://0.0.0.0:1883"
                  },
                  "description": "The url that represents the broker to connect to.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
                      "typeAlias": {
                        "value": "Tls"
                      },
                      "typeDsl": {
                        "allowInlineDefinition": true,
                        "allowTopLevelDefinition": true
                      },
                      "QName": {
                        "value": {
                          "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                          "localPart": "context",
                          "prefix": "tls"
                        }
                      },
                      "stereotype": {
                        "allowedStereotypes": [
                          {
                            "type": "CONTEXT",
                            "namespace": "TLS"
                          }
                        ]
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "enabledProtocols"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "description": {
                            "value": "A comma separated list of protocols enabled for this context."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "enabledCipherSuites"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "description": {
                            "value": "A comma separated list of cipher suites enabled for this context."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "trust-store"
                        },
                        "model": {
                          "type": "Object",
                          "annotations": {
                            "typeId": "TrustStore",
                            "description": {
                              "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                                },
                                "display": {
                                  "displayModel": {
                                    "pathModel": {
                                      "type": "FILE",
                                      "fileExtensions": [],
                                      "acceptsUrls": false,
                                      "location": "EMBEDDED"
                                    }
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "password"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the trust store."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "type"
                              },
                              "model": {
                                "type": "String",
                                "annotations": {
                                  "display": {
                                    "displayModel": {
                                      "example": "jks, jceks, pkcs12 or other store type"
                                    }
                                  }
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "The type of store used."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "algorithm"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The algorithm used by the trust store."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "insecure"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                                }
                              }
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "key-store"
                        },
                        "model": {
                          "type": "Object",
                          "annotations": {
                            "typeId": "KeyStore",
                            "description": {
                              "value": "Key store configuration. The key store contains the keys of this server/client."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                                },
                                "display": {
                                  "displayModel": {
                                    "pathModel": {
                                      "type": "FILE",
                                      "fileExtensions": [],
                                      "acceptsUrls": false,
                                      "location": "EMBEDDED"
                                    }
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "type"
                              },
                              "model": {
                                "type": "String",
                                "annotations": {
                                  "display": {
                                    "displayModel": {
                                      "example": "jks, jceks, pkcs12 or other store type"
                                    }
                                  }
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "The type of store used."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "alias"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "keyPassword"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the private key."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "password"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the key store."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "algorithm"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The algorithm used by the key store."
                                }
                              }
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "revocation-check"
                        },
                        "model": {
                          "type": "Union",
                          "annotations": {
                            "typeId": "RevocationCheck"
                          },
                          "of": [
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "standard-revocation-check",
                                "description": {
                                  "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "onlyEndEntities"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Only verify the last element of the certificate chain."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "preferCrls"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Try CRL instead of OCSP first."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "noFallback"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Do not use the secondary checking method (the one not selected before)."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "softFail"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "custom-ocsp-responder",
                                "description": {
                                  "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "url"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "The URL of the OCSP responder."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "certAlias"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "crl-file",
                                "description": {
                                  "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "path"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "The path to the CRL file."
                                    }
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": true
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 12,
                    "tabName": "SSL/TLS"
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONTEXT",
                      "namespace": "TLS"
                    }
                  ],
                  "name": "tlsContext",
                  "displayModel": {
                    "displayName": "TLS Context",
                    "summary": "The TLS factory used to create TLS secured connections"
                  },
                  "description": "",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 8
                    },
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                        "localPart": "context",
                        "prefix": "tls"
                      }
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 14
                  },
                  "allowedStereotypeModels": [],
                  "name": "topic",
                  "displayModel": {
                    "summary": "The topic to which the last will and testament message will be published"
                  },
                  "description": "The topic to which the last will and testament message will be published.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": true,
                    "query": false,
                    "order": 15
                  },
                  "allowedStereotypeModels": [],
                  "name": "body",
                  "displayModel": {
                    "summary": "The content of the last will and testament message"
                  },
                  "description": "The content of the last will and testament message.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "AT_MOST_ONCE",
                          "AT_LEAST_ONCE",
                          "EXACTLY_ONCE"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "AT_LEAST_ONCE",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 16
                  },
                  "allowedStereotypeModels": [],
                  "name": "qos",
                  "displayModel": {
                    "displayName": "QoS",
                    "summary": "The quality of service for the last will and testament message publish"
                  },
                  "description": "The quality of service QoS with which the last will and testament message will be published. Defaults to AT_LEAST_ONCE",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 17
                  },
                  "allowedStereotypeModels": [],
                  "name": "isRetained",
                  "displayModel": {
                    "summary": "Whether the last will and testament message should be retained by the broker"
                  },
                  "description": "If set to true the last will and testament message will be retained by the broker.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "LWT"
              },
              "showInDsl": true,
              "name": "Last Will and Testament",
              "displayModel": {
                "displayName": "Last Will and Testament (LWT)"
              },
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "30",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "connectionTimeout",
                  "displayModel": {
                    "summary": "Socket connection timeout value"
                  },
                  "description": "The socket connection timeout value. This attribute works in tandem with #timeoutUnit. In the case of multiple fail-over URLs provided, the timeout applies to each one individually.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "timeoutUnit",
                  "displayModel": {
                    "summary": "Time unit to be used in the Timeout configurations"
                  },
                  "description": "A TimeUnit which qualifies the #connectionTimeout attribute. Defaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "0",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "keepAliveInterval",
                  "displayModel": {
                    "summary": "The maximum amount of time for an inactive connection to be kept alive"
                  },
                  "description": "The amount of time that the connection between client and broker will be kept alive without any messages being exchanged. If the keep-alive interval is 0, then the keep-alive mechanism is disabled.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "keepAliveIntervalUnit",
                  "displayModel": {
                    "summary": "Time unit to be used as unit for the \u0027keepAliveInterval\u0027 parameter"
                  },
                  "description": "The unit of time that corresponds to the keepAliveInterval parameter. Defaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "10",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "maxInFlight",
                  "displayModel": {
                    "summary": "The maximum amount of messages that can be unacknowledged at a given time"
                  },
                  "description": "The maximum amount of messages that can be unacknowledged at a given time. Setting it to 0 means, there can be unlimited in-flight messages.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "true",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "cleanSession",
                  "displayModel": {
                    "summary": "Whether the session should be cleaned each time the client disconnects from the broker"
                  },
                  "description": "If set to true, the session will be cleaned each time the client disconnects from the broker. Subscriptions will not be saved and offline (qos 1 and 2) messages for that client will be lost.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3
              },
              "showInDsl": true,
              "name": "Connection Options",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 7,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "enableFilePersistence",
                  "displayModel": {
                    "summary": "Whether a file-based persistent data store should be created to store in flight messages"
                  },
                  "description": "If set to true, creates an file-based persistent data store, used to store outbound and inbound messages while they are in flight, enabling delivery to the QoS specified.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 8,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "dataStorePath",
                  "displayModel": {
                    "summary": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                    "pathModel": {
                      "type": "DIRECTORY",
                      "fileExtensions": [],
                      "acceptsUrls": false,
                      "location": "ANY"
                    }
                  },
                  "description": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4
              },
              "showInDsl": true,
              "name": "File Persistence Options",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "Reconnection"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "failsDeployment"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "default": "false"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "reconnectionStrategy"
                        },
                        "model": {
                          "type": "Union",
                          "annotations": {
                            "typeId": "ReconnectionStrategy"
                          },
                          "of": [
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "reconnect"
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "frequency"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "classInformation": {
                                        "classname": "java.lang.Long",
                                        "hasDefaultConstructor": false,
                                        "isInterface": false,
                                        "isInstantiable": false,
                                        "isAbstract": false,
                                        "isFinal": true,
                                        "implementedInterfaces": [
                                          "java.lang.Comparable"
                                        ],
                                        "parent": "java.lang.Number",
                                        "genericTypes": [],
                                        "isMap": false
                                      },
                                      "default": "2000"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How often (in ms) to reconnect"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "blocking"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "true"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "count"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "default": "2"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How many reconnection attempts to make"
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "reconnect-forever"
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "frequency"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "classInformation": {
                                        "classname": "java.lang.Long",
                                        "hasDefaultConstructor": false,
                                        "isInterface": false,
                                        "isInstantiable": false,
                                        "isAbstract": false,
                                        "isFinal": true,
                                        "implementedInterfaces": [
                                          "java.lang.Comparable"
                                        ],
                                        "parent": "java.lang.Number",
                                        "genericTypes": [],
                                        "isMap": false
                                      },
                                      "default": "2000"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How often (in ms) to reconnect"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "blocking"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "true"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                    }
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        "annotations": {
                          "description": {
                            "value": "The reconnection strategy to use"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 18,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "reconnection",
                  "description": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "reconnection",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 3
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "connection",
          "displayModel": {
            "displayName": "MQTT3 URL Connection"
          },
          "description": "Cached Connection provider that creates MQTT Connections. Allows the user to specify a connection URL for the broker.",
          "modelProperties": {
            "requiredForMetadata": {
              "requiredParameters": [
                "clientIDGenerator",
                "username",
                "password",
                "url",
                "topic",
                "body",
                "qos",
                "isRetained",
                "connectionTimeout",
                "timeoutUnit",
                "keepAliveInterval",
                "keepAliveIntervalUnit",
                "maxInFlight",
                "cleanSession",
                "enableFilePersistence",
                "dataStorePath"
              ]
            }
          }
        },
        {
          "connectionManagementType": "CACHED",
          "externalLibraryModels": [
            {
              "name": "Eclipse Paho MQTT3",
              "description": "Eclipse Paho MQTT3 client library for MQTT v3",
              "regexMatcher": "(.*)\\.jar",
              "requiredClassName": "org.eclipse.paho.client.mqttv3.MqttAsyncClient",
              "type": "JAR",
              "suggestedCoordinates": "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5",
              "optional": true
            }
          ],
          "supportsConnectivityTesting": true,
          "stereotype": {
            "type": "FAIL-OVER",
            "namespace": "MQTT3",
            "parent": {
              "type": "CONNECTION",
              "namespace": "MULE"
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 9
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CLIENT_ID_GENERATOR",
                      "namespace": "MQTT3"
                    }
                  ],
                  "name": "clientIDGenerator",
                  "displayModel": {
                    "summary": "The generator used to create a connection\u0027s client id"
                  },
                  "description": "A ClientIDGenerator that generates a Client ID to identify a connection to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 10
                  },
                  "allowedStereotypeModels": [],
                  "name": "username",
                  "displayModel": {
                    "summary": "The username used when providing authentication credentials to the MQTT broker"
                  },
                  "description": "Username to be used when providing authentication credentials to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": true,
                    "text": false,
                    "query": false,
                    "order": 11
                  },
                  "allowedStereotypeModels": [],
                  "name": "password",
                  "displayModel": {
                    "summary": "The password to be used when providing authentication credentials to the MQTT broker"
                  },
                  "description": "Password to be used when providing authentication credentials to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Array",
                    "annotations": {
                      "classInformation": {
                        "classname": "java.util.List",
                        "hasDefaultConstructor": false,
                        "isInterface": true,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": false,
                        "implementedInterfaces": [
                          "java.util.Collection"
                        ],
                        "parent": "",
                        "genericTypes": [
                          "com.mulesoft.connectors.mqtt3.api.FailOverURL"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "@ref:com.mulesoft.connectors.mqtt3.api.FailOverURL"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 13
                  },
                  "allowedStereotypeModels": [],
                  "name": "failOverServers",
                  "displayModel": {
                    "summary": "The list of server URLs to iterate over until a connection to the broker is successfully established"
                  },
                  "description": "The list of server URLs that will be used to (attempt to) establish a connection to the broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
                      "typeAlias": {
                        "value": "Tls"
                      },
                      "typeDsl": {
                        "allowInlineDefinition": true,
                        "allowTopLevelDefinition": true
                      },
                      "QName": {
                        "value": {
                          "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                          "localPart": "context",
                          "prefix": "tls"
                        }
                      },
                      "stereotype": {
                        "allowedStereotypes": [
                          {
                            "type": "CONTEXT",
                            "namespace": "TLS"
                          }
                        ]
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "enabledProtocols"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "description": {
                            "value": "A comma separated list of protocols enabled for this context."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "enabledCipherSuites"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "description": {
                            "value": "A comma separated list of cipher suites enabled for this context."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "trust-store"
                        },
                        "model": {
                          "type": "Object",
                          "annotations": {
                            "typeId": "TrustStore",
                            "description": {
                              "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                                },
                                "display": {
                                  "displayModel": {
                                    "pathModel": {
                                      "type": "FILE",
                                      "fileExtensions": [],
                                      "acceptsUrls": false,
                                      "location": "EMBEDDED"
                                    }
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "password"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the trust store."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "type"
                              },
                              "model": {
                                "type": "String",
                                "annotations": {
                                  "display": {
                                    "displayModel": {
                                      "example": "jks, jceks, pkcs12 or other store type"
                                    }
                                  }
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "The type of store used."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "algorithm"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The algorithm used by the trust store."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "insecure"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                                }
                              }
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "key-store"
                        },
                        "model": {
                          "type": "Object",
                          "annotations": {
                            "typeId": "KeyStore",
                            "description": {
                              "value": "Key store configuration. The key store contains the keys of this server/client."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                                },
                                "display": {
                                  "displayModel": {
                                    "pathModel": {
                                      "type": "FILE",
                                      "fileExtensions": [],
                                      "acceptsUrls": false,
                                      "location": "EMBEDDED"
                                    }
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "type"
                              },
                              "model": {
                                "type": "String",
                                "annotations": {
                                  "display": {
                                    "displayModel": {
                                      "example": "jks, jceks, pkcs12 or other store type"
                                    }
                                  }
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "The type of store used."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "alias"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "keyPassword"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the private key."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "password"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the key store."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "algorithm"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The algorithm used by the key store."
                                }
                              }
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "revocation-check"
                        },
                        "model": {
                          "type": "Union",
                          "annotations": {
                            "typeId": "RevocationCheck"
                          },
                          "of": [
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "standard-revocation-check",
                                "description": {
                                  "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "onlyEndEntities"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Only verify the last element of the certificate chain."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "preferCrls"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Try CRL instead of OCSP first."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "noFallback"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Do not use the secondary checking method (the one not selected before)."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "softFail"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "custom-ocsp-responder",
                                "description": {
                                  "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "url"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "The URL of the OCSP responder."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "certAlias"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "crl-file",
                                "description": {
                                  "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "path"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "The path to the CRL file."
                                    }
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": true
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 12,
                    "tabName": "SSL/TLS"
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONTEXT",
                      "namespace": "TLS"
                    }
                  ],
                  "name": "tlsContext",
                  "displayModel": {
                    "displayName": "TLS Context",
                    "summary": "The TLS factory used to create TLS secured connections"
                  },
                  "description": "",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 8
                    },
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                        "localPart": "context",
                        "prefix": "tls"
                      }
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 14
                  },
                  "allowedStereotypeModels": [],
                  "name": "topic",
                  "displayModel": {
                    "summary": "The topic to which the last will and testament message will be published"
                  },
                  "description": "The topic to which the last will and testament message will be published.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": true,
                    "query": false,
                    "order": 15
                  },
                  "allowedStereotypeModels": [],
                  "name": "body",
                  "displayModel": {
                    "summary": "The content of the last will and testament message"
                  },
                  "description": "The content of the last will and testament message.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "AT_MOST_ONCE",
                          "AT_LEAST_ONCE",
                          "EXACTLY_ONCE"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "AT_LEAST_ONCE",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 16
                  },
                  "allowedStereotypeModels": [],
                  "name": "qos",
                  "displayModel": {
                    "displayName": "QoS",
                    "summary": "The quality of service for the last will and testament message publish"
                  },
                  "description": "The quality of service QoS with which the last will and testament message will be published. Defaults to AT_LEAST_ONCE",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 17
                  },
                  "allowedStereotypeModels": [],
                  "name": "isRetained",
                  "displayModel": {
                    "summary": "Whether the last will and testament message should be retained by the broker"
                  },
                  "description": "If set to true the last will and testament message will be retained by the broker.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "LWT"
              },
              "showInDsl": true,
              "name": "Last Will and Testament",
              "displayModel": {
                "displayName": "Last Will and Testament (LWT)"
              },
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "30",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "connectionTimeout",
                  "displayModel": {
                    "summary": "Socket connection timeout value"
                  },
                  "description": "The socket connection timeout value. This attribute works in tandem with #timeoutUnit. In the case of multiple fail-over URLs provided, the timeout applies to each one individually.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "timeoutUnit",
                  "displayModel": {
                    "summary": "Time unit to be used in the Timeout configurations"
                  },
                  "description": "A TimeUnit which qualifies the #connectionTimeout attribute. Defaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "0",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "keepAliveInterval",
                  "displayModel": {
                    "summary": "The maximum amount of time for an inactive connection to be kept alive"
                  },
                  "description": "The amount of time that the connection between client and broker will be kept alive without any messages being exchanged. If the keep-alive interval is 0, then the keep-alive mechanism is disabled.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "keepAliveIntervalUnit",
                  "displayModel": {
                    "summary": "Time unit to be used as unit for the \u0027keepAliveInterval\u0027 parameter"
                  },
                  "description": "The unit of time that corresponds to the keepAliveInterval parameter. Defaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "10",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "maxInFlight",
                  "displayModel": {
                    "summary": "The maximum amount of messages that can be unacknowledged at a given time"
                  },
                  "description": "The maximum amount of messages that can be unacknowledged at a given time. Setting it to 0 means, there can be unlimited in-flight messages.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "true",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "cleanSession",
                  "displayModel": {
                    "summary": "Whether the session should be cleaned each time the client disconnects from the broker"
                  },
                  "description": "If set to true, the session will be cleaned each time the client disconnects from the broker. Subscriptions will not be saved and offline (qos 1 and 2) messages for that client will be lost.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3
              },
              "showInDsl": true,
              "name": "Connection Options",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 7,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "enableFilePersistence",
                  "displayModel": {
                    "summary": "Whether a file-based persistent data store should be created to store in flight messages"
                  },
                  "description": "If set to true, creates an file-based persistent data store, used to store outbound and inbound messages while they are in flight, enabling delivery to the QoS specified.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 8,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "dataStorePath",
                  "displayModel": {
                    "summary": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                    "pathModel": {
                      "type": "DIRECTORY",
                      "fileExtensions": [],
                      "acceptsUrls": false,
                      "location": "ANY"
                    }
                  },
                  "description": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4
              },
              "showInDsl": true,
              "name": "File Persistence Options",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "Reconnection"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "failsDeployment"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "default": "false"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "reconnectionStrategy"
                        },
                        "model": {
                          "type": "Union",
                          "annotations": {
                            "typeId": "ReconnectionStrategy"
                          },
                          "of": [
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "reconnect"
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "frequency"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "classInformation": {
                                        "classname": "java.lang.Long",
                                        "hasDefaultConstructor": false,
                                        "isInterface": false,
                                        "isInstantiable": false,
                                        "isAbstract": false,
                                        "isFinal": true,
                                        "implementedInterfaces": [
                                          "java.lang.Comparable"
                                        ],
                                        "parent": "java.lang.Number",
                                        "genericTypes": [],
                                        "isMap": false
                                      },
                                      "default": "2000"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How often (in ms) to reconnect"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "blocking"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "true"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "count"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "default": "2"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How many reconnection attempts to make"
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "reconnect-forever"
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "frequency"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "classInformation": {
                                        "classname": "java.lang.Long",
                                        "hasDefaultConstructor": false,
                                        "isInterface": false,
                                        "isInstantiable": false,
                                        "isAbstract": false,
                                        "isFinal": true,
                                        "implementedInterfaces": [
                                          "java.lang.Comparable"
                                        ],
                                        "parent": "java.lang.Number",
                                        "genericTypes": [],
                                        "isMap": false
                                      },
                                      "default": "2000"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How often (in ms) to reconnect"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "blocking"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "true"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                    }
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        "annotations": {
                          "description": {
                            "value": "The reconnection strategy to use"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 18,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "reconnection",
                  "description": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "reconnection",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 3
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "fail-over",
          "displayModel": {
            "displayName": "MQTT3 Fail-Over Connection"
          },
          "description": "Cached Connection provider that creates MQTT Connections. Allows the user to specify a list of FailOverURLs that the connection provider can iterate over until a connection is successfully established.",
          "modelProperties": {
            "requiredForMetadata": {
              "requiredParameters": [
                "clientIDGenerator",
                "username",
                "password",
                "failOverServers",
                "topic",
                "body",
                "qos",
                "isRetained",
                "connectionTimeout",
                "timeoutUnit",
                "keepAliveInterval",
                "keepAliveIntervalUnit",
                "maxInFlight",
                "cleanSession",
                "enableFilePersistence",
                "dataStorePath"
              ]
            }
          }
        },
        {
          "connectionManagementType": "CACHED",
          "externalLibraryModels": [
            {
              "name": "Eclipse Paho MQTT3",
              "description": "Eclipse Paho MQTT3 client library for MQTT v3",
              "regexMatcher": "(.*)\\.jar",
              "requiredClassName": "org.eclipse.paho.client.mqttv3.MqttAsyncClient",
              "type": "JAR",
              "suggestedCoordinates": "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5",
              "optional": true
            }
          ],
          "supportsConnectivityTesting": true,
          "stereotype": {
            "type": "FORM",
            "namespace": "MQTT3",
            "parent": {
              "type": "CONNECTION",
              "namespace": "MULE"
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 9
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CLIENT_ID_GENERATOR",
                      "namespace": "MQTT3"
                    }
                  ],
                  "name": "clientIDGenerator",
                  "displayModel": {
                    "summary": "The generator used to create a connection\u0027s client id"
                  },
                  "description": "A ClientIDGenerator that generates a Client ID to identify a connection to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 10
                  },
                  "allowedStereotypeModels": [],
                  "name": "username",
                  "displayModel": {
                    "summary": "The username used when providing authentication credentials to the MQTT broker"
                  },
                  "description": "Username to be used when providing authentication credentials to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": true,
                    "text": false,
                    "query": false,
                    "order": 11
                  },
                  "allowedStereotypeModels": [],
                  "name": "password",
                  "displayModel": {
                    "summary": "The password to be used when providing authentication credentials to the MQTT broker"
                  },
                  "description": "Password to be used when providing authentication credentials to the MQTT broker.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "com.mulesoft.connectors.mqtt3.api.Protocol",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "TCP",
                          "WS",
                          "WSS",
                          "SSL",
                          "LOCAL"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "defaultValue": "TCP",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 13
                  },
                  "allowedStereotypeModels": [],
                  "name": "protocol",
                  "displayModel": {
                    "summary": "The protocol to be used when connecting to the broker"
                  },
                  "description": "The protocol to be used when connecting to the broker. Defaults to TCP",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 14
                  },
                  "allowedStereotypeModels": [],
                  "name": "host",
                  "displayModel": {
                    "displayName": "URL",
                    "summary": "The host of the broker to connect to",
                    "example": "0.0.0.0"
                  },
                  "description": "The host of the broker to connect to.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "defaultValue": "1883",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 15
                  },
                  "allowedStereotypeModels": [],
                  "name": "port",
                  "displayModel": {
                    "summary": "The broker\u0027s port to connect to"
                  },
                  "description": "The broker\u0027s port to connect to.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
                      "typeAlias": {
                        "value": "Tls"
                      },
                      "typeDsl": {
                        "allowInlineDefinition": true,
                        "allowTopLevelDefinition": true
                      },
                      "QName": {
                        "value": {
                          "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                          "localPart": "context",
                          "prefix": "tls"
                        }
                      },
                      "stereotype": {
                        "allowedStereotypes": [
                          {
                            "type": "CONTEXT",
                            "namespace": "TLS"
                          }
                        ]
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "enabledProtocols"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "description": {
                            "value": "A comma separated list of protocols enabled for this context."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "enabledCipherSuites"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "description": {
                            "value": "A comma separated list of cipher suites enabled for this context."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "trust-store"
                        },
                        "model": {
                          "type": "Object",
                          "annotations": {
                            "typeId": "TrustStore",
                            "description": {
                              "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                                },
                                "display": {
                                  "displayModel": {
                                    "pathModel": {
                                      "type": "FILE",
                                      "fileExtensions": [],
                                      "acceptsUrls": false,
                                      "location": "EMBEDDED"
                                    }
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "password"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the trust store."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "type"
                              },
                              "model": {
                                "type": "String",
                                "annotations": {
                                  "display": {
                                    "displayModel": {
                                      "example": "jks, jceks, pkcs12 or other store type"
                                    }
                                  }
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "The type of store used."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "algorithm"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The algorithm used by the trust store."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "insecure"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                                }
                              }
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "key-store"
                        },
                        "model": {
                          "type": "Object",
                          "annotations": {
                            "typeId": "KeyStore",
                            "description": {
                              "value": "Key store configuration. The key store contains the keys of this server/client."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                                },
                                "display": {
                                  "displayModel": {
                                    "pathModel": {
                                      "type": "FILE",
                                      "fileExtensions": [],
                                      "acceptsUrls": false,
                                      "location": "EMBEDDED"
                                    }
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "type"
                              },
                              "model": {
                                "type": "String",
                                "annotations": {
                                  "display": {
                                    "displayModel": {
                                      "example": "jks, jceks, pkcs12 or other store type"
                                    }
                                  }
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "The type of store used."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "alias"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "keyPassword"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the private key."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "password"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The password used to protect the key store."
                                },
                                "layout": {
                                  "layoutModel": {
                                    "password": true,
                                    "text": false,
                                    "query": false
                                  }
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "algorithm"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The algorithm used by the key store."
                                }
                              }
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "revocation-check"
                        },
                        "model": {
                          "type": "Union",
                          "annotations": {
                            "typeId": "RevocationCheck"
                          },
                          "of": [
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "standard-revocation-check",
                                "description": {
                                  "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "onlyEndEntities"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Only verify the last element of the certificate chain."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "preferCrls"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Try CRL instead of OCSP first."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "noFallback"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Do not use the secondary checking method (the one not selected before)."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "softFail"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "false"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "custom-ocsp-responder",
                                "description": {
                                  "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "url"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "The URL of the OCSP responder."
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "certAlias"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "crl-file",
                                "description": {
                                  "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                                }
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "path"
                                  },
                                  "model": {
                                    "type": "String"
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "The path to the CRL file."
                                    }
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        "annotations": {
                          "parameterDsl": {
                            "allowInlineDefinition": true,
                            "allowReferences": false
                          },
                          "expressionSupport": {
                            "value": "NOT_SUPPORTED"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": true
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 12,
                    "tabName": "SSL/TLS"
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONTEXT",
                      "namespace": "TLS"
                    }
                  ],
                  "name": "tlsContext",
                  "displayModel": {
                    "displayName": "TLS Context",
                    "summary": "The TLS factory used to create TLS secured connections"
                  },
                  "description": "",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 8
                    },
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                        "localPart": "context",
                        "prefix": "tls"
                      }
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 16
                  },
                  "allowedStereotypeModels": [],
                  "name": "topic",
                  "displayModel": {
                    "summary": "The topic to which the last will and testament message will be published"
                  },
                  "description": "The topic to which the last will and testament message will be published.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": true,
                    "query": false,
                    "order": 17
                  },
                  "allowedStereotypeModels": [],
                  "name": "body",
                  "displayModel": {
                    "summary": "The content of the last will and testament message"
                  },
                  "description": "The content of the last will and testament message.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "AT_MOST_ONCE",
                          "AT_LEAST_ONCE",
                          "EXACTLY_ONCE"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "AT_LEAST_ONCE",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 18
                  },
                  "allowedStereotypeModels": [],
                  "name": "qos",
                  "displayModel": {
                    "displayName": "QoS",
                    "summary": "The quality of service for the last will and testament message publish"
                  },
                  "description": "The quality of service QoS with which the last will and testament message will be published. Defaults to AT_LEAST_ONCE",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 19
                  },
                  "allowedStereotypeModels": [],
                  "name": "isRetained",
                  "displayModel": {
                    "summary": "Whether the last will and testament message should be retained by the broker"
                  },
                  "description": "If set to true the last will and testament message will be retained by the broker.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "LWT"
              },
              "showInDsl": true,
              "name": "Last Will and Testament",
              "displayModel": {
                "displayName": "Last Will and Testament (LWT)"
              },
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "30",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "connectionTimeout",
                  "displayModel": {
                    "summary": "Socket connection timeout value"
                  },
                  "description": "The socket connection timeout value. This attribute works in tandem with #timeoutUnit. In the case of multiple fail-over URLs provided, the timeout applies to each one individually.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "timeoutUnit",
                  "displayModel": {
                    "summary": "Time unit to be used in the Timeout configurations"
                  },
                  "description": "A TimeUnit which qualifies the #connectionTimeout attribute. Defaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "0",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "keepAliveInterval",
                  "displayModel": {
                    "summary": "The maximum amount of time for an inactive connection to be kept alive"
                  },
                  "description": "The amount of time that the connection between client and broker will be kept alive without any messages being exchanged. If the keep-alive interval is 0, then the keep-alive mechanism is disabled.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "keepAliveIntervalUnit",
                  "displayModel": {
                    "summary": "Time unit to be used as unit for the \u0027keepAliveInterval\u0027 parameter"
                  },
                  "description": "The unit of time that corresponds to the keepAliveInterval parameter. Defaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "classInformation": {
                        "classname": "int",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": true,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "int": {}
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "10",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "maxInFlight",
                  "displayModel": {
                    "summary": "The maximum amount of messages that can be unacknowledged at a given time"
                  },
                  "description": "The maximum amount of messages that can be unacknowledged at a given time. Setting it to 0 means, there can be unlimited in-flight messages.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "true",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "cleanSession",
                  "displayModel": {
                    "summary": "Whether the session should be cleaned each time the client disconnects from the broker"
                  },
                  "description": "If set to true, the session will be cleaned each time the client disconnects from the broker. Subscriptions will not be saved and offline (qos 1 and 2) messages for that client will be lost.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3
              },
              "showInDsl": true,
              "name": "Connection Options",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 7,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "enableFilePersistence",
                  "displayModel": {
                    "summary": "Whether a file-based persistent data store should be created to store in flight messages"
                  },
                  "description": "If set to true, creates an file-based persistent data store, used to store outbound and inbound messages while they are in flight, enabling delivery to the QoS specified.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 8,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "dataStorePath",
                  "displayModel": {
                    "summary": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                    "pathModel": {
                      "type": "DIRECTORY",
                      "fileExtensions": [],
                      "acceptsUrls": false,
                      "location": "ANY"
                    }
                  },
                  "description": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4
              },
              "showInDsl": true,
              "name": "File Persistence Options",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "Reconnection"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "failsDeployment"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "default": "false"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "reconnectionStrategy"
                        },
                        "model": {
                          "type": "Union",
                          "annotations": {
                            "typeId": "ReconnectionStrategy"
                          },
                          "of": [
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "reconnect"
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "frequency"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "classInformation": {
                                        "classname": "java.lang.Long",
                                        "hasDefaultConstructor": false,
                                        "isInterface": false,
                                        "isInstantiable": false,
                                        "isAbstract": false,
                                        "isFinal": true,
                                        "implementedInterfaces": [
                                          "java.lang.Comparable"
                                        ],
                                        "parent": "java.lang.Number",
                                        "genericTypes": [],
                                        "isMap": false
                                      },
                                      "default": "2000"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How often (in ms) to reconnect"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "blocking"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "true"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "count"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "default": "2"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How many reconnection attempts to make"
                                    }
                                  }
                                }
                              ]
                            },
                            {
                              "type": "Object",
                              "annotations": {
                                "typeId": "reconnect-forever"
                              },
                              "fields": [
                                {
                                  "key": {
                                    "name": "frequency"
                                  },
                                  "model": {
                                    "type": "Number",
                                    "annotations": {
                                      "int": {},
                                      "classInformation": {
                                        "classname": "java.lang.Long",
                                        "hasDefaultConstructor": false,
                                        "isInterface": false,
                                        "isInstantiable": false,
                                        "isAbstract": false,
                                        "isFinal": true,
                                        "implementedInterfaces": [
                                          "java.lang.Comparable"
                                        ],
                                        "parent": "java.lang.Number",
                                        "genericTypes": [],
                                        "isMap": false
                                      },
                                      "default": "2000"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "How often (in ms) to reconnect"
                                    }
                                  }
                                },
                                {
                                  "key": {
                                    "name": "blocking"
                                  },
                                  "model": {
                                    "type": "Boolean",
                                    "annotations": {
                                      "default": "true"
                                    }
                                  },
                                  "annotations": {
                                    "description": {
                                      "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                    }
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        "annotations": {
                          "description": {
                            "value": "The reconnection strategy to use"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 20,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "reconnection",
                  "description": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "reconnection",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 3
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "form",
          "displayModel": {
            "displayName": "MQTT3 Form Connection"
          },
          "description": "Cached Connection provider that creates MQTT Connections. Allows the user to specify a protocol, host and port to establish a connection with the broker.",
          "modelProperties": {
            "requiredForMetadata": {
              "requiredParameters": [
                "clientIDGenerator",
                "username",
                "password",
                "protocol",
                "host",
                "port",
                "topic",
                "body",
                "qos",
                "isRetained",
                "connectionTimeout",
                "timeoutUnit",
                "keepAliveInterval",
                "keepAliveIntervalUnit",
                "maxInFlight",
                "cleanSession",
                "enableFilePersistence",
                "dataStorePath"
              ]
            }
          }
        }
      ],
      "messageSources": [
        {
          "hasResponse": false,
          "runsOnPrimaryNodeOnly": false,
          "output": {
            "type": {
              "format": {
                "id": "*/*",
                "label": "*/*",
                "validMimeTypes": [
                  "*/*"
                ]
              },
              "type": "Any",
              "annotations": {
                "classInformation": {
                  "classname": "byte[]",
                  "hasDefaultConstructor": false,
                  "isInterface": false,
                  "isInstantiable": false,
                  "isAbstract": true,
                  "isFinal": true,
                  "implementedInterfaces": [
                    "java.lang.Cloneable",
                    "java.io.Serializable"
                  ],
                  "parent": "",
                  "genericTypes": [],
                  "isMap": false
                }
              }
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "@ref:com.mulesoft.connectors.mqtt3.api.MQTT3MessageAttributes"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": false,
          "notifications": [],
          "nestedComponents": [],
          "errors": [],
          "stereotype": {
            "type": "LISTENER",
            "namespace": "MQTT3",
            "parent": {
              "type": "SOURCE",
              "namespace": "MQTT3",
              "parent": {
                "type": "SOURCE",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Array",
                    "annotations": {
                      "classInformation": {
                        "classname": "java.util.List",
                        "hasDefaultConstructor": false,
                        "isInterface": true,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": false,
                        "implementedInterfaces": [
                          "java.util.Collection"
                        ],
                        "parent": "",
                        "genericTypes": [
                          "com.mulesoft.connectors.mqtt3.api.Topic"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "@ref:com.mulesoft.connectors.mqtt3.api.Topic"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "allowedStereotypeModels": [],
                  "name": "topics",
                  "description": "The list of Topics that this listener will subscribe to.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONFIG",
                      "namespace": "MQTT3",
                      "parent": {
                        "type": "MODULE_CONFIG",
                        "namespace": "MULE"
                      }
                    }
                  ],
                  "name": "config-ref",
                  "description": "The name of the configuration to be used to execute this component",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "defaultValue": true,
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "primaryNodeOnly",
                  "description": "Whether this source should only be executed on the primary node when runnning in Cluster",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "RedeliveryPolicy"
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "maxRedeliveryCount"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "default": "5"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "The maximum number of times a message can be redelivered and processed unsuccessfully before triggering process-failed-message"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "messageDigestAlgorithm"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "description": {
                            "value": "The secure hashing algorithm to use. If not set, the default is SHA-256."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "MessageIdentifier"
                        },
                        "model": {
                          "type": "Object",
                          "annotations": {
                            "typeId": "RedeliveryPolicyMessageIdentifier",
                            "exclusiveOptionals": {
                              "exclusiveParameterNames": [
                                "useSecureHash",
                                "idExpression"
                              ],
                              "isOneRequired": true
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "useSecureHash"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "true"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Whether to use a secure hash algorithm to identify a redelivered message"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "idExpression"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "Defines one or more expressions to use to determine when a message has been redelivered. This property may only be set if useSecureHash is false."
                                }
                              }
                            }
                          ]
                        },
                        "annotations": {
                          "flattened": {},
                          "description": {
                            "value": "Defines which strategy is used to identify the messages."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "objectStore"
                        },
                        "model": {
                          "type": "@ref:org.mule.runtime.api.store.ObjectStore"
                        },
                        "annotations": {
                          "stereotype": {
                            "allowedStereotypes": [
                              {
                                "type": "OBJECT_STORE",
                                "namespace": "OS"
                              }
                            ]
                          },
                          "description": {
                            "value": "The object store where the redelivery counter for each message is going to be stored."
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "Redelivery"
                  },
                  "allowedStereotypeModels": [],
                  "name": "redeliveryPolicy",
                  "description": "Defines a policy for processing the redelivery of the same message",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-redelivery-policy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 1
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Union",
                    "annotations": {
                      "typeId": "ReconnectionStrategy"
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "reconnect"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "classInformation": {
                                  "classname": "java.lang.Long",
                                  "hasDefaultConstructor": false,
                                  "isInterface": false,
                                  "isInstantiable": false,
                                  "isAbstract": false,
                                  "isFinal": true,
                                  "implementedInterfaces": [
                                    "java.lang.Comparable"
                                  ],
                                  "parent": "java.lang.Number",
                                  "genericTypes": [],
                                  "isMap": false
                                },
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "blocking"
                            },
                            "model": {
                              "type": "Boolean",
                              "annotations": {
                                "default": "true"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "count"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "2"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How many reconnection attempts to make"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "reconnect-forever"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "classInformation": {
                                  "classname": "java.lang.Long",
                                  "hasDefaultConstructor": false,
                                  "isInterface": false,
                                  "isInstantiable": false,
                                  "isAbstract": false,
                                  "isFinal": true,
                                  "implementedInterfaces": [
                                    "java.lang.Comparable"
                                  ],
                                  "parent": "java.lang.Number",
                                  "genericTypes": [],
                                  "isMap": false
                                },
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "blocking"
                            },
                            "model": {
                              "type": "Boolean",
                              "annotations": {
                                "default": "true"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "reconnectionStrategy",
                  "description": "A retry strategy in case of connectivity errors",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-reconnection-strategy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 3
                    }
                  }
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "listener",
          "displayModel": {
            "displayName": "On New Message"
          },
          "description": "",
          "modelProperties": {},
          "kind": "source"
        }
      ],
      "name": "config",
      "description": "Default configuration",
      "modelProperties": {
        "requiredForMetadata": {
          "requiredParameters": [
            "name"
          ]
        }
      }
    }
  ],
  "operations": [],
  "functions": [],
  "constructs": [],
  "connectionProviders": [
    {
      "connectionManagementType": "CACHED",
      "externalLibraryModels": [
        {
          "name": "Eclipse Paho MQTT3",
          "description": "Eclipse Paho MQTT3 client library for MQTT v3",
          "regexMatcher": "(.*)\\.jar",
          "requiredClassName": "org.eclipse.paho.client.mqttv3.MqttAsyncClient",
          "type": "JAR",
          "suggestedCoordinates": "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5",
          "optional": true
        }
      ],
      "supportsConnectivityTesting": true,
      "stereotype": {
        "type": "CONNECTION",
        "namespace": "MQTT3",
        "parent": {
          "type": "CONNECTION",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 9
              },
              "allowedStereotypeModels": [
                {
                  "type": "CLIENT_ID_GENERATOR",
                  "namespace": "MQTT3"
                }
              ],
              "name": "clientIDGenerator",
              "displayModel": {
                "summary": "The generator used to create a connection\u0027s client id"
              },
              "description": "A ClientIDGenerator that generates a Client ID to identify a connection to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 10
              },
              "allowedStereotypeModels": [],
              "name": "username",
              "displayModel": {
                "summary": "The username used when providing authentication credentials to the MQTT broker"
              },
              "description": "Username to be used when providing authentication credentials to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false,
                "order": 11
              },
              "allowedStereotypeModels": [],
              "name": "password",
              "displayModel": {
                "summary": "The password to be used when providing authentication credentials to the MQTT broker"
              },
              "description": "Password to be used when providing authentication credentials to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 13
              },
              "allowedStereotypeModels": [],
              "name": "url",
              "displayModel": {
                "displayName": "URL",
                "summary": "The url to connect to",
                "example": "tcp://0.0.0.0:1883"
              },
              "description": "The url that represents the broker to connect to.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
                  "typeAlias": {
                    "value": "Tls"
                  },
                  "typeDsl": {
                    "allowInlineDefinition": true,
                    "allowTopLevelDefinition": true
                  },
                  "QName": {
                    "value": {
                      "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                      "localPart": "context",
                      "prefix": "tls"
                    }
                  },
                  "stereotype": {
                    "allowedStereotypes": [
                      {
                        "type": "CONTEXT",
                        "namespace": "TLS"
                      }
                    ]
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "enabledProtocols"
                    },
                    "model": {
                      "type": "String"
                    },
                    "annotations": {
                      "description": {
                        "value": "A comma separated list of protocols enabled for this context."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "enabledCipherSuites"
                    },
                    "model": {
                      "type": "String"
                    },
                    "annotations": {
                      "description": {
                        "value": "A comma separated list of cipher suites enabled for this context."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "trust-store"
                    },
                    "model": {
                      "type": "Object",
                      "annotations": {
                        "typeId": "TrustStore",
                        "description": {
                          "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                            },
                            "display": {
                              "displayModel": {
                                "pathModel": {
                                  "type": "FILE",
                                  "fileExtensions": [],
                                  "acceptsUrls": false,
                                  "location": "EMBEDDED"
                                }
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "password"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the trust store."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "type"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "display": {
                                "displayModel": {
                                  "example": "jks, jceks, pkcs12 or other store type"
                                }
                              }
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "The type of store used."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "algorithm"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The algorithm used by the trust store."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "insecure"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                            }
                          }
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "key-store"
                    },
                    "model": {
                      "type": "Object",
                      "annotations": {
                        "typeId": "KeyStore",
                        "description": {
                          "value": "Key store configuration. The key store contains the keys of this server/client."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                            },
                            "display": {
                              "displayModel": {
                                "pathModel": {
                                  "type": "FILE",
                                  "fileExtensions": [],
                                  "acceptsUrls": false,
                                  "location": "EMBEDDED"
                                }
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "type"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "display": {
                                "displayModel": {
                                  "example": "jks, jceks, pkcs12 or other store type"
                                }
                              }
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "The type of store used."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "alias"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "keyPassword"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the private key."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "password"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the key store."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "algorithm"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The algorithm used by the key store."
                            }
                          }
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "revocation-check"
                    },
                    "model": {
                      "type": "Union",
                      "annotations": {
                        "typeId": "RevocationCheck"
                      },
                      "of": [
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "standard-revocation-check",
                            "description": {
                              "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "onlyEndEntities"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Only verify the last element of the certificate chain."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "preferCrls"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Try CRL instead of OCSP first."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "noFallback"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Do not use the secondary checking method (the one not selected before)."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "softFail"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "custom-ocsp-responder",
                            "description": {
                              "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "url"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The URL of the OCSP responder."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "certAlias"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "crl-file",
                            "description": {
                              "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The path to the CRL file."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": true
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 12,
                "tabName": "SSL/TLS"
              },
              "allowedStereotypeModels": [
                {
                  "type": "CONTEXT",
                  "namespace": "TLS"
                }
              ],
              "name": "tlsContext",
              "displayModel": {
                "displayName": "TLS Context",
                "summary": "The TLS factory used to create TLS secured connections"
              },
              "description": "",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 8
                },
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                    "localPart": "context",
                    "prefix": "tls"
                  }
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 14
              },
              "allowedStereotypeModels": [],
              "name": "topic",
              "displayModel": {
                "summary": "The topic to which the last will and testament message will be published"
              },
              "description": "The topic to which the last will and testament message will be published.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": true,
                "query": false,
                "order": 15
              },
              "allowedStereotypeModels": [],
              "name": "body",
              "displayModel": {
                "summary": "The content of the last will and testament message"
              },
              "description": "The content of the last will and testament message.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "AT_MOST_ONCE",
                      "AT_LEAST_ONCE",
                      "EXACTLY_ONCE"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "AT_LEAST_ONCE",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 16
              },
              "allowedStereotypeModels": [],
              "name": "qos",
              "displayModel": {
                "displayName": "QoS",
                "summary": "The quality of service for the last will and testament message publish"
              },
              "description": "The quality of service QoS with which the last will and testament message will be published. Defaults to AT_LEAST_ONCE",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "false",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 17
              },
              "allowedStereotypeModels": [],
              "name": "isRetained",
              "displayModel": {
                "summary": "Whether the last will and testament message should be retained by the broker"
              },
              "description": "If set to true the last will and testament message will be retained by the broker.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2,
            "tabName": "LWT"
          },
          "showInDsl": true,
          "name": "Last Will and Testament",
          "displayModel": {
            "displayName": "Last Will and Testament (LWT)"
          },
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "30",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "connectionTimeout",
              "displayModel": {
                "summary": "Socket connection timeout value"
              },
              "description": "The socket connection timeout value. This attribute works in tandem with #timeoutUnit. In the case of multiple fail-over URLs provided, the timeout applies to each one individually.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "timeoutUnit",
              "displayModel": {
                "summary": "Time unit to be used in the Timeout configurations"
              },
              "description": "A TimeUnit which qualifies the #connectionTimeout attribute. Defaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "0",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "keepAliveInterval",
              "displayModel": {
                "summary": "The maximum amount of time for an inactive connection to be kept alive"
              },
              "description": "The amount of time that the connection between client and broker will be kept alive without any messages being exchanged. If the keep-alive interval is 0, then the keep-alive mechanism is disabled.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "keepAliveIntervalUnit",
              "displayModel": {
                "summary": "Time unit to be used as unit for the \u0027keepAliveInterval\u0027 parameter"
              },
              "description": "The unit of time that corresponds to the keepAliveInterval parameter. Defaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "10",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "maxInFlight",
              "displayModel": {
                "summary": "The maximum amount of messages that can be unacknowledged at a given time"
              },
              "description": "The maximum amount of messages that can be unacknowledged at a given time. Setting it to 0 means, there can be unlimited in-flight messages.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "true",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 6,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "cleanSession",
              "displayModel": {
                "summary": "Whether the session should be cleaned each time the client disconnects from the broker"
              },
              "description": "If set to true, the session will be cleaned each time the client disconnects from the broker. Subscriptions will not be saved and offline (qos 1 and 2) messages for that client will be lost.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 3
          },
          "showInDsl": true,
          "name": "Connection Options",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "false",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 7,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "enableFilePersistence",
              "displayModel": {
                "summary": "Whether a file-based persistent data store should be created to store in flight messages"
              },
              "description": "If set to true, creates an file-based persistent data store, used to store outbound and inbound messages while they are in flight, enabling delivery to the QoS specified.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 8,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "dataStorePath",
              "displayModel": {
                "summary": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                "pathModel": {
                  "type": "DIRECTORY",
                  "fileExtensions": [],
                  "acceptsUrls": false,
                  "location": "ANY"
                }
              },
              "description": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 4
          },
          "showInDsl": true,
          "name": "File Persistence Options",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "Reconnection"
                },
                "fields": [
                  {
                    "key": {
                      "name": "failsDeployment"
                    },
                    "model": {
                      "type": "Boolean",
                      "annotations": {
                        "default": "false"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "reconnectionStrategy"
                    },
                    "model": {
                      "type": "Union",
                      "annotations": {
                        "typeId": "ReconnectionStrategy"
                      },
                      "of": [
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "blocking"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "true"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "count"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "default": "2"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How many reconnection attempts to make"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect-forever"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "blocking"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "true"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                }
                              }
                            }
                          ]
                        }
                      ]
                    },
                    "annotations": {
                      "description": {
                        "value": "The reconnection strategy to use"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 18,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "reconnection",
              "description": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "reconnection",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 3
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 5
          },
          "showInDsl": false,
          "name": "Connection",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "connection",
      "displayModel": {
        "displayName": "MQTT3 URL Connection"
      },
      "description": "Cached Connection provider that creates MQTT Connections. Allows the user to specify a connection URL for the broker.",
      "modelProperties": {
        "requiredForMetadata": {
          "requiredParameters": [
            "clientIDGenerator",
            "username",
            "password",
            "url",
            "topic",
            "body",
            "qos",
            "isRetained",
            "connectionTimeout",
            "timeoutUnit",
            "keepAliveInterval",
            "keepAliveIntervalUnit",
            "maxInFlight",
            "cleanSession",
            "enableFilePersistence",
            "dataStorePath"
          ]
        }
      }
    },
    {
      "connectionManagementType": "CACHED",
      "externalLibraryModels": [
        {
          "name": "Eclipse Paho MQTT3",
          "description": "Eclipse Paho MQTT3 client library for MQTT v3",
          "regexMatcher": "(.*)\\.jar",
          "requiredClassName": "org.eclipse.paho.client.mqttv3.MqttAsyncClient",
          "type": "JAR",
          "suggestedCoordinates": "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5",
          "optional": true
        }
      ],
      "supportsConnectivityTesting": true,
      "stereotype": {
        "type": "FAIL-OVER",
        "namespace": "MQTT3",
        "parent": {
          "type": "CONNECTION",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 9
              },
              "allowedStereotypeModels": [
                {
                  "type": "CLIENT_ID_GENERATOR",
                  "namespace": "MQTT3"
                }
              ],
              "name": "clientIDGenerator",
              "displayModel": {
                "summary": "The generator used to create a connection\u0027s client id"
              },
              "description": "A ClientIDGenerator that generates a Client ID to identify a connection to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 10
              },
              "allowedStereotypeModels": [],
              "name": "username",
              "displayModel": {
                "summary": "The username used when providing authentication credentials to the MQTT broker"
              },
              "description": "Username to be used when providing authentication credentials to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false,
                "order": 11
              },
              "allowedStereotypeModels": [],
              "name": "password",
              "displayModel": {
                "summary": "The password to be used when providing authentication credentials to the MQTT broker"
              },
              "description": "Password to be used when providing authentication credentials to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Array",
                "annotations": {
                  "classInformation": {
                    "classname": "java.util.List",
                    "hasDefaultConstructor": false,
                    "isInterface": true,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": false,
                    "implementedInterfaces": [
                      "java.util.Collection"
                    ],
                    "parent": "",
                    "genericTypes": [
                      "com.mulesoft.connectors.mqtt3.api.FailOverURL"
                    ],
                    "isMap": false
                  }
                },
                "item": {
                  "type": "@ref:com.mulesoft.connectors.mqtt3.api.FailOverURL"
                }
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 13
              },
              "allowedStereotypeModels": [],
              "name": "failOverServers",
              "displayModel": {
                "summary": "The list of server URLs to iterate over until a connection to the broker is successfully established"
              },
              "description": "The list of server URLs that will be used to (attempt to) establish a connection to the broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
                  "typeAlias": {
                    "value": "Tls"
                  },
                  "typeDsl": {
                    "allowInlineDefinition": true,
                    "allowTopLevelDefinition": true
                  },
                  "QName": {
                    "value": {
                      "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                      "localPart": "context",
                      "prefix": "tls"
                    }
                  },
                  "stereotype": {
                    "allowedStereotypes": [
                      {
                        "type": "CONTEXT",
                        "namespace": "TLS"
                      }
                    ]
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "enabledProtocols"
                    },
                    "model": {
                      "type": "String"
                    },
                    "annotations": {
                      "description": {
                        "value": "A comma separated list of protocols enabled for this context."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "enabledCipherSuites"
                    },
                    "model": {
                      "type": "String"
                    },
                    "annotations": {
                      "description": {
                        "value": "A comma separated list of cipher suites enabled for this context."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "trust-store"
                    },
                    "model": {
                      "type": "Object",
                      "annotations": {
                        "typeId": "TrustStore",
                        "description": {
                          "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                            },
                            "display": {
                              "displayModel": {
                                "pathModel": {
                                  "type": "FILE",
                                  "fileExtensions": [],
                                  "acceptsUrls": false,
                                  "location": "EMBEDDED"
                                }
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "password"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the trust store."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "type"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "display": {
                                "displayModel": {
                                  "example": "jks, jceks, pkcs12 or other store type"
                                }
                              }
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "The type of store used."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "algorithm"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The algorithm used by the trust store."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "insecure"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                            }
                          }
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "key-store"
                    },
                    "model": {
                      "type": "Object",
                      "annotations": {
                        "typeId": "KeyStore",
                        "description": {
                          "value": "Key store configuration. The key store contains the keys of this server/client."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                            },
                            "display": {
                              "displayModel": {
                                "pathModel": {
                                  "type": "FILE",
                                  "fileExtensions": [],
                                  "acceptsUrls": false,
                                  "location": "EMBEDDED"
                                }
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "type"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "display": {
                                "displayModel": {
                                  "example": "jks, jceks, pkcs12 or other store type"
                                }
                              }
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "The type of store used."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "alias"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "keyPassword"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the private key."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "password"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the key store."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "algorithm"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The algorithm used by the key store."
                            }
                          }
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "revocation-check"
                    },
                    "model": {
                      "type": "Union",
                      "annotations": {
                        "typeId": "RevocationCheck"
                      },
                      "of": [
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "standard-revocation-check",
                            "description": {
                              "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "onlyEndEntities"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Only verify the last element of the certificate chain."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "preferCrls"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Try CRL instead of OCSP first."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "noFallback"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Do not use the secondary checking method (the one not selected before)."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "softFail"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "custom-ocsp-responder",
                            "description": {
                              "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "url"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The URL of the OCSP responder."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "certAlias"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "crl-file",
                            "description": {
                              "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The path to the CRL file."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": true
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 12,
                "tabName": "SSL/TLS"
              },
              "allowedStereotypeModels": [
                {
                  "type": "CONTEXT",
                  "namespace": "TLS"
                }
              ],
              "name": "tlsContext",
              "displayModel": {
                "displayName": "TLS Context",
                "summary": "The TLS factory used to create TLS secured connections"
              },
              "description": "",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 8
                },
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                    "localPart": "context",
                    "prefix": "tls"
                  }
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 14
              },
              "allowedStereotypeModels": [],
              "name": "topic",
              "displayModel": {
                "summary": "The topic to which the last will and testament message will be published"
              },
              "description": "The topic to which the last will and testament message will be published.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": true,
                "query": false,
                "order": 15
              },
              "allowedStereotypeModels": [],
              "name": "body",
              "displayModel": {
                "summary": "The content of the last will and testament message"
              },
              "description": "The content of the last will and testament message.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "AT_MOST_ONCE",
                      "AT_LEAST_ONCE",
                      "EXACTLY_ONCE"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "AT_LEAST_ONCE",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 16
              },
              "allowedStereotypeModels": [],
              "name": "qos",
              "displayModel": {
                "displayName": "QoS",
                "summary": "The quality of service for the last will and testament message publish"
              },
              "description": "The quality of service QoS with which the last will and testament message will be published. Defaults to AT_LEAST_ONCE",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "false",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 17
              },
              "allowedStereotypeModels": [],
              "name": "isRetained",
              "displayModel": {
                "summary": "Whether the last will and testament message should be retained by the broker"
              },
              "description": "If set to true the last will and testament message will be retained by the broker.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2,
            "tabName": "LWT"
          },
          "showInDsl": true,
          "name": "Last Will and Testament",
          "displayModel": {
            "displayName": "Last Will and Testament (LWT)"
          },
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "30",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "connectionTimeout",
              "displayModel": {
                "summary": "Socket connection timeout value"
              },
              "description": "The socket connection timeout value. This attribute works in tandem with #timeoutUnit. In the case of multiple fail-over URLs provided, the timeout applies to each one individually.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "timeoutUnit",
              "displayModel": {
                "summary": "Time unit to be used in the Timeout configurations"
              },
              "description": "A TimeUnit which qualifies the #connectionTimeout attribute. Defaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "0",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "keepAliveInterval",
              "displayModel": {
                "summary": "The maximum amount of time for an inactive connection to be kept alive"
              },
              "description": "The amount of time that the connection between client and broker will be kept alive without any messages being exchanged. If the keep-alive interval is 0, then the keep-alive mechanism is disabled.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "keepAliveIntervalUnit",
              "displayModel": {
                "summary": "Time unit to be used as unit for the \u0027keepAliveInterval\u0027 parameter"
              },
              "description": "The unit of time that corresponds to the keepAliveInterval parameter. Defaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "10",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "maxInFlight",
              "displayModel": {
                "summary": "The maximum amount of messages that can be unacknowledged at a given time"
              },
              "description": "The maximum amount of messages that can be unacknowledged at a given time. Setting it to 0 means, there can be unlimited in-flight messages.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "true",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 6,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "cleanSession",
              "displayModel": {
                "summary": "Whether the session should be cleaned each time the client disconnects from the broker"
              },
              "description": "If set to true, the session will be cleaned each time the client disconnects from the broker. Subscriptions will not be saved and offline (qos 1 and 2) messages for that client will be lost.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 3
          },
          "showInDsl": true,
          "name": "Connection Options",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "false",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 7,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "enableFilePersistence",
              "displayModel": {
                "summary": "Whether a file-based persistent data store should be created to store in flight messages"
              },
              "description": "If set to true, creates an file-based persistent data store, used to store outbound and inbound messages while they are in flight, enabling delivery to the QoS specified.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 8,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "dataStorePath",
              "displayModel": {
                "summary": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                "pathModel": {
                  "type": "DIRECTORY",
                  "fileExtensions": [],
                  "acceptsUrls": false,
                  "location": "ANY"
                }
              },
              "description": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 4
          },
          "showInDsl": true,
          "name": "File Persistence Options",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "Reconnection"
                },
                "fields": [
                  {
                    "key": {
                      "name": "failsDeployment"
                    },
                    "model": {
                      "type": "Boolean",
                      "annotations": {
                        "default": "false"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "reconnectionStrategy"
                    },
                    "model": {
                      "type": "Union",
                      "annotations": {
                        "typeId": "ReconnectionStrategy"
                      },
                      "of": [
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "blocking"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "true"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "count"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "default": "2"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How many reconnection attempts to make"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect-forever"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "blocking"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "true"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                }
                              }
                            }
                          ]
                        }
                      ]
                    },
                    "annotations": {
                      "description": {
                        "value": "The reconnection strategy to use"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 18,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "reconnection",
              "description": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "reconnection",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 3
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 5
          },
          "showInDsl": false,
          "name": "Connection",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "fail-over",
      "displayModel": {
        "displayName": "MQTT3 Fail-Over Connection"
      },
      "description": "Cached Connection provider that creates MQTT Connections. Allows the user to specify a list of FailOverURLs that the connection provider can iterate over until a connection is successfully established.",
      "modelProperties": {
        "requiredForMetadata": {
          "requiredParameters": [
            "clientIDGenerator",
            "username",
            "password",
            "failOverServers",
            "topic",
            "body",
            "qos",
            "isRetained",
            "connectionTimeout",
            "timeoutUnit",
            "keepAliveInterval",
            "keepAliveIntervalUnit",
            "maxInFlight",
            "cleanSession",
            "enableFilePersistence",
            "dataStorePath"
          ]
        }
      }
    },
    {
      "connectionManagementType": "CACHED",
      "externalLibraryModels": [
        {
          "name": "Eclipse Paho MQTT3",
          "description": "Eclipse Paho MQTT3 client library for MQTT v3",
          "regexMatcher": "(.*)\\.jar",
          "requiredClassName": "org.eclipse.paho.client.mqttv3.MqttAsyncClient",
          "type": "JAR",
          "suggestedCoordinates": "org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5",
          "optional": true
        }
      ],
      "supportsConnectivityTesting": true,
      "stereotype": {
        "type": "FORM",
        "namespace": "MQTT3",
        "parent": {
          "type": "CONNECTION",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 9
              },
              "allowedStereotypeModels": [
                {
                  "type": "CLIENT_ID_GENERATOR",
                  "namespace": "MQTT3"
                }
              ],
              "name": "clientIDGenerator",
              "displayModel": {
                "summary": "The generator used to create a connection\u0027s client id"
              },
              "description": "A ClientIDGenerator that generates a Client ID to identify a connection to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 10
              },
              "allowedStereotypeModels": [],
              "name": "username",
              "displayModel": {
                "summary": "The username used when providing authentication credentials to the MQTT broker"
              },
              "description": "Username to be used when providing authentication credentials to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false,
                "order": 11
              },
              "allowedStereotypeModels": [],
              "name": "password",
              "displayModel": {
                "summary": "The password to be used when providing authentication credentials to the MQTT broker"
              },
              "description": "Password to be used when providing authentication credentials to the MQTT broker.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "com.mulesoft.connectors.mqtt3.api.Protocol",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "TCP",
                      "WS",
                      "WSS",
                      "SSL",
                      "LOCAL"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "defaultValue": "TCP",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 13
              },
              "allowedStereotypeModels": [],
              "name": "protocol",
              "displayModel": {
                "summary": "The protocol to be used when connecting to the broker"
              },
              "description": "The protocol to be used when connecting to the broker. Defaults to TCP",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": true,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 14
              },
              "allowedStereotypeModels": [],
              "name": "host",
              "displayModel": {
                "displayName": "URL",
                "summary": "The host of the broker to connect to",
                "example": "0.0.0.0"
              },
              "description": "The host of the broker to connect to.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "defaultValue": "1883",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 15
              },
              "allowedStereotypeModels": [],
              "name": "port",
              "displayModel": {
                "summary": "The broker\u0027s port to connect to"
              },
              "description": "The broker\u0027s port to connect to.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.api.tls.TlsContextFactory",
                  "typeAlias": {
                    "value": "Tls"
                  },
                  "typeDsl": {
                    "allowInlineDefinition": true,
                    "allowTopLevelDefinition": true
                  },
                  "QName": {
                    "value": {
                      "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                      "localPart": "context",
                      "prefix": "tls"
                    }
                  },
                  "stereotype": {
                    "allowedStereotypes": [
                      {
                        "type": "CONTEXT",
                        "namespace": "TLS"
                      }
                    ]
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "enabledProtocols"
                    },
                    "model": {
                      "type": "String"
                    },
                    "annotations": {
                      "description": {
                        "value": "A comma separated list of protocols enabled for this context."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "enabledCipherSuites"
                    },
                    "model": {
                      "type": "String"
                    },
                    "annotations": {
                      "description": {
                        "value": "A comma separated list of cipher suites enabled for this context."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "trust-store"
                    },
                    "model": {
                      "type": "Object",
                      "annotations": {
                        "typeId": "TrustStore",
                        "description": {
                          "value": "Trust store configuration. If used client side, the trust store contains the certificates of the trusted servers. If used server side, it contains the certificates of the trusted clients."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the trust store."
                            },
                            "display": {
                              "displayModel": {
                                "pathModel": {
                                  "type": "FILE",
                                  "fileExtensions": [],
                                  "acceptsUrls": false,
                                  "location": "EMBEDDED"
                                }
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "password"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the trust store."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "type"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "display": {
                                "displayModel": {
                                  "example": "jks, jceks, pkcs12 or other store type"
                                }
                              }
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "The type of store used."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "algorithm"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The algorithm used by the trust store."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "insecure"
                          },
                          "model": {
                            "type": "Boolean",
                            "annotations": {
                              "default": "false"
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "If true, no certificate validations will be performed, rendering connections vulnerable to attacks. Use at your own risk."
                            }
                          }
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "key-store"
                    },
                    "model": {
                      "type": "Object",
                      "annotations": {
                        "typeId": "KeyStore",
                        "description": {
                          "value": "Key store configuration. The key store contains the keys of this server/client."
                        }
                      },
                      "fields": [
                        {
                          "key": {
                            "name": "path"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The location (which will be resolved relative to the current classpath and file system, if possible) of the key store."
                            },
                            "display": {
                              "displayModel": {
                                "pathModel": {
                                  "type": "FILE",
                                  "fileExtensions": [],
                                  "acceptsUrls": false,
                                  "location": "EMBEDDED"
                                }
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "type"
                          },
                          "model": {
                            "type": "String",
                            "annotations": {
                              "display": {
                                "displayModel": {
                                  "example": "jks, jceks, pkcs12 or other store type"
                                }
                              }
                            }
                          },
                          "annotations": {
                            "description": {
                              "value": "The type of store used."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "alias"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "When the key store contains many private keys, this attribute indicates the alias of the key that should be used. If not defined, the first key in the file will be used by default."
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "keyPassword"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the private key."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "password"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The password used to protect the key store."
                            },
                            "layout": {
                              "layoutModel": {
                                "password": true,
                                "text": false,
                                "query": false
                              }
                            }
                          }
                        },
                        {
                          "key": {
                            "name": "algorithm"
                          },
                          "model": {
                            "type": "String"
                          },
                          "annotations": {
                            "description": {
                              "value": "The algorithm used by the key store."
                            }
                          }
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "revocation-check"
                    },
                    "model": {
                      "type": "Union",
                      "annotations": {
                        "typeId": "RevocationCheck"
                      },
                      "of": [
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "standard-revocation-check",
                            "description": {
                              "value": "Uses the standard JVM certificate revocation checks, which depend on the certificate having the corresponding extension points (additional tags for CRLDP or OCSP), and the availability of revocation servers."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "onlyEndEntities"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Only verify the last element of the certificate chain."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "preferCrls"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Try CRL instead of OCSP first."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "noFallback"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Do not use the secondary checking method (the one not selected before)."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "softFail"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "false"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "Avoid verification failure when the revocation server can not be reached or is busy."
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "custom-ocsp-responder",
                            "description": {
                              "value": "Uses a custom OCSP responder for certificate revocation checks, with a specific trusted certificate for revocating other keys. This ignores extension points (additional tags for CRLDP or OCSP) present in the certificate, if any."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "url"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The URL of the OCSP responder."
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "certAlias"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "Alias of the signing certificate for the OCSP response (must be in the trust store), if present."
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "crl-file",
                            "description": {
                              "value": "Local file based certificate revocation checker, which requires a CRL file to be accessible and ignores extension points (additional tags for CRLDP and OCSP) in the certificate."
                            }
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "path"
                              },
                              "model": {
                                "type": "String"
                              },
                              "annotations": {
                                "description": {
                                  "value": "The path to the CRL file."
                                }
                              }
                            }
                          ]
                        }
                      ]
                    },
                    "annotations": {
                      "parameterDsl": {
                        "allowInlineDefinition": true,
                        "allowReferences": false
                      },
                      "expressionSupport": {
                        "value": "NOT_SUPPORTED"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": true
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 12,
                "tabName": "SSL/TLS"
              },
              "allowedStereotypeModels": [
                {
                  "type": "CONTEXT",
                  "namespace": "TLS"
                }
              ],
              "name": "tlsContext",
              "displayModel": {
                "displayName": "TLS Context",
                "summary": "The TLS factory used to create TLS secured connections"
              },
              "description": "",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 8
                },
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/tls",
                    "localPart": "context",
                    "prefix": "tls"
                  }
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 16
              },
              "allowedStereotypeModels": [],
              "name": "topic",
              "displayModel": {
                "summary": "The topic to which the last will and testament message will be published"
              },
              "description": "The topic to which the last will and testament message will be published.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": true,
                "query": false,
                "order": 17
              },
              "allowedStereotypeModels": [],
              "name": "body",
              "displayModel": {
                "summary": "The content of the last will and testament message"
              },
              "description": "The content of the last will and testament message.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "AT_MOST_ONCE",
                      "AT_LEAST_ONCE",
                      "EXACTLY_ONCE"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "AT_LEAST_ONCE",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 18
              },
              "allowedStereotypeModels": [],
              "name": "qos",
              "displayModel": {
                "displayName": "QoS",
                "summary": "The quality of service for the last will and testament message publish"
              },
              "description": "The quality of service QoS with which the last will and testament message will be published. Defaults to AT_LEAST_ONCE",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "false",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 19
              },
              "allowedStereotypeModels": [],
              "name": "isRetained",
              "displayModel": {
                "summary": "Whether the last will and testament message should be retained by the broker"
              },
              "description": "If set to true the last will and testament message will be retained by the broker.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 2,
            "tabName": "LWT"
          },
          "showInDsl": true,
          "name": "Last Will and Testament",
          "displayModel": {
            "displayName": "Last Will and Testament (LWT)"
          },
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "30",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "connectionTimeout",
              "displayModel": {
                "summary": "Socket connection timeout value"
              },
              "description": "The socket connection timeout value. This attribute works in tandem with #timeoutUnit. In the case of multiple fail-over URLs provided, the timeout applies to each one individually.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "timeoutUnit",
              "displayModel": {
                "summary": "Time unit to be used in the Timeout configurations"
              },
              "description": "A TimeUnit which qualifies the #connectionTimeout attribute. Defaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "0",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "keepAliveInterval",
              "displayModel": {
                "summary": "The maximum amount of time for an inactive connection to be kept alive"
              },
              "description": "The amount of time that the connection between client and broker will be kept alive without any messages being exchanged. If the keep-alive interval is 0, then the keep-alive mechanism is disabled.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "keepAliveIntervalUnit",
              "displayModel": {
                "summary": "Time unit to be used as unit for the \u0027keepAliveInterval\u0027 parameter"
              },
              "description": "The unit of time that corresponds to the keepAliveInterval parameter. Defaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "classInformation": {
                    "classname": "int",
                    "hasDefaultConstructor": false,
                    "isInterface": false,
                    "isInstantiable": false,
                    "isAbstract": true,
                    "isFinal": true,
                    "implementedInterfaces": [],
                    "parent": "",
                    "genericTypes": [],
                    "isMap": false
                  },
                  "int": {}
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "10",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "maxInFlight",
              "displayModel": {
                "summary": "The maximum amount of messages that can be unacknowledged at a given time"
              },
              "description": "The maximum amount of messages that can be unacknowledged at a given time. Setting it to 0 means, there can be unlimited in-flight messages.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "true",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 6,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "cleanSession",
              "displayModel": {
                "summary": "Whether the session should be cleaned each time the client disconnects from the broker"
              },
              "description": "If set to true, the session will be cleaned each time the client disconnects from the broker. Subscriptions will not be saved and offline (qos 1 and 2) messages for that client will be lost.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 3
          },
          "showInDsl": true,
          "name": "Connection Options",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "false",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 7,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "enableFilePersistence",
              "displayModel": {
                "summary": "Whether a file-based persistent data store should be created to store in flight messages"
              },
              "description": "If set to true, creates an file-based persistent data store, used to store outbound and inbound messages while they are in flight, enabling delivery to the QoS specified.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String"
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": false,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 8,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "dataStorePath",
              "displayModel": {
                "summary": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
                "pathModel": {
                  "type": "DIRECTORY",
                  "fileExtensions": [],
                  "acceptsUrls": false,
                  "location": "ANY"
                }
              },
              "description": "The directory where the file-based persistent data store will be created if enableFilePersistence is set to true.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 4
          },
          "showInDsl": true,
          "name": "File Persistence Options",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "Reconnection"
                },
                "fields": [
                  {
                    "key": {
                      "name": "failsDeployment"
                    },
                    "model": {
                      "type": "Boolean",
                      "annotations": {
                        "default": "false"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "reconnectionStrategy"
                    },
                    "model": {
                      "type": "Union",
                      "annotations": {
                        "typeId": "ReconnectionStrategy"
                      },
                      "of": [
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "blocking"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "true"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "count"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "default": "2"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How many reconnection attempts to make"
                                }
                              }
                            }
                          ]
                        },
                        {
                          "type": "Object",
                          "annotations": {
                            "typeId": "reconnect-forever"
                          },
                          "fields": [
                            {
                              "key": {
                                "name": "frequency"
                              },
                              "model": {
                                "type": "Number",
                                "annotations": {
                                  "int": {},
                                  "classInformation": {
                                    "classname": "java.lang.Long",
                                    "hasDefaultConstructor": false,
                                    "isInterface": false,
                                    "isInstantiable": false,
                                    "isAbstract": false,
                                    "isFinal": true,
                                    "implementedInterfaces": [
                                      "java.lang.Comparable"
                                    ],
                                    "parent": "java.lang.Number",
                                    "genericTypes": [],
                                    "isMap": false
                                  },
                                  "default": "2000"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "How often (in ms) to reconnect"
                                }
                              }
                            },
                            {
                              "key": {
                                "name": "blocking"
                              },
                              "model": {
                                "type": "Boolean",
                                "annotations": {
                                  "default": "true"
                                }
                              },
                              "annotations": {
                                "description": {
                                  "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                                }
                              }
                            }
                          ]
                        }
                      ]
                    },
                    "annotations": {
                      "description": {
                        "value": "The reconnection strategy to use"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "isConfigOverride": false,
              "isComponentId": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 20,
                "tabName": "Advanced"
              },
              "allowedStereotypeModels": [],
              "name": "reconnection",
              "description": "When the application is deployed, a connectivity test is performed on all connectors. If set to true, deployment will fail if the test doesn\u0027t pass after exhausting the associated reconnection strategy",
              "modelProperties": {
                "org.mule.runtime.extension.api.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "reconnection",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                  "sequence": 3
                }
              }
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 5
          },
          "showInDsl": false,
          "name": "Connection",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "form",
      "displayModel": {
        "displayName": "MQTT3 Form Connection"
      },
      "description": "Cached Connection provider that creates MQTT Connections. Allows the user to specify a protocol, host and port to establish a connection with the broker.",
      "modelProperties": {
        "requiredForMetadata": {
          "requiredParameters": [
            "clientIDGenerator",
            "username",
            "password",
            "protocol",
            "host",
            "port",
            "topic",
            "body",
            "qos",
            "isRetained",
            "connectionTimeout",
            "timeoutUnit",
            "keepAliveInterval",
            "keepAliveIntervalUnit",
            "maxInFlight",
            "cleanSession",
            "enableFilePersistence",
            "dataStorePath"
          ]
        }
      }
    }
  ],
  "messageSources": [],
  "notifications": [],
  "errors": [
    {
      "error": "MQTT3:CONNECTIVITY",
      "parent": "MULE:CONNECTIVITY",
      "handleable": true
    },
    {
      "error": "MULE:CONNECTIVITY",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MULE:RETRY_EXHAUSTED",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MQTT3:RETRY_EXHAUSTED",
      "parent": "MULE:RETRY_EXHAUSTED",
      "handleable": true
    },
    {
      "error": "MQTT3:UNAUTHORIZED",
      "parent": "MULE:CLIENT_SECURITY",
      "handleable": true
    },
    {
      "error": "MULE:CLIENT_SECURITY",
      "parent": "MULE:SECURITY",
      "handleable": true
    },
    {
      "error": "MULE:SECURITY",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MQTT3:PERSISTENCE",
      "parent": "MQTT3:PUBLISH",
      "handleable": true
    },
    {
      "error": "MQTT3:PUBLISH",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MQTT3:WRITE_TIMEOUT",
      "parent": "MQTT3:PUBLISH",
      "handleable": true
    },
    {
      "error": "MQTT3:INVALID_TOPIC",
      "parent": "MQTT3:PUBLISH",
      "handleable": true
    },
    {
      "error": "MQTT3:INVALID_CLIENT_ID",
      "parent": "MULE:ANY",
      "handleable": true
    }
  ],
  "modelProperties": {},
  "types": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.mqtt3.api.FailOverURL",
        "classInformation": {
          "classname": "com.mulesoft.connectors.mqtt3.api.FailOverURL",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "FailOverURL"
        }
      },
      "fields": [
        {
          "key": {
            "name": "protocol"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "com.mulesoft.connectors.mqtt3.api.Protocol",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "TCP",
                  "WS",
                  "WSS",
                  "SSL",
                  "LOCAL"
                ]
              }
            }
          },
          "annotations": {
            "default": "TCP",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "display": {
              "displayModel": {
                "summary": "The connection\u0027s protocol"
              }
            }
          }
        },
        {
          "key": {
            "name": "host"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "localhost",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "display": {
              "displayModel": {
                "summary": "The host of the broker to connect to"
              }
            }
          }
        },
        {
          "key": {
            "name": "port"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "1883",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "display": {
              "displayModel": {
                "summary": "The broker\u0027s port to connect to"
              }
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.mqtt3.api.MQTT3MessageAttributes",
        "classInformation": {
          "classname": "com.mulesoft.connectors.mqtt3.api.MQTT3MessageAttributes",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "java.io.Serializable"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "MQTT3MessageAttributes"
        }
      },
      "fields": [
        {
          "key": {
            "name": "topic",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "messageId",
            "required": "true"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "classInformation": {
                "classname": "int",
                "hasDefaultConstructor": false,
                "isInterface": false,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": true,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "int": {}
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "qos",
            "required": "true"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "classInformation": {
                "classname": "int",
                "hasDefaultConstructor": false,
                "isInterface": false,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": true,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "int": {}
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "isDuplicate"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "false",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "isRetained"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "false",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.mqtt3.api.Topic",
        "classInformation": {
          "classname": "com.mulesoft.connectors.mqtt3.api.Topic",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "Topic"
        }
      },
      "fields": [
        {
          "key": {
            "name": "topicFilter",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "display": {
              "displayModel": {
                "summary": "The topic filter to subscribe to"
              }
            }
          }
        },
        {
          "key": {
            "name": "qos"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "com.mulesoft.connectors.mqtt3.api.QoS",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "AT_MOST_ONCE",
                  "AT_LEAST_ONCE",
                  "EXACTLY_ONCE"
                ]
              }
            }
          },
          "annotations": {
            "default": "AT_LEAST_ONCE",
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "display": {
              "displayModel": {
                "displayName": "QoS",
                "summary": "The quality of service for the subscription"
              }
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDCustomExpressionGenerator",
        "classInformation": {
          "classname": "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDCustomExpressionGenerator",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "ClientIDCustomExpressionGenerator"
        }
      },
      "fields": [
        {
          "key": {
            "name": "clientId"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "display": {
              "displayModel": {
                "displayName": "Client ID",
                "summary": "A static client id to identify the connection to the broker"
              }
            }
          }
        },
        {
          "key": {
            "name": "customClientIdSuffix"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "",
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "display": {
              "displayModel": {
                "displayName": "Custom Client ID Suffix",
                "summary": "A dynamic client id suffix"
              }
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator",
        "classInformation": {
          "classname": "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator",
          "hasDefaultConstructor": false,
          "isInterface": true,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "ClientIDGenerator"
        },
        "stereotype": {
          "allowedStereotypes": [
            {
              "type": "CLIENT_ID_GENERATOR",
              "namespace": "MQTT3"
            }
          ]
        }
      },
      "fields": []
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDRandomSuffixGenerator",
        "classInformation": {
          "classname": "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDRandomSuffixGenerator",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "com.mulesoft.connectors.mqtt3.api.clientId.ClientIDGenerator"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "ClientIDRandomSuffixGenerator"
        }
      },
      "fields": [
        {
          "key": {
            "name": "clientId"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "display": {
              "displayModel": {
                "displayName": "Client ID",
                "summary": "A static client id prefix to identify the connection to the broker"
              }
            }
          }
        }
      ]
    }
  ]
}
