{
  "name": "WebSockets",
  "description": "Allows communication through the WebSockets protocol. This connector allows for both, external systems to open connections to this server (INBOUND sockets) or for it to connect to external systems (OUTBOUND socket). In both cases, full duplex traffic is supported",
  "version": "1.0.2",
  "vendor": "Mulesoft",
  "category": "SELECT",
  "xmlDsl": {
    "prefix": "websocket",
    "namespace": "http://www.mulesoft.org/schema/mule/websocket",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/websocket/current/mule-websocket.xsd",
    "schemaVersion": "1.0.2",
    "xsdFileName": "mule-websocket.xsd"
  },
  "resources": [],
  "subTypes": [
    {
      "baseType": {
        "format": "java",
        "type": "@ref:com.mulesoft.connectors.ws.api.client.proxy.HttpProxyConfig"
      },
      "subTypes": [
        {
          "format": "java",
          "type": "@ref:com.mulesoft.connectors.ws.api.client.proxy.DefaultProxyConfig"
        },
        {
          "format": "java",
          "type": "@ref:com.mulesoft.connectors.ws.api.client.proxy.DefaultNtlmProxyConfig"
        }
      ]
    }
  ],
  "privilegedPackages": [],
  "privilegedArtifacts": [],
  "externalLibraries": [],
  "importedTypes": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.http.api.request.authentication.BasicAuthentication",
        "classInformation": {
          "classname": "org.mule.extension.http.api.request.authentication.BasicAuthentication",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "org.mule.extension.http.api.request.authentication.UsernamePasswordAuthentication",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "BasicAuthentication"
        }
      },
      "fields": [
        {
          "key": {
            "name": "username",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "password",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false
              }
            }
          }
        },
        {
          "key": {
            "name": "preemptive"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "true",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.http.api.request.authentication.DigestAuthentication",
        "classInformation": {
          "classname": "org.mule.extension.http.api.request.authentication.DigestAuthentication",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "org.mule.extension.http.api.request.authentication.UsernamePasswordAuthentication",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "DigestAuthentication"
        }
      },
      "fields": [
        {
          "key": {
            "name": "username",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "password",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false
              }
            }
          }
        },
        {
          "key": {
            "name": "preemptive"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "true",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.http.api.request.authentication.HttpRequestAuthentication",
        "classInformation": {
          "classname": "org.mule.extension.http.api.request.authentication.HttpRequestAuthentication",
          "hasDefaultConstructor": false,
          "isInterface": true,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "HttpRequestAuthentication"
        }
      },
      "fields": []
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.http.api.request.authentication.NtlmAuthentication",
        "classInformation": {
          "classname": "org.mule.extension.http.api.request.authentication.NtlmAuthentication",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.runtime.http.api.client.auth.HttpAuthentication.HttpNtlmAuthentication"
          ],
          "parent": "org.mule.extension.http.api.request.authentication.UsernamePasswordAuthentication",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "NtlmAuthentication"
        }
      },
      "fields": [
        {
          "key": {
            "name": "domain"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "workstation"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "username",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "password",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false
              }
            }
          }
        },
        {
          "key": {
            "name": "preemptive"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "true",
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "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": "WEBSOCKET",
        "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": 1
              },
              "allowedStereotypeModels": [],
              "name": "name",
              "description": "The identifier of this element used to reference it in other components",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        }
      ],
      "externalLibraryModels": [],
      "operations": [
        {
          "blocking": false,
          "executionType": "BLOCKING",
          "output": {
            "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.ws.api.BroadcastFailure"
                  ],
                  "isMap": false
                }
              },
              "item": {
                "type": "@ref:com.mulesoft.connectors.ws.api.BroadcastFailure"
              }
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": false,
          "notifications": [],
          "nestedComponents": [],
          "errors": [
            "WEBSOCKET:RETRY_EXHAUSTED",
            "WEBSOCKET:CONNECTIVITY"
          ],
          "stereotype": {
            "type": "BROADCAST",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "WEBSOCKET",
              "parent": {
                "type": "PROCESSOR",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Binary",
                    "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": 1
                  },
                  "allowedStereotypeModels": [],
                  "name": "content",
                  "description": "the content to be sent",
                  "modelProperties": {}
                },
                {
                  "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": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "path",
                  "description": "the path of the sockets to be matched",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "com.mulesoft.connectors.ws.api.BroadcastSocketType",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "INBOUND",
                          "OUTBOUND",
                          "ALL"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "ALL",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "allowedStereotypeModels": [],
                  "name": "socketType",
                  "description": "the type of sockets to be matched",
                  "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": [
                          "java.lang.String"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4
                  },
                  "allowedStereotypeModels": [],
                  "name": "groups",
                  "description": "matches sockets that belong to any of these groups",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "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": "WEBSOCKET",
                      "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": "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": 6,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "target",
                  "displayModel": {
                    "displayName": "Target Variable"
                  },
                  "description": "The name of a variable on which the operation\u0027s output will be placed",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "REQUIRED",
                  "defaultValue": "#[payload]",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 7,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "targetValue",
                  "displayModel": {
                    "displayName": "Target Value"
                  },
                  "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2
              },
              "showInDsl": false,
              "name": "Output",
              "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": 8,
                    "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": 3
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "broadcast",
          "description": "Sends the given content to all the active WebSockets that match the path, socketType and groups criteria. In the case of the path, the base path configured in the config will not be considered as you may be targeting both inbound and outbound sockets. The message will be send to all the matching sockets, even though it\u0027s possible that delivery to some of them fail. The operation will return a list of BroadcastFailure containing details of each of the failures. If none fail, an empty list is returned",
          "modelProperties": {},
          "kind": "operation"
        },
        {
          "blocking": false,
          "executionType": "BLOCKING",
          "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": [
            "WEBSOCKET:RETRY_EXHAUSTED",
            "WEBSOCKET:CONNECTIVITY"
          ],
          "stereotype": {
            "type": "BULK_CLOSE_SOCKETS",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "WEBSOCKET",
              "parent": {
                "type": "PROCESSOR",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "com.mulesoft.connectors.ws.api.BroadcastSocketType",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "INBOUND",
                          "OUTBOUND",
                          "ALL"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "ALL",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "allowedStereotypeModels": [],
                  "name": "socketType",
                  "description": "",
                  "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": [
                          "java.lang.String"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "groups",
                  "description": "",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "org.mule.runtime.http.api.ws.WebSocketCloseCode",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NORMAL_CLOSURE",
                          "ENDPOINT_GOING_DOWN",
                          "PROTOCOL_ERROR",
                          "INVALID_DATA",
                          "MESSAGE_TOO_LARGE"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "NORMAL_CLOSURE",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "allowedStereotypeModels": [],
                  "name": "closeCode",
                  "description": "",
                  "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": 4
                  },
                  "allowedStereotypeModels": [],
                  "name": "reason",
                  "description": "",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "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": "WEBSOCKET",
                      "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": "bulkCloseSockets",
          "description": "",
          "modelProperties": {},
          "kind": "operation"
        },
        {
          "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": [
            "WEBSOCKET:RETRY_EXHAUSTED",
            "WEBSOCKET:NO_SUCH_SOCKET",
            "WEBSOCKET:CONNECTIVITY"
          ],
          "stereotype": {
            "type": "CLOSE_SOCKET",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "WEBSOCKET",
              "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": "socketId",
                  "description": "the id of the socket to be closed",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "org.mule.runtime.http.api.ws.WebSocketCloseCode",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NORMAL_CLOSURE",
                          "ENDPOINT_GOING_DOWN",
                          "PROTOCOL_ERROR",
                          "INVALID_DATA",
                          "MESSAGE_TOO_LARGE"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "NORMAL_CLOSURE",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "closeCode",
                  "description": "the close code",
                  "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": 3
                  },
                  "allowedStereotypeModels": [],
                  "name": "reason",
                  "description": "the closing reason phrase",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONFIG",
                      "namespace": "WEBSOCKET",
                      "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": 5,
                    "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": "closeSocket",
          "description": "Closes the socket",
          "modelProperties": {},
          "kind": "operation"
        },
        {
          "blocking": false,
          "executionType": "CPU_LITE",
          "output": {
            "type": {
              "format": {
                "id": "text/plain",
                "label": "text/plain",
                "validMimeTypes": [
                  "text/plain"
                ]
              },
              "type": "String"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "@ref:com.mulesoft.connectors.ws.api.WebSocketAttributes"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": false,
          "notifications": [],
          "nestedComponents": [],
          "errors": [
            "WEBSOCKET:NON_UNIQUE_SOCKET_ID",
            "WEBSOCKET:FORBIDDEN",
            "WEBSOCKET:RETRY_EXHAUSTED",
            "WEBSOCKET:BASIC_AUTHENTICATION",
            "WEBSOCKET:REMOTELY_CLOSED",
            "WEBSOCKET:SERVICE_UNAVAILABLE",
            "WEBSOCKET:INVALID_SOCKET_ID",
            "WEBSOCKET:NO_SUCH_SOCKET",
            "WEBSOCKET:INTERNAL_SERVER_ERROR",
            "WEBSOCKET:CONNECTIVITY",
            "WEBSOCKET:UNAUTHORIZED",
            "WEBSOCKET:NOT_FOUND"
          ],
          "stereotype": {
            "type": "OPEN_OUTBOUND_SOCKET",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "WEBSOCKET",
              "parent": {
                "type": "PROCESSOR",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "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": 3
                  },
                  "allowedStereotypeModels": [],
                  "name": "socketId",
                  "description": "",
                  "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": [
                          "java.lang.String"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4
                  },
                  "allowedStereotypeModels": [],
                  "name": "defaultGroups",
                  "description": "the groups to which the socket should be initially subscribed",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "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": "WEBSOCKET",
                      "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": 0
              },
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "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": 2,
                    "tabName": "General"
                  },
                  "allowedStereotypeModels": [],
                  "name": "path",
                  "description": "Path where the request will be sent.",
                  "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": 1,
                    "tabName": "General"
                  },
                  "allowedStereotypeModels": [],
                  "name": "url",
                  "displayModel": {
                    "displayName": "URL",
                    "example": "ws://www.mulesoft.com"
                  },
                  "description": "URL where to send the request.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [
                {
                  "exclusiveParameterNames": [
                    "path",
                    "url"
                  ],
                  "isOneRequired": true
                }
              ],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "General"
              },
              "showInDsl": false,
              "name": "URI Settings",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "classInformation": {
                        "classname": "org.mule.runtime.api.util.MultiMap",
                        "hasDefaultConstructor": true,
                        "isInterface": false,
                        "isInstantiable": true,
                        "isAbstract": false,
                        "isFinal": false,
                        "implementedInterfaces": [
                          "java.util.Map",
                          "java.io.Serializable"
                        ],
                        "parent": "",
                        "genericTypes": [
                          "java.lang.String",
                          "java.lang.String"
                        ],
                        "isMap": true
                      }
                    },
                    "open": {
                      "type": "String"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "PRIMARY_CONTENT",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6
                  },
                  "allowedStereotypeModels": [],
                  "name": "headers",
                  "description": "HTTP headers the message should include.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "classInformation": {
                        "classname": "java.util.Map",
                        "hasDefaultConstructor": false,
                        "isInterface": true,
                        "isInstantiable": false,
                        "isAbstract": true,
                        "isFinal": false,
                        "implementedInterfaces": [],
                        "parent": "",
                        "genericTypes": [
                          "java.lang.String",
                          "java.lang.String"
                        ],
                        "isMap": true
                      }
                    },
                    "open": {
                      "type": "String"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "CONTENT",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 7
                  },
                  "allowedStereotypeModels": [],
                  "name": "uriParams",
                  "displayModel": {
                    "displayName": "URI Parameters"
                  },
                  "description": "URI parameters that should be used to create the request.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "classInformation": {
                        "classname": "org.mule.runtime.api.util.MultiMap",
                        "hasDefaultConstructor": true,
                        "isInterface": false,
                        "isInstantiable": true,
                        "isAbstract": false,
                        "isFinal": false,
                        "implementedInterfaces": [
                          "java.util.Map",
                          "java.io.Serializable"
                        ],
                        "parent": "",
                        "genericTypes": [
                          "java.lang.String",
                          "java.lang.String"
                        ],
                        "isMap": true
                      }
                    },
                    "open": {
                      "type": "String"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "CONTENT",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 8
                  },
                  "allowedStereotypeModels": [],
                  "name": "queryParams",
                  "displayModel": {
                    "displayName": "Query Parameters"
                  },
                  "description": "Query parameters the request should include.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "General"
              },
              "showInDsl": false,
              "name": "Connection Request",
              "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": 9,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "target",
                  "displayModel": {
                    "displayName": "Target Variable"
                  },
                  "description": "The name of a variable on which the operation\u0027s output will be placed",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "REQUIRED",
                  "defaultValue": "#[payload]",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 10,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "targetValue",
                  "displayModel": {
                    "displayName": "Target Value"
                  },
                  "description": "An expression that will be evaluated against the operation\u0027s output and the outcome of that expression will be stored in the target variable",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4
              },
              "showInDsl": false,
              "name": "Output",
              "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": 11,
                    "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": 5
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "openOutboundSocket",
          "description": "Opens a new outbound socket",
          "modelProperties": {},
          "kind": "operation"
        },
        {
          "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": [
            "WEBSOCKET:RETRY_EXHAUSTED",
            "WEBSOCKET:NO_SUCH_SOCKET",
            "WEBSOCKET:CONNECTIVITY"
          ],
          "stereotype": {
            "type": "SEND",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "WEBSOCKET",
              "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": "socketId",
                  "description": "the id of the socket through which data is to be sent",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Binary",
                    "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": "content",
                  "description": "the content to be sent",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONFIG",
                      "namespace": "WEBSOCKET",
                      "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": 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": "send",
          "description": "Sends the given content through the given socket",
          "modelProperties": {},
          "kind": "operation"
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "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": [
            "WEBSOCKET:RETRY_EXHAUSTED",
            "WEBSOCKET:NO_SUCH_SOCKET",
            "WEBSOCKET:CONNECTIVITY"
          ],
          "stereotype": {
            "type": "SUBSCRIBE_GROUPS",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "WEBSOCKET",
              "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": "socketId",
                  "description": "the id of the socket to be subscribed",
                  "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": [
                          "java.lang.String"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "String"
                    }
                  },
                  "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": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "groups",
                  "description": "the groups that the socket will be subscribed to",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONFIG",
                      "namespace": "WEBSOCKET",
                      "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": 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": "subscribeGroups",
          "description": "Subscribes the socket of the given socketId to the given groups. This operation can be used on the same socket as many times as necessary, each use being additive over previous ones. Repeated groups will be ignored. Works for both types INBOUND and OUTBOUND sockets.",
          "modelProperties": {},
          "kind": "operation"
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "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": [
            "WEBSOCKET:RETRY_EXHAUSTED",
            "WEBSOCKET:NO_SUCH_SOCKET",
            "WEBSOCKET:CONNECTIVITY"
          ],
          "stereotype": {
            "type": "UNSUBSCRIBE_GROUPS",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "PROCESSOR",
              "namespace": "WEBSOCKET",
              "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": "socketId",
                  "description": "the id of the socket to be subscribed",
                  "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": [
                          "java.lang.String"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "String"
                    }
                  },
                  "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": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "groups",
                  "description": "the groups that the socket will be unsubscribed from",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONFIG",
                      "namespace": "WEBSOCKET",
                      "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": 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": "unsubscribeGroups",
          "description": "Unsubscribes the socket of the given socketId from the given groups. This operation can be used on the same socket as many times as necessary, each use being additive over previous ones. Works for both types INBOUND and OUTBOUND sockets.",
          "modelProperties": {},
          "kind": "operation"
        }
      ],
      "connectionProviders": [
        {
          "connectionManagementType": "CACHED",
          "externalLibraryModels": [],
          "supportsConnectivityTesting": true,
          "stereotype": {
            "type": "CONNECTION",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "CONNECTION",
              "namespace": "MULE"
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "@ref:com.mulesoft.connectors.ws.api.server.WebSocketServerSettings"
                  },
                  "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
                  },
                  "allowedStereotypeModels": [],
                  "name": "serverSettings",
                  "description": "",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "@ref:com.mulesoft.connectors.ws.api.client.WebSocketClientSettings"
                  },
                  "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": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "clientSettings",
                  "description": "",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1
              },
              "showInDsl": false,
              "name": "General",
              "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": 3,
                    "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": 2
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "connection",
          "description": "",
          "modelProperties": {
            "requiredForMetadata": {
              "requiredParameters": [
                "serverSettings",
                "clientSettings"
              ]
            }
          }
        }
      ],
      "messageSources": [
        {
          "hasResponse": false,
          "runsOnPrimaryNodeOnly": false,
          "output": {
            "type": {
              "format": {
                "id": "*/*",
                "label": "*/*",
                "validMimeTypes": [
                  "*/*"
                ]
              },
              "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,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "@ref:com.mulesoft.connectors.ws.api.InboundWebSocketAttributes"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": true,
          "notifications": [],
          "nestedComponents": [],
          "errors": [],
          "stereotype": {
            "type": "INBOUND-LISTENER",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "SOURCE",
              "namespace": "WEBSOCKET",
              "parent": {
                "type": "SOURCE",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "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": 1,
                    "tabName": "General"
                  },
                  "allowedStereotypeModels": [],
                  "name": "path",
                  "description": "Relative path from the path set in the configuration",
                  "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": [
                          "java.lang.String"
                        ],
                        "isMap": false
                      }
                    },
                    "item": {
                      "type": "String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "allowedStereotypeModels": [],
                  "name": "defaultGroups",
                  "description": "The groups to which newly created sockets should be initially subscribed to",
                  "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": 3,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "outputMimeType",
                  "description": "The mime type of the payload that this operation outputs.",
                  "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": 4,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "outputEncoding",
                  "description": "The encoding of the payload that this operation outputs.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "isConfigOverride": false,
                  "isComponentId": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6
                  },
                  "allowedStereotypeModels": [
                    {
                      "type": "CONFIG",
                      "namespace": "WEBSOCKET",
                      "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": false,
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 9,
                    "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": "Union",
                    "annotations": {
                      "typeId": "ByteStreamingStrategy"
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "repeatable-in-memory-stream"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "initialBufferSize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "512"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is the amount of memory that will be allocated in order to consume the stream and provide random access to it. If the stream contains more data than can be fit into this buffer, then it will be expanded by according to the bufferSizeIncrement attribute, with an upper limit of maxInMemorySize."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferSizeIncrement"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "512"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is by how much will be buffer size by expanded if it exceeds its initial size. Setting a value of zero or lower will mean that the buffer should not expand, meaning that a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised when the buffer gets full."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "maxBufferSize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "1024"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is the maximum amount of memory that will be used. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised. A value lower or equal to zero means no limit."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferUnit"
                            },
                            "model": {
                              "type": "String",
                              "annotations": {
                                "enum": {
                                  "type": "[Ljava.lang.String;",
                                  "values": [
                                    "BYTE",
                                    "KB",
                                    "MB",
                                    "GB"
                                  ]
                                },
                                "default": "KB"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "The unit in which all these attributes are expressed"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "repeatable-file-store-stream"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "inMemorySize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "512"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "Defines the maximum memory that the stream should use to keep data in memory. If more than that is consumed then it will start to buffer the content on disk."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferUnit"
                            },
                            "model": {
                              "type": "String",
                              "annotations": {
                                "enum": {
                                  "type": "[Ljava.lang.String;",
                                  "values": [
                                    "BYTE",
                                    "KB",
                                    "MB",
                                    "GB"
                                  ]
                                },
                                "default": "KB"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "The unit in which maxInMemorySize is expressed"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "non-repeatable-stream",
                          "description": {
                            "value": "This configuration allows the input stream to be read only once. It will not allow to seek randomly which will limit the transformations that DW can perform on this stream. Use this option for use cases which just require moving data around from one system to another to get optimum performance."
                          }
                        },
                        "fields": []
                      }
                    ]
                  },
                  "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": 5,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "streamingStrategy",
                  "description": "Configure if repeatable streams should be used and their behaviour",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-byte-streaming-strategy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 2
                    }
                  }
                },
                {
                  "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": 7,
                    "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": 8,
                    "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": "inbound-listener",
          "displayModel": {
            "displayName": "On New Inbound Message",
            "summary": "Triggers when a message is received from an inbound WebSocket"
          },
          "description": "Exposes an endpoint through which external systems can connect through a WebSocket. This source will trigger the owning flow each time one of those WebSockets send information to this server. Additionally, any \u0026lt;websocket:on-inbound-connection\u0026gt; component with a matching path will also be triggered when that socket connection is established.",
          "modelProperties": {},
          "kind": "source"
        },
        {
          "hasResponse": false,
          "runsOnPrimaryNodeOnly": false,
          "output": {
            "type": {
              "format": {
                "id": "text/plain",
                "label": "text/plain",
                "validMimeTypes": [
                  "text/plain"
                ]
              },
              "type": "String"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "@ref:com.mulesoft.connectors.ws.api.WebSocketAttributes"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": false,
          "notifications": [],
          "nestedComponents": [],
          "errors": [],
          "stereotype": {
            "type": "ON-INBOUND-CONNECTION",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "SOURCE",
              "namespace": "WEBSOCKET",
              "parent": {
                "type": "SOURCE",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "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": 1,
                    "tabName": "General"
                  },
                  "allowedStereotypeModels": [],
                  "name": "path",
                  "description": "Relative path from the path set in the configuration",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "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": "WEBSOCKET",
                      "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": false,
                  "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": "on-inbound-connection",
          "displayModel": {
            "displayName": "On New Inbound Connection",
            "summary": "Triggers when an inbound WebSocket connection is established"
          },
          "description": "Triggers when an inbound WebSocket connection is established",
          "modelProperties": {},
          "kind": "source"
        },
        {
          "hasResponse": false,
          "runsOnPrimaryNodeOnly": false,
          "output": {
            "type": {
              "format": "java",
              "type": "@ref:com.mulesoft.connectors.ws.api.ClosedConnectionEvent"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "@ref:com.mulesoft.connectors.ws.api.WebSocketAttributes"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": false,
          "notifications": [],
          "nestedComponents": [],
          "errors": [],
          "stereotype": {
            "type": "ON-SOCKET-CLOSED",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "SOURCE",
              "namespace": "WEBSOCKET",
              "parent": {
                "type": "SOURCE",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "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": 1,
                    "tabName": "General"
                  },
                  "allowedStereotypeModels": [],
                  "name": "path",
                  "description": "Relative path from the path set in the configuration",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "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": "WEBSOCKET",
                      "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": false,
                  "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": "on-socket-closed",
          "displayModel": {
            "displayName": "On Socket Closed",
            "summary": "Triggers when a WebSocket is closed."
          },
          "description": "Triggers when a WebSocket is closed.",
          "modelProperties": {},
          "kind": "source"
        },
        {
          "hasResponse": false,
          "runsOnPrimaryNodeOnly": false,
          "output": {
            "type": {
              "format": {
                "id": "*/*",
                "label": "*/*",
                "validMimeTypes": [
                  "*/*"
                ]
              },
              "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,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "@ref:com.mulesoft.connectors.ws.api.WebSocketAttributes"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "supportsStreaming": true,
          "notifications": [],
          "nestedComponents": [],
          "errors": [],
          "stereotype": {
            "type": "OUTBOUND-LISTENER",
            "namespace": "WEBSOCKET",
            "parent": {
              "type": "SOURCE",
              "namespace": "WEBSOCKET",
              "parent": {
                "type": "SOURCE",
                "namespace": "MULE"
              }
            }
          },
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "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": 1,
                    "tabName": "General"
                  },
                  "allowedStereotypeModels": [],
                  "name": "path",
                  "description": "Relative path from the path set in the configuration",
                  "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": 2,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "outputMimeType",
                  "description": "The mime type of the payload that this operation outputs.",
                  "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": 3,
                    "tabName": "Advanced"
                  },
                  "allowedStereotypeModels": [],
                  "name": "outputEncoding",
                  "description": "The encoding of the payload that this operation outputs.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.extension.api.runtime.config.ConfigurationProvider"
                    },
                    "fields": []
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "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": "WEBSOCKET",
                      "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": false,
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": false,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 8,
                    "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": "Union",
                    "annotations": {
                      "typeId": "ByteStreamingStrategy"
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "repeatable-in-memory-stream"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "initialBufferSize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "512"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is the amount of memory that will be allocated in order to consume the stream and provide random access to it. If the stream contains more data than can be fit into this buffer, then it will be expanded by according to the bufferSizeIncrement attribute, with an upper limit of maxInMemorySize."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferSizeIncrement"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "512"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is by how much will be buffer size by expanded if it exceeds its initial size. Setting a value of zero or lower will mean that the buffer should not expand, meaning that a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised when the buffer gets full."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "maxBufferSize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "1024"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is the maximum amount of memory that will be used. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised. A value lower or equal to zero means no limit."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferUnit"
                            },
                            "model": {
                              "type": "String",
                              "annotations": {
                                "enum": {
                                  "type": "[Ljava.lang.String;",
                                  "values": [
                                    "BYTE",
                                    "KB",
                                    "MB",
                                    "GB"
                                  ]
                                },
                                "default": "KB"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "The unit in which all these attributes are expressed"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "repeatable-file-store-stream"
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "inMemorySize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "default": "512"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "Defines the maximum memory that the stream should use to keep data in memory. If more than that is consumed then it will start to buffer the content on disk."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferUnit"
                            },
                            "model": {
                              "type": "String",
                              "annotations": {
                                "enum": {
                                  "type": "[Ljava.lang.String;",
                                  "values": [
                                    "BYTE",
                                    "KB",
                                    "MB",
                                    "GB"
                                  ]
                                },
                                "default": "KB"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "The unit in which maxInMemorySize is expressed"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "non-repeatable-stream",
                          "description": {
                            "value": "This configuration allows the input stream to be read only once. It will not allow to seek randomly which will limit the transformations that DW can perform on this stream. Use this option for use cases which just require moving data around from one system to another to get optimum performance."
                          }
                        },
                        "fields": []
                      }
                    ]
                  },
                  "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": "streamingStrategy",
                  "description": "Configure if repeatable streams should be used and their behaviour",
                  "modelProperties": {
                    "org.mule.runtime.extension.api.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-byte-streaming-strategy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.api.property.InfrastructureParameterModelProperty": {
                      "sequence": 2
                    }
                  }
                },
                {
                  "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": 6,
                    "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": 7,
                    "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": "outbound-listener",
          "displayModel": {
            "displayName": "On New Outbound Message",
            "summary": "Triggers when a message is received from an inbound WebSocket"
          },
          "description": "Triggers when an outbound socket receives a message",
          "modelProperties": {},
          "kind": "source"
        }
      ],
      "name": "config",
      "description": "Default configuration",
      "modelProperties": {
        "requiredForMetadata": {
          "requiredParameters": [
            "name"
          ]
        }
      }
    }
  ],
  "operations": [],
  "functions": [],
  "constructs": [],
  "connectionProviders": [
    {
      "connectionManagementType": "CACHED",
      "externalLibraryModels": [],
      "supportsConnectivityTesting": true,
      "stereotype": {
        "type": "CONNECTION",
        "namespace": "WEBSOCKET",
        "parent": {
          "type": "CONNECTION",
          "namespace": "MULE"
        }
      },
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "@ref:com.mulesoft.connectors.ws.api.server.WebSocketServerSettings"
              },
              "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
              },
              "allowedStereotypeModels": [],
              "name": "serverSettings",
              "description": "",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "@ref:com.mulesoft.connectors.ws.api.client.WebSocketClientSettings"
              },
              "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": 2
              },
              "allowedStereotypeModels": [],
              "name": "clientSettings",
              "description": "",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false,
            "order": 1
          },
          "showInDsl": false,
          "name": "General",
          "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": 3,
                "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": 2
          },
          "showInDsl": false,
          "name": "Connection",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "connection",
      "description": "",
      "modelProperties": {
        "requiredForMetadata": {
          "requiredParameters": [
            "serverSettings",
            "clientSettings"
          ]
        }
      }
    }
  ],
  "messageSources": [],
  "notifications": [],
  "errors": [
    {
      "error": "WEBSOCKET:RETRY_EXHAUSTED",
      "parent": "MULE:RETRY_EXHAUSTED",
      "handleable": true
    },
    {
      "error": "MULE:RETRY_EXHAUSTED",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:CONNECTIVITY",
      "parent": "MULE:CONNECTIVITY",
      "handleable": true
    },
    {
      "error": "MULE:CONNECTIVITY",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:NON_UNIQUE_SOCKET_ID",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:SERVER_SECURITY",
      "parent": "MULE:SERVER_SECURITY",
      "handleable": true
    },
    {
      "error": "MULE:SERVER_SECURITY",
      "parent": "MULE:SECURITY",
      "handleable": true
    },
    {
      "error": "MULE:SECURITY",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:FORBIDDEN",
      "parent": "WEBSOCKET:CLIENT_SECURITY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:CLIENT_SECURITY",
      "parent": "MULE:CLIENT_SECURITY",
      "handleable": true
    },
    {
      "error": "MULE:CLIENT_SECURITY",
      "parent": "MULE:SECURITY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:SERVICE_UNAVAILABLE",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:REMOTELY_CLOSED",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:INVALID_SOCKET_ID",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:INTERNAL_SERVER_ERROR",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:NOT_FOUND",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:BASIC_AUTHENTICATION",
      "parent": "WEBSOCKET:SERVER_SECURITY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:NO_SUCH_SOCKET",
      "parent": "MULE:ANY",
      "handleable": true
    },
    {
      "error": "WEBSOCKET:UNAUTHORIZED",
      "parent": "WEBSOCKET:CLIENT_SECURITY",
      "handleable": true
    }
  ],
  "modelProperties": {},
  "types": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.BroadcastFailure",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.BroadcastFailure",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "BroadcastFailure"
        }
      },
      "fields": [
        {
          "key": {
            "name": "errorMessage"
          },
          "model": {
            "type": "String"
          }
        },
        {
          "key": {
            "name": "exception"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "java.lang.Throwable",
              "classInformation": {
                "classname": "java.lang.Throwable",
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.io.Serializable"
                ],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeAlias": {
                "value": "Throwable"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "cause"
                },
                "model": "#..",
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "localizedMessage"
                },
                "model": {
                  "type": "String"
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "message"
                },
                "model": {
                  "type": "String"
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "stackTrace"
                },
                "model": {
                  "type": "Array",
                  "annotations": {
                    "classInformation": {
                      "classname": "java.lang.StackTraceElement[]",
                      "hasDefaultConstructor": false,
                      "isInterface": false,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": true,
                      "implementedInterfaces": [
                        "java.lang.Cloneable",
                        "java.io.Serializable"
                      ],
                      "parent": "",
                      "genericTypes": [],
                      "isMap": false
                    }
                  },
                  "item": {
                    "type": "Object",
                    "annotations": {
                      "typeId": "java.lang.StackTraceElement",
                      "classInformation": {
                        "classname": "java.lang.StackTraceElement",
                        "hasDefaultConstructor": false,
                        "isInterface": false,
                        "isInstantiable": false,
                        "isAbstract": false,
                        "isFinal": true,
                        "implementedInterfaces": [
                          "java.io.Serializable"
                        ],
                        "parent": "",
                        "genericTypes": [],
                        "isMap": false
                      },
                      "typeAlias": {
                        "value": "StackTraceElement"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "className"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "fileName"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "lineNumber"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "classInformation": {
                              "classname": "int",
                              "hasDefaultConstructor": false,
                              "isInterface": false,
                              "isInstantiable": false,
                              "isAbstract": true,
                              "isFinal": true,
                              "implementedInterfaces": [],
                              "parent": "",
                              "genericTypes": [],
                              "isMap": false
                            },
                            "int": {}
                          }
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "methodName"
                        },
                        "model": {
                          "type": "String"
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      },
                      {
                        "key": {
                          "name": "nativeMethod"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "typeId": "boolean"
                          }
                        },
                        "annotations": {
                          "visibility": "READ_ONLY"
                        }
                      }
                    ]
                  }
                }
              },
              {
                "key": {
                  "name": "suppressed"
                },
                "model": {
                  "type": "Array",
                  "annotations": {
                    "classInformation": {
                      "classname": "java.lang.Throwable[]",
                      "hasDefaultConstructor": false,
                      "isInterface": false,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": true,
                      "implementedInterfaces": [
                        "java.lang.Cloneable",
                        "java.io.Serializable"
                      ],
                      "parent": "",
                      "genericTypes": [],
                      "isMap": false
                    }
                  },
                  "item": "#../.."
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              }
            ]
          }
        },
        {
          "key": {
            "name": "socketId"
          },
          "model": {
            "type": "String"
          }
        },
        {
          "key": {
            "name": "type"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "org.mule.runtime.http.api.ws.WebSocket.WebSocketType",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "INBOUND",
                  "OUTBOUND"
                ]
              }
            }
          }
        },
        {
          "key": {
            "name": "uri"
          },
          "model": {
            "type": "String"
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.ClosedConnectionEvent",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.ClosedConnectionEvent",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "java.io.Serializable"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "ClosedConnectionEvent"
        }
      },
      "fields": [
        {
          "key": {
            "name": "code",
            "required": "true"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "org.mule.runtime.http.api.ws.WebSocketCloseCode",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "NORMAL_CLOSURE",
                  "ENDPOINT_GOING_DOWN",
                  "PROTOCOL_ERROR",
                  "INVALID_DATA",
                  "MESSAGE_TOO_LARGE"
                ]
              }
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "reason"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.InboundWebSocketAttributes",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.InboundWebSocketAttributes",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "com.mulesoft.connectors.ws.api.WebSocketAttributes",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "InboundWebSocketAttributes"
        }
      },
      "fields": [
        {
          "key": {
            "name": "version",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "localAddress",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "remoteAddress",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "clientCertificate"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "java.security.cert.Certificate",
              "classInformation": {
                "classname": "java.security.cert.Certificate",
                "hasDefaultConstructor": false,
                "isInterface": false,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.io.Serializable"
                ],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeAlias": {
                "value": "Certificate"
              }
            },
            "fields": [
              {
                "key": {
                  "name": "encoded"
                },
                "model": {
                  "type": "Binary",
                  "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
                    }
                  }
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "publicKey"
                },
                "model": {
                  "type": "Object",
                  "annotations": {
                    "typeId": "java.security.PublicKey",
                    "classInformation": {
                      "classname": "java.security.PublicKey",
                      "hasDefaultConstructor": false,
                      "isInterface": true,
                      "isInstantiable": false,
                      "isAbstract": true,
                      "isFinal": false,
                      "implementedInterfaces": [
                        "java.security.Key"
                      ],
                      "parent": "",
                      "genericTypes": [],
                      "isMap": false
                    },
                    "typeAlias": {
                      "value": "PublicKey"
                    }
                  },
                  "fields": []
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              },
              {
                "key": {
                  "name": "type"
                },
                "model": {
                  "type": "String"
                },
                "annotations": {
                  "visibility": "READ_ONLY"
                }
              }
            ]
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "socketId",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "socketType",
            "required": "true"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "org.mule.runtime.http.api.ws.WebSocket.WebSocketType",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "INBOUND",
                  "OUTBOUND"
                ]
              }
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "groups",
            "required": "true"
          },
          "model": {
            "type": "Array",
            "annotations": {
              "classInformation": {
                "classname": "java.util.List",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Collection"
                ],
                "parent": "",
                "genericTypes": [
                  "java.lang.String"
                ],
                "isMap": false
              }
            },
            "item": {
              "type": "String"
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "path",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "requestUri",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "scheme",
            "required": "true"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "org.mule.runtime.http.api.ws.WebSocketProtocol",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "WS",
                  "WSS"
                ]
              }
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "queryParams",
            "required": "true"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "classInformation": {
                "classname": "org.mule.runtime.api.util.MultiMap",
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Map",
                  "java.io.Serializable"
                ],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.String"
                ],
                "isMap": true
              }
            },
            "open": {
              "type": "String"
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "headers",
            "required": "true"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "classInformation": {
                "classname": "org.mule.runtime.api.util.MultiMap",
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Map",
                  "java.io.Serializable"
                ],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.String"
                ],
                "isMap": true
              }
            },
            "open": {
              "type": "String"
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "uriParams",
            "required": "true"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "classInformation": {
                "classname": "java.util.Map",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.String"
                ],
                "isMap": true
              }
            },
            "open": {
              "type": "String"
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "method",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "queryString",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.WebSocketAttributes",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.WebSocketAttributes",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "java.io.Serializable"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "WebSocketAttributes"
        }
      },
      "fields": [
        {
          "key": {
            "name": "socketId",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "socketType",
            "required": "true"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "org.mule.runtime.http.api.ws.WebSocket.WebSocketType",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "INBOUND",
                  "OUTBOUND"
                ]
              }
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "groups",
            "required": "true"
          },
          "model": {
            "type": "Array",
            "annotations": {
              "classInformation": {
                "classname": "java.util.List",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Collection"
                ],
                "parent": "",
                "genericTypes": [
                  "java.lang.String"
                ],
                "isMap": false
              }
            },
            "item": {
              "type": "String"
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "path",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "requestUri",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "scheme",
            "required": "true"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "org.mule.runtime.http.api.ws.WebSocketProtocol",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "WS",
                  "WSS"
                ]
              }
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "queryParams",
            "required": "true"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "classInformation": {
                "classname": "org.mule.runtime.api.util.MultiMap",
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Map",
                  "java.io.Serializable"
                ],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.String"
                ],
                "isMap": true
              }
            },
            "open": {
              "type": "String"
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "headers",
            "required": "true"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "classInformation": {
                "classname": "org.mule.runtime.api.util.MultiMap",
                "hasDefaultConstructor": true,
                "isInterface": false,
                "isInstantiable": true,
                "isAbstract": false,
                "isFinal": false,
                "implementedInterfaces": [
                  "java.util.Map",
                  "java.io.Serializable"
                ],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.String"
                ],
                "isMap": true
              }
            },
            "open": {
              "type": "String"
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "uriParams",
            "required": "true"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "classInformation": {
                "classname": "java.util.Map",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [
                  "java.lang.String",
                  "java.lang.String"
                ],
                "isMap": true
              }
            },
            "open": {
              "type": "String"
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "method",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "queryString",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.client.WebSocketClientSettings",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.client.WebSocketClientSettings",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "WebSocketClientSettings"
        }
      },
      "fields": [
        {
          "key": {
            "name": "host"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Host where the requests will be sent.",
                "example": "www.mulesoft.com"
              }
            }
          }
        },
        {
          "key": {
            "name": "port"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "classInformation": {
                "classname": "java.lang.Integer",
                "hasDefaultConstructor": false,
                "isInterface": false,
                "isInstantiable": false,
                "isAbstract": false,
                "isFinal": true,
                "implementedInterfaces": [
                  "java.lang.Comparable"
                ],
                "parent": "java.lang.Number",
                "genericTypes": [],
                "isMap": false
              },
              "int": {}
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Port where the requests will be sent"
              }
            }
          }
        },
        {
          "key": {
            "name": "basePath"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "/",
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Base path to use for all outbound sockets that reference this config."
              }
            }
          }
        },
        {
          "key": {
            "name": "protocol"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "org.mule.runtime.http.api.ws.WebSocketProtocol",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "WS",
                  "WSS"
                ]
              }
            }
          },
          "annotations": {
            "default": "WS",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Protocol to use for outbound communication."
              }
            }
          }
        },
        {
          "key": {
            "name": "tlsContext"
          },
          "model": {
            "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"
                }
              }
            },
            "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"
                  }
                }
              }
            ]
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "displayName": "Outbound TLS Configuration",
                "summary": "Reference to a TLS config element. This will enable WSS for outbound sockets"
              }
            }
          }
        },
        {
          "key": {
            "name": "defaultHeaders"
          },
          "model": {
            "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.ws.api.client.RequestHeader"
                ],
                "isMap": false
              }
            },
            "item": {
              "type": "Object",
              "annotations": {
                "typeId": "com.mulesoft.connectors.ws.api.client.RequestHeader",
                "classInformation": {
                  "classname": "com.mulesoft.connectors.ws.api.client.RequestHeader",
                  "hasDefaultConstructor": true,
                  "isInterface": false,
                  "isInstantiable": true,
                  "isAbstract": false,
                  "isFinal": false,
                  "implementedInterfaces": [],
                  "parent": "",
                  "genericTypes": [],
                  "isMap": false
                },
                "typeAlias": {
                  "value": "header"
                }
              },
              "fields": [
                {
                  "key": {
                    "name": "key",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                },
                {
                  "key": {
                    "name": "value",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                }
              ]
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 6,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Default HTTP headers the message should include."
              }
            }
          }
        },
        {
          "key": {
            "name": "defaultQueryParams"
          },
          "model": {
            "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.ws.api.client.QueryParam"
                ],
                "isMap": false
              }
            },
            "item": {
              "type": "Object",
              "annotations": {
                "typeId": "com.mulesoft.connectors.ws.api.client.QueryParam",
                "classInformation": {
                  "classname": "com.mulesoft.connectors.ws.api.client.QueryParam",
                  "hasDefaultConstructor": true,
                  "isInterface": false,
                  "isInstantiable": true,
                  "isAbstract": false,
                  "isFinal": false,
                  "implementedInterfaces": [],
                  "parent": "",
                  "genericTypes": [],
                  "isMap": false
                },
                "typeAlias": {
                  "value": "QueryParam"
                }
              },
              "fields": [
                {
                  "key": {
                    "name": "key",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                },
                {
                  "key": {
                    "name": "value",
                    "required": "true"
                  },
                  "model": {
                    "type": "String"
                  },
                  "annotations": {
                    "expressionSupport": {
                      "value": "SUPPORTED"
                    }
                  }
                }
              ]
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 7,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "displayName": "Query Parameters",
                "summary": "Default Query parameters the request should include."
              }
            }
          }
        },
        {
          "key": {
            "name": "connectionIdleTimeout"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "classInformation": {
                "classname": "java.lang.Integer",
                "hasDefaultConstructor": false,
                "isInterface": false,
                "isInstantiable": false,
                "isAbstract": false,
                "isFinal": true,
                "implementedInterfaces": [
                  "java.lang.Comparable"
                ],
                "parent": "java.lang.Number",
                "genericTypes": [],
                "isMap": false
              },
              "int": {}
            }
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 8,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "A timeout for idle connections to be closed. If not specified, there\u0027ll be no timeout"
              }
            }
          }
        },
        {
          "key": {
            "name": "connectionIdleTimeoutUnit"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.util.concurrent.TimeUnit",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "NANOSECONDS",
                  "MICROSECONDS",
                  "MILLISECONDS",
                  "SECONDS",
                  "MINUTES",
                  "HOURS",
                  "DAYS"
                ]
              }
            }
          },
          "annotations": {
            "default": "MINUTES",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 9,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Timeout unit that qualifies the connectionIdleTimeout"
              }
            }
          }
        },
        {
          "key": {
            "name": "followRedirects"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "true",
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 10,
                "tabName": "Client Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Specifies whether to follow redirects or not."
              }
            }
          }
        },
        {
          "key": {
            "name": "preserveHeadersCase"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "default": "false",
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 11,
                "tabName": "Client Settings"
              }
            }
          }
        },
        {
          "key": {
            "name": "maxConnections"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "classInformation": {
                "classname": "java.lang.Integer",
                "hasDefaultConstructor": false,
                "isInterface": false,
                "isInstantiable": false,
                "isAbstract": false,
                "isFinal": true,
                "implementedInterfaces": [
                  "java.lang.Comparable"
                ],
                "parent": "java.lang.Number",
                "genericTypes": [],
                "isMap": false
              },
              "int": {}
            }
          },
          "annotations": {
            "default": "-1",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 12,
                "tabName": "Client Settings"
              }
            }
          }
        },
        {
          "key": {
            "name": "proxyConfig"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "com.mulesoft.connectors.ws.api.client.proxy.HttpProxyConfig",
              "classInformation": {
                "classname": "com.mulesoft.connectors.ws.api.client.proxy.HttpProxyConfig",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [
                  "org.mule.runtime.http.api.client.proxy.ProxyConfig"
                ],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeAlias": {
                "value": "HttpProxyConfig"
              }
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Proxy"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Reusable configuration element for outbound connections through a proxy"
              }
            }
          }
        },
        {
          "key": {
            "name": "authentication"
          },
          "model": {
            "type": "Object",
            "annotations": {
              "typeId": "org.mule.extension.http.api.request.authentication.HttpRequestAuthentication",
              "classInformation": {
                "classname": "org.mule.extension.http.api.request.authentication.HttpRequestAuthentication",
                "hasDefaultConstructor": false,
                "isInterface": true,
                "isInstantiable": false,
                "isAbstract": true,
                "isFinal": false,
                "implementedInterfaces": [],
                "parent": "",
                "genericTypes": [],
                "isMap": false
              },
              "typeAlias": {
                "value": "HttpRequestAuthentication"
              }
            },
            "fields": []
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Authentication"
              }
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.client.proxy.DefaultNtlmProxyConfig",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.client.proxy.DefaultNtlmProxyConfig",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "com.mulesoft.connectors.ws.api.client.proxy.HttpProxyConfig.HttpNtlmProxyConfig"
          ],
          "parent": "com.mulesoft.connectors.ws.api.client.proxy.DefaultProxyConfig",
          "genericTypes": [],
          "isMap": false
        },
        "typeDsl": {
          "allowInlineDefinition": true,
          "allowTopLevelDefinition": true
        },
        "typeAlias": {
          "value": "ntlm-proxy"
        }
      },
      "fields": [
        {
          "key": {
            "name": "ntlmDomain",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "display": {
              "displayModel": {
                "displayName": "NTLM Domain"
              }
            }
          }
        },
        {
          "key": {
            "name": "host",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "port",
            "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": "username"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "password"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false
              }
            }
          }
        },
        {
          "key": {
            "name": "nonProxyHosts"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.client.proxy.DefaultProxyConfig",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.client.proxy.DefaultProxyConfig",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "com.mulesoft.connectors.ws.api.client.proxy.HttpProxyConfig"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeDsl": {
          "allowInlineDefinition": true,
          "allowTopLevelDefinition": true
        },
        "typeAlias": {
          "value": "proxy"
        }
      },
      "fields": [
        {
          "key": {
            "name": "host",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "port",
            "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": "username"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "password"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false
              }
            }
          }
        },
        {
          "key": {
            "name": "nonProxyHosts"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.client.proxy.HttpProxyConfig",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.client.proxy.HttpProxyConfig",
          "hasDefaultConstructor": false,
          "isInterface": true,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.runtime.http.api.client.proxy.ProxyConfig"
          ],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "HttpProxyConfig"
        }
      },
      "fields": []
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "com.mulesoft.connectors.ws.api.server.WebSocketServerSettings",
        "classInformation": {
          "classname": "com.mulesoft.connectors.ws.api.server.WebSocketServerSettings",
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": [],
          "isMap": false
        },
        "typeAlias": {
          "value": "WebSocketServerSettings"
        }
      },
      "fields": [
        {
          "key": {
            "name": "listenerBasePath"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "default": "/",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Server Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Base path to use for all resources served through this config."
              }
            }
          }
        },
        {
          "key": {
            "name": "listenerConfig",
            "required": "true"
          },
          "model": {
            "type": "String"
          },
          "annotations": {
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Server Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Reference to the \u003chttp:listener-config\u003e used to expose the inbound endpoint"
              }
            },
            "stereotype": {
              "allowedStereotypes": [
                {
                  "type": "LISTENER_CONFIG",
                  "namespace": "HTTP",
                  "parent": {
                    "type": "MODULE_CONFIG",
                    "namespace": "MULE"
                  }
                }
              ]
            }
          }
        },
        {
          "key": {
            "name": "idleSocketTimeout"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "classInformation": {
                "classname": "java.lang.Integer",
                "hasDefaultConstructor": false,
                "isInterface": false,
                "isInstantiable": false,
                "isAbstract": false,
                "isFinal": true,
                "implementedInterfaces": [
                  "java.lang.Comparable"
                ],
                "parent": "java.lang.Number",
                "genericTypes": [],
                "isMap": false
              },
              "int": {}
            }
          },
          "annotations": {
            "default": "15",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Server Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Timeout for automatically closing idle WebSockets"
              }
            }
          }
        },
        {
          "key": {
            "name": "idleSocketTimeoutUnit"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.util.concurrent.TimeUnit",
              "enum": {
                "type": "[Ljava.lang.String;",
                "values": [
                  "NANOSECONDS",
                  "MICROSECONDS",
                  "MILLISECONDS",
                  "SECONDS",
                  "MINUTES",
                  "HOURS",
                  "DAYS"
                ]
              }
            }
          },
          "annotations": {
            "default": "MINUTES",
            "expressionSupport": {
              "value": "NOT_SUPPORTED"
            },
            "layout": {
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Server Settings"
              }
            },
            "display": {
              "displayModel": {
                "summary": "Time unit that qualifies the idleSocketTimeout"
              }
            }
          }
        }
      ]
    }
  ]
}
