{
  "name": "FTP",
  "description": "Connector to manipulate Files on a FTP/SFTP server",
  "version": "4.0-SNAPSHOT",
  "vendor": "Mulesoft",
  "category": "COMMUNITY",
  "minMuleVersion": "4.0.0",
  "xmlDsl": {
    "prefix": "ftp",
    "namespace": "http://www.mulesoft.org/schema/mule/ftp",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd",
    "schemaVersion": "4.0-SNAPSHOT",
    "xsdFileName": "mule-ftp.xsd"
  },
  "resources": [],
  "subTypes": [
    {
      "baseType": {
        "format": "java",
        "type": "@ref:org.mule.extension.file.common.api.FilePredicateBuilder"
      },
      "subTypes": [
        {
          "format": "java",
          "type": "@ref:org.mule.extension.ftp.api.FtpFilePredicateBuilder"
        }
      ]
    }
  ],
  "externalLibraries": [],
  "importedTypes": [],
  "configurations": [
    {
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Advanced"
              },
              "name": "defaultWriteEncoding",
              "description": "",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        }
      ],
      "externalLibraryModels": [],
      "operations": [
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "FILE_ALREADY_EXISTS",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "sourcePath",
                  "description": "the path to the file to be copied",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "name": "targetPath",
                  "description": "the target directory where the file is going to be copied",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "true",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "name": "createParentDirectories",
                  "description": "whether or not to attempt creating any parent directories which don\u0027t exists.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4
                  },
                  "name": "overwrite",
                  "description": "whether or not overwrite the file if the target destination already exists.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "copy",
          "displayModel": {
            "summary": "Copies a file in another directory"
          },
          "description": "Copies the file at the sourcePath into the targetPath.\n\u003cp\u003e\nTo support pass-through scenarios, the sourcePath attribute is optional. If not provided, then the current\nMessage#getAttributes() value will be tested to be an instance of FileAttributes, in which case\nFileAttributes#getPath() will be used. If that\u0027s not the case, then an IllegalArgumentException will be\nthrown.\n\u003cp\u003e\nIf targetPath doesn\u0027t exists, and neither does its parent, then an attempt will be made to create depending on the\nvalue of the createParentFolder argument. If such argument is , then an IllegalArgumentException will\nbe thrown.\n\u003cp\u003e\nIf the target file already exists, then it will be overwritten if the overwrite argument is true. Otherwise,\nIllegalArgumentException will be thrown.\n\u003cp\u003e\nIt is also possible to use the targetPath to specify that the copied file should also be renamed. For example, if\nsourcePath has the value \u003ci\u003ea/b/test.txt\u003c/i\u003e and targetPath is assigned to \u003ci\u003ea/c/test.json\u003c/i\u003e, then the\nfile will indeed be copied to the \u003ci\u003ea/c/\u003c/i\u003e directory but renamed as \u003ci\u003etest.json\u003c/i\u003e\n\u003cp\u003e\nAs for the sourcePath, it can either be a file or a directory. If it points to a directory, then it will be copied\nrecursively.",
          "modelProperties": {}
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "FILE_ALREADY_EXISTS",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ACCESS_DENIED",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "directoryPath",
                  "description": "the new directory\u0027s name",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "createDirectory",
          "displayModel": {
            "summary": "Creates a new directory"
          },
          "description": "Creates a new directory on directoryPath",
          "modelProperties": {}
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ACCESS_DENIED",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "path",
                  "description": "the path to the file to be deleted",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "delete",
          "displayModel": {
            "summary": "Deletes a file"
          },
          "description": "Deletes the file pointed by path, provided that it\u0027s not locked\n\u003cp\u003e\nTo support pass-through scenarios, the path attribute is optional. If not provided, then the current\nMessage#getAttributes() value will be tested to be an instance of FileAttributes, in which case\nFileAttributes#getPath() will be used. If that\u0027s not the case, then an IllegalArgumentException will be\nthrown.",
          "modelProperties": {}
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ACCESS_DENIED",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Array",
              "annotations": {
                "typeId": "java.util.List"
              },
              "item": {
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.api.message.Message"
                },
                "fields": [
                  {
                    "key": {
                      "name": "payload"
                    },
                    "model": {
                      "required": "true",
                      "type": "Binary",
                      "annotations": {
                        "typeId": "java.io.InputStream"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "attributes"
                    },
                    "model": {
                      "required": "true",
                      "type": "@ref:org.mule.extension.ftp.api.FtpFileAttributes"
                    }
                  }
                ]
              }
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "directoryPath",
                  "description": "the path to the directory to be listed",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "name": "recursive",
                  "description": "whether to include the contents of sub-directories. Defaults to false.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "@ref:org.mule.extension.file.common.api.FilePredicateBuilder"
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "name": "matchWith",
                  "displayModel": {
                    "displayName": "File Matching Rules",
                    "summary": "Matcher to filter the listed files"
                  },
                  "description": "a matcher used to filter the output list",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "target",
                  "displayModel": {
                    "displayName": "Target Variable"
                  },
                  "description": "The name of a variable on which the operation\u0027s output will be placed",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "Output",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "list",
          "displayModel": {
            "summary": "List all the files from given directory"
          },
          "description": "Lists all the files in the directoryPath which match the given matcher.\n\u003cp\u003e\nIf the listing encounters a directory, the output list will include its contents depending on the value of the\nrecursive parameter.\n\u003cp\u003e\nIf recursive is set to true but a found directory is rejected by the matcher, then there won\u0027t be any\nrecursion into such directory.",
          "modelProperties": {}
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "FILE_ALREADY_EXISTS",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "sourcePath",
                  "description": "the path to the file to be copied",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "name": "targetPath",
                  "description": "the target directory",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "true",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "name": "createParentDirectories",
                  "description": "whether or not to attempt creating any parent directories which don\u0027t exists.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4
                  },
                  "name": "overwrite",
                  "description": "whether or not overwrite the file if the target destination already exists.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "move",
          "displayModel": {
            "summary": "Moves a file to another directory"
          },
          "description": "Moves the file at the sourcePath into the targetPath.\n\u003cp\u003e\nTo support pass-through scenarios, the sourcePath attribute is optional. If not provided, then the current\nMessage#getAttributes() value will be tested to be an instance of FileAttributes, in which case\nFileAttributes#getPath() will be used. If that\u0027s not the case, then an IllegalArgumentException will be\nthrown.\n\u003cp\u003e\nIf targetPath doesn\u0027t exists, and neither does its parent, then an attempt will be made to create depending on the\nvalue of the createParentFolder argument. If such argument is false, then an IllegalArgumentException\nwill be thrown.\n\u003cp\u003e\nIf the target file already exists, then it will be overwritten if the overwrite argument is true. Otherwise,\nIllegalArgumentException will be thrown.\n\u003cp\u003e\nIt is also possible to use the targetPath to specify that the moved file should also be renamed. For example, if\nsourcePath has the value \u003ci\u003ea/b/test.txt\u003c/i\u003e and targetPath is assigned to \u003ci\u003ea/c/test.json\u003c/i\u003e, then the\nfile will indeed be copied to the \u003ci\u003ea/c/\u003c/i\u003e directory but renamed as \u003ci\u003etest.json\u003c/i\u003e\n\u003cp\u003e\nAs for the sourcePath, it can either be a file or a directory. If it points to a directory, then it will be moved\nrecursively.",
          "modelProperties": {}
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "FILE_LOCK",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ACCESS_DENIED",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Binary",
              "annotations": {
                "typeId": "java.io.InputStream"
              }
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "@ref:org.mule.extension.ftp.api.FtpFileAttributes"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "path",
                  "displayModel": {
                    "displayName": "File Path"
                  },
                  "description": "the path to the file to be read",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "Advanced"
                  },
                  "name": "lock",
                  "description": "whether or not to lock the file. Defaults to false.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "Advanced"
                  },
                  "name": "outputMimeType",
                  "description": "The mime type of the payload that this operation outputs.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "Advanced"
                  },
                  "name": "outputEncoding",
                  "description": "The encoding of the payload that this operation outputs.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Union",
                    "annotations": {
                      "typeId": "java.lang.Object",
                      "typeAlias": {
                        "value": "ReconnectionStrategy"
                      }
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "reconnect"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Long",
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "count"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Integer",
                                "default": "2"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How many reconnection attempts to make"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "blocking"
                            },
                            "model": {
                              "type": "Boolean",
                              "annotations": {
                                "typeId": "java.lang.Boolean",
                                "default": "true"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "reconnect-forever"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Long",
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Streaming"
                  },
                  "name": "streamingStrategy",
                  "description": "Configure if repeatable streams should be used and their behaviour",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "target",
                  "displayModel": {
                    "displayName": "Target Variable"
                  },
                  "description": "The name of a variable on which the operation\u0027s output will be placed",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "Output",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "read",
          "displayModel": {
            "summary": "Obtains the content and metadata of a file at a given path"
          },
          "description": "Obtains the content and metadata of a file at a given path. The operation itself returns a Message which payload is a\nInputStream with the file\u0027s content, and the metadata is represent as a FtpFileAttributes object that\u0027s placed\nas the message Message#getAttributes() attributes.\n\u003cp\u003e\nIf the lock parameter is set to true, then a file system level lock will be placed on the file until the\ninput stream this operation returns is closed or fully consumed. Because the lock is actually provided by the host file\nsystem, its behavior might change depending on the mounted drive and the operation system on which mule is running. Take that\ninto consideration before blindly relying on this lock.\n\u003cp\u003e\nThis method also makes a best effort to determine the mime type of the file being read. A MimetypesFileTypeMap will\nbe used to make an educated guess on the file\u0027s mime type. The user also has the chance to force the output encoding and\nmimeType through the outputEncoding and outputMimeType optional parameters.",
          "modelProperties": {}
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "FILE_ALREADY_EXISTS",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ACCESS_DENIED",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "path",
                  "description": "the path to the file to be renamed",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "name": "to",
                  "displayModel": {
                    "displayName": "New Name"
                  },
                  "description": "the file\u0027s new name",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "name": "overwrite",
                  "description": "whether or not overwrite the file if the target destination already exists.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "rename",
          "displayModel": {
            "summary": "Renames a file"
          },
          "description": "Renames the file pointed by path to the name provided on the to parameter\n\u003cp\u003e\nTo support pass-through scenarios, the path attribute is optional. If not provided, then the current\nMessage#getAttributes() value will be tested to be an instance of FileAttributes, in which case\nFileAttributes#getPath() will be used. If that\u0027s not the case, then an IllegalArgumentException will be\nthrown.\n\u003cp\u003e\nto argument should not contain any path separator. IllegalArgumentException will be thrown if this\nprecondition is not honored.",
          "modelProperties": {}
        },
        {
          "blocking": true,
          "executionType": "BLOCKING",
          "errors": [
            {
              "type": "RETRY_EXHAUSTED",
              "namespace": "FTP",
              "parent": {
                "type": "RETRY_EXHAUSTED",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "CONNECTIVITY",
              "namespace": "FTP",
              "parent": {
                "type": "CONNECTIVITY",
                "namespace": "MULE",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_CONTENT",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "FILE_ALREADY_EXISTS",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ILLEGAL_PATH",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            },
            {
              "type": "ACCESS_DENIED",
              "namespace": "FTP",
              "parent": {
                "type": "ANY",
                "namespace": "FTP",
                "parent": {
                  "type": "ANY",
                  "namespace": "MULE"
                }
              }
            }
          ],
          "output": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "outputAttributes": {
            "type": {
              "format": "java",
              "type": "Void"
            },
            "hasDynamicType": false,
            "description": "",
            "modelProperties": {}
          },
          "transactional": false,
          "requiresConnection": true,
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1
                  },
                  "name": "path",
                  "description": "the path of the file to be written",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Binary",
                    "annotations": {
                      "typeId": "java.io.InputStream"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "#[payload]",
                  "role": "PRIMARY_CONTENT",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2
                  },
                  "name": "content",
                  "displayModel": {
                    "summary": "Content to be written into the file"
                  },
                  "description": "the content to be written into the file. Defaults to the current Message payload",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3
                  },
                  "name": "encoding",
                  "displayModel": {
                    "summary": "Encoding when trying to write a String file. If not set, defaults to the configuration one or the Mule default"
                  },
                  "description": "when content is a String, this attribute specifies the encoding to be used when writing. If",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "true",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4
                  },
                  "name": "createParentDirectories",
                  "description": "whether or not to attempt creating any parent directories which don\u0027t exists.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "false",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5
                  },
                  "name": "lock",
                  "description": "whether or not to lock the file. Defaults to false",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "org.mule.extension.file.common.api.FileWriteMode",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "OVERWRITE",
                          "APPEND",
                          "CREATE_NEW"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "OVERWRITE",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6
                  },
                  "name": "mode",
                  "displayModel": {
                    "displayName": "Write Mode",
                    "summary": "How the file is going to be written"
                  },
                  "description": "a FileWriteMode. Defaults to OVERWRITE",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "write",
          "displayModel": {
            "summary": "Writes the given \"Content\" in the file pointed by \"Path\""
          },
          "description": "Writes the content into the file pointed by path.\n\u003cp\u003e\nIf the directory on which the file is attempting to be written doesn\u0027t exist, then the operation will either throw\nIllegalArgumentException or create such folder depending on the value of the createParentDirectory.\n\u003cp\u003e\nIf the file itself already exists, then the behavior depends on the supplied mode.\n\u003cp\u003e\nThis operation also supports locking support depending on the value of the lock argument, but following the same\nrules and considerations as described in the read operation.\nnot set, then it defaults to FileConnectorConfig#getDefaultWriteEncoding()",
          "modelProperties": {}
        }
      ],
      "connectionProviders": [
        {
          "connectionManagementType": "POOLING",
          "externalLibraryModels": [],
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5
                  },
                  "name": "workingDir",
                  "displayModel": {
                    "displayName": "Working Directory",
                    "summary": "The directory to be considered as the root of every relative path used with this connector"
                  },
                  "description": "The directory to be considered as the root of every relative path used with this connector. If not provided, it will default\nto the remote server default.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "org.mule.extension.ftp.api.ftp.FtpTransferMode",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "BINARY",
                          "ASCII"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "BINARY",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 6
                  },
                  "name": "transferMode",
                  "displayModel": {
                    "summary": "Transfer mode to be used"
                  },
                  "description": "The transfer mode to be used. Currently BINARY and ASCII are supported.\n\u003cp\u003e\nDefaults to BINARY",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "true",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 7
                  },
                  "name": "passive",
                  "displayModel": {
                    "summary": "Whether to use passive mode. Set to \"false\" to switch to active mode"
                  },
                  "description": "Whether to use passive mode. Set to false to switch to active mode.\n\u003cp\u003e\nDefaults to true.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "typeId": "java.lang.Integer"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "10",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "Advanced"
                  },
                  "name": "connectionTimeout",
                  "displayModel": {
                    "summary": "Connection timeout value"
                  },
                  "description": "A scalar value representing the amount of time to wait before a connection attempt times out. This attribute works in tandem\nwith #connectionTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1,
                    "tabName": "Advanced"
                  },
                  "name": "connectionTimeoutUnit",
                  "displayModel": {
                    "summary": "Time unit to be used in the Connection Timeout"
                  },
                  "description": "A TimeUnit which qualifies the #connectionTimeout attribute.\n\u003cp\u003e\nDefaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "typeId": "java.lang.Integer"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "10",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "Advanced"
                  },
                  "name": "responseTimeout",
                  "displayModel": {
                    "summary": "Response timeout value"
                  },
                  "description": "A scalar value representing the amount of time to wait before a request for data times out. This attribute works in tandem\nwith #responseTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "Advanced"
                  },
                  "name": "responseTimeoutUnit",
                  "displayModel": {
                    "summary": "Time unit to be used in the Response Timeout"
                  },
                  "description": "A TimeUnit which qualifies the #responseTimeoutUnit attribute.\n\u003cp\u003e\nDefaults to SECONDS",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false
              },
              "showInDsl": false,
              "name": "Timeout Configuration",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1,
                    "tabName": "General"
                  },
                  "name": "host",
                  "description": "The FTP server host, such as www.mulesoft.com, localhost, or 192.168.0.1, etc",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "int": {},
                      "typeId": "int"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "21",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "General"
                  },
                  "name": "port",
                  "description": "The port number of the FTP server to connect",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "General"
                  },
                  "name": "username",
                  "description": "Username for the FTP Server. Required if the server is authenticated.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": true,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "General"
                  },
                  "name": "password",
                  "description": "Password for the FTP Server. Required if the server is authenticated.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Union",
                    "annotations": {
                      "typeId": "java.lang.Object",
                      "typeAlias": {
                        "value": "ReconnectionStrategy"
                      }
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "reconnect"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Long",
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "count"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Integer",
                                "default": "2"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How many reconnection attempts to make"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "blocking"
                            },
                            "model": {
                              "type": "Boolean",
                              "annotations": {
                                "typeId": "java.lang.Boolean",
                                "default": "true"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "reconnect-forever"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Long",
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "reconnectionStrategy",
                  "description": "A retry strategy in case of connectivity errors",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "disableValidation",
                  "description": "Disables connection validation",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.api.config.PoolingProfile",
                      "description": {
                        "value": "A pooling profile is used to configure the pooling behaviour of Mule components. Each component can have its own pooling profile."
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "maxActive"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "5"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Controls the maximum number of Mule components that can be borrowed from a session at one time. When set to a negative value, there is no limit to the number of components that may be active at one time. When maxActive is exceeded, the pool is said to be exhausted."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "maxIdle"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "5"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Controls the maximum number of Mule components that can sit idle in the pool at any time. When set to a negative value, there is no limit to the number of Mule components that may be idle at one time."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "maxWait"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Long",
                            "default": "4000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "minEvictionMillis"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "1800000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Determines the minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no objects will be evicted from the pool due to idle time alone."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "evictionCheckIntervalMillis"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "-1"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Specifies the number of milliseconds between runs of the object evictor. When non-positive, no object evictor is executed."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "exhaustedAction"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String",
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "WHEN_EXHAUSTED_GROW",
                                "WHEN_EXHAUSTED_WAIT",
                                "WHEN_EXHAUSTED_FAIL"
                              ]
                            },
                            "default": "WHEN_EXHAUSTED_GROW"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Specifies the behavior of the Mule component pool when the pool is exhausted. Possible values are: \"WHEN_EXHAUSTED_FAIL\", which will throw a NoSuchElementException, \"WHEN_EXHAUSTED_WAIT\", which will block by invoking Object.wait(long) until a new or idle object is available, or WHEN_EXHAUSTED_GROW, which will create a new Mule instance and return it, essentially making maxActive meaningless. If a positive maxWait value is supplied, it will block for at most that many milliseconds, after which a NoSuchElementException will be thrown. If maxThreadWait is a negative value, it will block indefinitely."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "initialisationPolicy"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String",
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "INITIALISE_NONE",
                                "INITIALISE_ONE",
                                "INITIALISE_ALL"
                              ]
                            },
                            "default": "INITIALISE_ONE"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Determines how components in a pool should be initialized. The possible values are: INITIALISE_NONE (will not load any components into the pool on startup), INITIALISE_ONE (will load one initial component into the pool on startup), or INITIALISE_ALL (will load all components in the pool on startup)"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "disabled"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "typeId": "java.lang.Boolean",
                            "default": "false"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Whether pooling should be disabled"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "poolingProfile",
                  "description": "Characteristics of the connection pool",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "connection",
          "displayModel": {
            "displayName": "FTP Connection",
            "summary": "Connection to connect against an FTP server"
          },
          "description": "An AbstractFtpConnectionProvider which provides instances of ClassicFtpFileSystem from instances of\nFtpConnector",
          "modelProperties": {}
        },
        {
          "connectionManagementType": "POOLING",
          "externalLibraryModels": [],
          "parameterGroupModels": [
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 7
                  },
                  "name": "workingDir",
                  "displayModel": {
                    "displayName": "Working Directory",
                    "summary": "The directory to be considered as the root of every relative path used with this connector"
                  },
                  "description": "The directory to be considered as the root of every relative path used with this connector. If not provided, it will default\nto the remote server default.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Array",
                    "annotations": {
                      "typeId": "java.util.Set"
                    },
                    "item": {
                      "type": "String",
                      "annotations": {
                        "typeId": "org.mule.extension.ftp.api.sftp.SftpAuthenticationMethod",
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "gssapi_with_mic",
                            "publickey",
                            "keyboard_interactive",
                            "password"
                          ]
                        }
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 8
                  },
                  "name": "preferredAuthenticationMethods",
                  "description": "Set of authentication methods used by the SFTP client. Valid values are: gssapi-with-mic, publickey, keyboard-interactive and\npassword.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 9
                  },
                  "name": "knownHostsFile",
                  "description": "If provided, the client will validate the server\u0027s key against the one in the referenced file. If the server key doesn\u0027t\nmatch the one in the file, the connection will be aborted.",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "showInDsl": false,
              "name": "General",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "typeId": "java.lang.Integer"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "10",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "Advanced"
                  },
                  "name": "connectionTimeout",
                  "displayModel": {
                    "summary": "Connection timeout value"
                  },
                  "description": "A scalar value representing the amount of time to wait before a connection attempt times out. This attribute works in tandem\nwith #connectionTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1,
                    "tabName": "Advanced"
                  },
                  "name": "connectionTimeoutUnit",
                  "displayModel": {
                    "summary": "Time unit to be used in the Connection Timeout"
                  },
                  "description": "A TimeUnit which qualifies the #connectionTimeout attribute.\n\u003cp\u003e\nDefaults to SECONDS",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "typeId": "java.lang.Integer"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "10",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "Advanced"
                  },
                  "name": "responseTimeout",
                  "displayModel": {
                    "summary": "Response timeout value"
                  },
                  "description": "A scalar value representing the amount of time to wait before a request for data times out. This attribute works in tandem\nwith #responseTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.util.concurrent.TimeUnit",
                      "enum": {
                        "type": "[Ljava.lang.String;",
                        "values": [
                          "NANOSECONDS",
                          "MICROSECONDS",
                          "MILLISECONDS",
                          "SECONDS",
                          "MINUTES",
                          "HOURS",
                          "DAYS"
                        ]
                      }
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "SECONDS",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "Advanced"
                  },
                  "name": "responseTimeoutUnit",
                  "displayModel": {
                    "summary": "Time unit to be used in the Response Timeout"
                  },
                  "description": "A TimeUnit which qualifies the #responseTimeoutUnit attribute.\n\u003cp\u003e\nDefaults to SECONDS",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false
              },
              "showInDsl": false,
              "name": "Timeout Configuration",
              "description": "",
              "modelProperties": {}
            },
            {
              "parameters": [
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": true,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 1,
                    "tabName": "General"
                  },
                  "name": "host",
                  "description": "The FTP server host, such as www.mulesoft.com, localhost, or 192.168.0.1, etc",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Number",
                    "annotations": {
                      "int": {},
                      "typeId": "int"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "defaultValue": "22",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 2,
                    "tabName": "General"
                  },
                  "name": "port",
                  "description": "The port number of the SFTP server to connect on",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 3,
                    "tabName": "General"
                  },
                  "name": "username",
                  "description": "Username for the FTP Server. Required if the server is authenticated.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": true,
                    "text": false,
                    "query": false,
                    "order": 4,
                    "tabName": "General"
                  },
                  "name": "password",
                  "description": "Password for the FTP Server. Required if the server is authenticated.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": true,
                    "text": false,
                    "query": false,
                    "order": 6,
                    "tabName": "General"
                  },
                  "name": "passphrase",
                  "displayModel": {
                    "summary": "The passphrase (password) for the identityFile, if configured"
                  },
                  "description": "The passphrase (password) for the identityFile if required. Notice that this parameter is ignored if #identityFile is\nnot provided",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "String",
                    "annotations": {
                      "typeId": "java.lang.String"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "order": 5,
                    "tabName": "General"
                  },
                  "name": "identityFile",
                  "description": "An identityFile location for a PKI private key.",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Union",
                    "annotations": {
                      "typeId": "java.lang.Object",
                      "typeAlias": {
                        "value": "ReconnectionStrategy"
                      }
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "reconnect"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Long",
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "count"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Integer",
                                "default": "2"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How many reconnection attempts to make"
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "blocking"
                            },
                            "model": {
                              "type": "Boolean",
                              "annotations": {
                                "typeId": "java.lang.Boolean",
                                "default": "true"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "reconnect-forever"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "frequency"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Long",
                                "default": "2000"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "How often (in ms) to reconnect"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "reconnectionStrategy",
                  "description": "A retry strategy in case of connectivity errors",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Boolean",
                    "annotations": {
                      "typeId": "boolean"
                    }
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": true,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "disableValidation",
                  "description": "Disables connection validation",
                  "modelProperties": {}
                },
                {
                  "type": {
                    "format": "java",
                    "type": "Object",
                    "annotations": {
                      "typeId": "org.mule.runtime.api.config.PoolingProfile",
                      "description": {
                        "value": "A pooling profile is used to configure the pooling behaviour of Mule components. Each component can have its own pooling profile."
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "maxActive"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "5"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Controls the maximum number of Mule components that can be borrowed from a session at one time. When set to a negative value, there is no limit to the number of components that may be active at one time. When maxActive is exceeded, the pool is said to be exhausted."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "maxIdle"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "5"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Controls the maximum number of Mule components that can sit idle in the pool at any time. When set to a negative value, there is no limit to the number of Mule components that may be idle at one time."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "maxWait"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Long",
                            "default": "4000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "minEvictionMillis"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "1800000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Determines the minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no objects will be evicted from the pool due to idle time alone."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "evictionCheckIntervalMillis"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "-1"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Specifies the number of milliseconds between runs of the object evictor. When non-positive, no object evictor is executed."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "exhaustedAction"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String",
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "WHEN_EXHAUSTED_GROW",
                                "WHEN_EXHAUSTED_WAIT",
                                "WHEN_EXHAUSTED_FAIL"
                              ]
                            },
                            "default": "WHEN_EXHAUSTED_GROW"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Specifies the behavior of the Mule component pool when the pool is exhausted. Possible values are: \"WHEN_EXHAUSTED_FAIL\", which will throw a NoSuchElementException, \"WHEN_EXHAUSTED_WAIT\", which will block by invoking Object.wait(long) until a new or idle object is available, or WHEN_EXHAUSTED_GROW, which will create a new Mule instance and return it, essentially making maxActive meaningless. If a positive maxWait value is supplied, it will block for at most that many milliseconds, after which a NoSuchElementException will be thrown. If maxThreadWait is a negative value, it will block indefinitely."
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "initialisationPolicy"
                        },
                        "model": {
                          "type": "String",
                          "annotations": {
                            "typeId": "java.lang.String",
                            "enum": {
                              "type": "[Ljava.lang.String;",
                              "values": [
                                "INITIALISE_NONE",
                                "INITIALISE_ONE",
                                "INITIALISE_ALL"
                              ]
                            },
                            "default": "INITIALISE_ONE"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Determines how components in a pool should be initialized. The possible values are: INITIALISE_NONE (will not load any components into the pool on startup), INITIALISE_ONE (will load one initial component into the pool on startup), or INITIALISE_ALL (will load all components in the pool on startup)"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "disabled"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "typeId": "java.lang.Boolean",
                            "default": "false"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "Whether pooling should be disabled"
                          }
                        }
                      }
                    ]
                  },
                  "hasDynamicType": false,
                  "required": false,
                  "expressionSupport": "NOT_SUPPORTED",
                  "role": "BEHAVIOUR",
                  "dslConfiguration": {
                    "allowsInlineDefinition": true,
                    "allowsReferences": false,
                    "allowTopLevelDefinition": false
                  },
                  "layoutModel": {
                    "password": false,
                    "text": false,
                    "query": false,
                    "tabName": "Advanced"
                  },
                  "name": "poolingProfile",
                  "description": "Characteristics of the connection pool",
                  "modelProperties": {}
                }
              ],
              "exclusiveParametersModels": [],
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false
              },
              "showInDsl": false,
              "name": "Connection",
              "description": "",
              "modelProperties": {}
            }
          ],
          "name": "sftp-connection",
          "displayModel": {
            "displayName": "SFTP Connection"
          },
          "description": "An AbstractFtpConnectionProvider which provides instances of SftpFileSystem from instances of\nFtpConnector",
          "modelProperties": {}
        }
      ],
      "messageSources": [],
      "name": "config",
      "description": "Allows manipulating files through the FTP and SFTP",
      "modelProperties": {}
    }
  ],
  "operations": [],
  "connectionProviders": [
    {
      "connectionManagementType": "POOLING",
      "externalLibraryModels": [],
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5
              },
              "name": "workingDir",
              "displayModel": {
                "displayName": "Working Directory",
                "summary": "The directory to be considered as the root of every relative path used with this connector"
              },
              "description": "The directory to be considered as the root of every relative path used with this connector. If not provided, it will default\nto the remote server default.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "org.mule.extension.ftp.api.ftp.FtpTransferMode",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "BINARY",
                      "ASCII"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "BINARY",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 6
              },
              "name": "transferMode",
              "displayModel": {
                "summary": "Transfer mode to be used"
              },
              "description": "The transfer mode to be used. Currently BINARY and ASCII are supported.\n\u003cp\u003e\nDefaults to BINARY",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "true",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 7
              },
              "name": "passive",
              "displayModel": {
                "summary": "Whether to use passive mode. Set to \"false\" to switch to active mode"
              },
              "description": "Whether to use passive mode. Set to false to switch to active mode.\n\u003cp\u003e\nDefaults to true.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "typeId": "java.lang.Integer"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "10",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Advanced"
              },
              "name": "connectionTimeout",
              "displayModel": {
                "summary": "Connection timeout value"
              },
              "description": "A scalar value representing the amount of time to wait before a connection attempt times out. This attribute works in tandem\nwith #connectionTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Advanced"
              },
              "name": "connectionTimeoutUnit",
              "displayModel": {
                "summary": "Time unit to be used in the Connection Timeout"
              },
              "description": "A TimeUnit which qualifies the #connectionTimeout attribute.\n\u003cp\u003e\nDefaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "typeId": "java.lang.Integer"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "10",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "name": "responseTimeout",
              "displayModel": {
                "summary": "Response timeout value"
              },
              "description": "A scalar value representing the amount of time to wait before a request for data times out. This attribute works in tandem\nwith #responseTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "name": "responseTimeoutUnit",
              "displayModel": {
                "summary": "Time unit to be used in the Response Timeout"
              },
              "description": "A TimeUnit which qualifies the #responseTimeoutUnit attribute.\n\u003cp\u003e\nDefaults to SECONDS",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false
          },
          "showInDsl": false,
          "name": "Timeout Configuration",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": true,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "General"
              },
              "name": "host",
              "description": "The FTP server host, such as www.mulesoft.com, localhost, or 192.168.0.1, etc",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "int": {},
                  "typeId": "int"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "21",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "General"
              },
              "name": "port",
              "description": "The port number of the FTP server to connect",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "General"
              },
              "name": "username",
              "description": "Username for the FTP Server. Required if the server is authenticated.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "General"
              },
              "name": "password",
              "description": "Password for the FTP Server. Required if the server is authenticated.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Union",
                "annotations": {
                  "typeId": "java.lang.Object",
                  "typeAlias": {
                    "value": "ReconnectionStrategy"
                  }
                },
                "of": [
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "java.lang.Object",
                      "typeAlias": {
                        "value": "reconnect"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "frequency"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Long",
                            "default": "2000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "How often (in ms) to reconnect"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "count"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "2"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "How many reconnection attempts to make"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "blocking"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "typeId": "java.lang.Boolean",
                            "default": "true"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "java.lang.Object",
                      "typeAlias": {
                        "value": "reconnect-forever"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "frequency"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Long",
                            "default": "2000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "How often (in ms) to reconnect"
                          }
                        }
                      }
                    ]
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Advanced"
              },
              "name": "reconnectionStrategy",
              "description": "A retry strategy in case of connectivity errors",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Advanced"
              },
              "name": "disableValidation",
              "description": "Disables connection validation",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.api.config.PoolingProfile",
                  "description": {
                    "value": "A pooling profile is used to configure the pooling behaviour of Mule components. Each component can have its own pooling profile."
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "maxActive"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Controls the maximum number of Mule components that can be borrowed from a session at one time. When set to a negative value, there is no limit to the number of components that may be active at one time. When maxActive is exceeded, the pool is said to be exhausted."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "maxIdle"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Controls the maximum number of Mule components that can sit idle in the pool at any time. When set to a negative value, there is no limit to the number of Mule components that may be idle at one time."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "maxWait"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Long",
                        "default": "4000"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "minEvictionMillis"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "1800000"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Determines the minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no objects will be evicted from the pool due to idle time alone."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "evictionCheckIntervalMillis"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "-1"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the number of milliseconds between runs of the object evictor. When non-positive, no object evictor is executed."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "exhaustedAction"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "typeId": "java.lang.String",
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "WHEN_EXHAUSTED_GROW",
                            "WHEN_EXHAUSTED_WAIT",
                            "WHEN_EXHAUSTED_FAIL"
                          ]
                        },
                        "default": "WHEN_EXHAUSTED_GROW"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the behavior of the Mule component pool when the pool is exhausted. Possible values are: \"WHEN_EXHAUSTED_FAIL\", which will throw a NoSuchElementException, \"WHEN_EXHAUSTED_WAIT\", which will block by invoking Object.wait(long) until a new or idle object is available, or WHEN_EXHAUSTED_GROW, which will create a new Mule instance and return it, essentially making maxActive meaningless. If a positive maxWait value is supplied, it will block for at most that many milliseconds, after which a NoSuchElementException will be thrown. If maxThreadWait is a negative value, it will block indefinitely."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "initialisationPolicy"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "typeId": "java.lang.String",
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "INITIALISE_NONE",
                            "INITIALISE_ONE",
                            "INITIALISE_ALL"
                          ]
                        },
                        "default": "INITIALISE_ONE"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Determines how components in a pool should be initialized. The possible values are: INITIALISE_NONE (will not load any components into the pool on startup), INITIALISE_ONE (will load one initial component into the pool on startup), or INITIALISE_ALL (will load all components in the pool on startup)"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "disabled"
                    },
                    "model": {
                      "type": "Boolean",
                      "annotations": {
                        "typeId": "java.lang.Boolean",
                        "default": "false"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Whether pooling should be disabled"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Advanced"
              },
              "name": "poolingProfile",
              "description": "Characteristics of the connection pool",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false
          },
          "showInDsl": false,
          "name": "Connection",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "connection",
      "displayModel": {
        "displayName": "FTP Connection",
        "summary": "Connection to connect against an FTP server"
      },
      "description": "An AbstractFtpConnectionProvider which provides instances of ClassicFtpFileSystem from instances of\nFtpConnector",
      "modelProperties": {}
    },
    {
      "connectionManagementType": "POOLING",
      "externalLibraryModels": [],
      "parameterGroupModels": [
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 7
              },
              "name": "workingDir",
              "displayModel": {
                "displayName": "Working Directory",
                "summary": "The directory to be considered as the root of every relative path used with this connector"
              },
              "description": "The directory to be considered as the root of every relative path used with this connector. If not provided, it will default\nto the remote server default.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Array",
                "annotations": {
                  "typeId": "java.util.Set"
                },
                "item": {
                  "type": "String",
                  "annotations": {
                    "typeId": "org.mule.extension.ftp.api.sftp.SftpAuthenticationMethod",
                    "enum": {
                      "type": "[Ljava.lang.String;",
                      "values": [
                        "gssapi_with_mic",
                        "publickey",
                        "keyboard_interactive",
                        "password"
                      ]
                    }
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 8
              },
              "name": "preferredAuthenticationMethods",
              "description": "Set of authentication methods used by the SFTP client. Valid values are: gssapi-with-mic, publickey, keyboard-interactive and\npassword.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 9
              },
              "name": "knownHostsFile",
              "description": "If provided, the client will validate the server\u0027s key against the one in the referenced file. If the server key doesn\u0027t\nmatch the one in the file, the connection will be aborted.",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "showInDsl": false,
          "name": "General",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "typeId": "java.lang.Integer"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "10",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "Advanced"
              },
              "name": "connectionTimeout",
              "displayModel": {
                "summary": "Connection timeout value"
              },
              "description": "A scalar value representing the amount of time to wait before a connection attempt times out. This attribute works in tandem\nwith #connectionTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "Advanced"
              },
              "name": "connectionTimeoutUnit",
              "displayModel": {
                "summary": "Time unit to be used in the Connection Timeout"
              },
              "description": "A TimeUnit which qualifies the #connectionTimeout attribute.\n\u003cp\u003e\nDefaults to SECONDS",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "typeId": "java.lang.Integer"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "10",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "Advanced"
              },
              "name": "responseTimeout",
              "displayModel": {
                "summary": "Response timeout value"
              },
              "description": "A scalar value representing the amount of time to wait before a request for data times out. This attribute works in tandem\nwith #responseTimeoutUnit.\n\u003cp\u003e\nDefaults to 10",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.util.concurrent.TimeUnit",
                  "enum": {
                    "type": "[Ljava.lang.String;",
                    "values": [
                      "NANOSECONDS",
                      "MICROSECONDS",
                      "MILLISECONDS",
                      "SECONDS",
                      "MINUTES",
                      "HOURS",
                      "DAYS"
                    ]
                  }
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "SECONDS",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "Advanced"
              },
              "name": "responseTimeoutUnit",
              "displayModel": {
                "summary": "Time unit to be used in the Response Timeout"
              },
              "description": "A TimeUnit which qualifies the #responseTimeoutUnit attribute.\n\u003cp\u003e\nDefaults to SECONDS",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false
          },
          "showInDsl": false,
          "name": "Timeout Configuration",
          "description": "",
          "modelProperties": {}
        },
        {
          "parameters": [
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": true,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 1,
                "tabName": "General"
              },
              "name": "host",
              "description": "The FTP server host, such as www.mulesoft.com, localhost, or 192.168.0.1, etc",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Number",
                "annotations": {
                  "int": {},
                  "typeId": "int"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "defaultValue": "22",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 2,
                "tabName": "General"
              },
              "name": "port",
              "description": "The port number of the SFTP server to connect on",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 3,
                "tabName": "General"
              },
              "name": "username",
              "description": "Username for the FTP Server. Required if the server is authenticated.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false,
                "order": 4,
                "tabName": "General"
              },
              "name": "password",
              "description": "Password for the FTP Server. Required if the server is authenticated.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": true,
                "text": false,
                "query": false,
                "order": 6,
                "tabName": "General"
              },
              "name": "passphrase",
              "displayModel": {
                "summary": "The passphrase (password) for the identityFile, if configured"
              },
              "description": "The passphrase (password) for the identityFile if required. Notice that this parameter is ignored if #identityFile is\nnot provided",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "String",
                "annotations": {
                  "typeId": "java.lang.String"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "order": 5,
                "tabName": "General"
              },
              "name": "identityFile",
              "description": "An identityFile location for a PKI private key.",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Union",
                "annotations": {
                  "typeId": "java.lang.Object",
                  "typeAlias": {
                    "value": "ReconnectionStrategy"
                  }
                },
                "of": [
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "java.lang.Object",
                      "typeAlias": {
                        "value": "reconnect"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "frequency"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Long",
                            "default": "2000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "How often (in ms) to reconnect"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "count"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Integer",
                            "default": "2"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "How many reconnection attempts to make"
                          }
                        }
                      },
                      {
                        "key": {
                          "name": "blocking"
                        },
                        "model": {
                          "type": "Boolean",
                          "annotations": {
                            "typeId": "java.lang.Boolean",
                            "default": "true"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "If false, the reconnection strategy will run in a separate, non-blocking thread"
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "Object",
                    "annotations": {
                      "typeId": "java.lang.Object",
                      "typeAlias": {
                        "value": "reconnect-forever"
                      }
                    },
                    "fields": [
                      {
                        "key": {
                          "name": "frequency"
                        },
                        "model": {
                          "type": "Number",
                          "annotations": {
                            "int": {},
                            "typeId": "java.lang.Long",
                            "default": "2000"
                          }
                        },
                        "annotations": {
                          "description": {
                            "value": "How often (in ms) to reconnect"
                          }
                        }
                      }
                    ]
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Advanced"
              },
              "name": "reconnectionStrategy",
              "description": "A retry strategy in case of connectivity errors",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Boolean",
                "annotations": {
                  "typeId": "boolean"
                }
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": true,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Advanced"
              },
              "name": "disableValidation",
              "description": "Disables connection validation",
              "modelProperties": {}
            },
            {
              "type": {
                "format": "java",
                "type": "Object",
                "annotations": {
                  "typeId": "org.mule.runtime.api.config.PoolingProfile",
                  "description": {
                    "value": "A pooling profile is used to configure the pooling behaviour of Mule components. Each component can have its own pooling profile."
                  }
                },
                "fields": [
                  {
                    "key": {
                      "name": "maxActive"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Controls the maximum number of Mule components that can be borrowed from a session at one time. When set to a negative value, there is no limit to the number of components that may be active at one time. When maxActive is exceeded, the pool is said to be exhausted."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "maxIdle"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "5"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Controls the maximum number of Mule components that can sit idle in the pool at any time. When set to a negative value, there is no limit to the number of Mule components that may be idle at one time."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "maxWait"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Long",
                        "default": "4000"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the number of milliseconds to wait for a pooled component to become available when the pool is exhausted and the exhaustedAction is set to WHEN_EXHAUSTED_WAIT."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "minEvictionMillis"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "1800000"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Determines the minimum amount of time an object may sit idle in the pool before it is eligible for eviction. When non-positive, no objects will be evicted from the pool due to idle time alone."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "evictionCheckIntervalMillis"
                    },
                    "model": {
                      "type": "Number",
                      "annotations": {
                        "int": {},
                        "typeId": "java.lang.Integer",
                        "default": "-1"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the number of milliseconds between runs of the object evictor. When non-positive, no object evictor is executed."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "exhaustedAction"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "typeId": "java.lang.String",
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "WHEN_EXHAUSTED_GROW",
                            "WHEN_EXHAUSTED_WAIT",
                            "WHEN_EXHAUSTED_FAIL"
                          ]
                        },
                        "default": "WHEN_EXHAUSTED_GROW"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Specifies the behavior of the Mule component pool when the pool is exhausted. Possible values are: \"WHEN_EXHAUSTED_FAIL\", which will throw a NoSuchElementException, \"WHEN_EXHAUSTED_WAIT\", which will block by invoking Object.wait(long) until a new or idle object is available, or WHEN_EXHAUSTED_GROW, which will create a new Mule instance and return it, essentially making maxActive meaningless. If a positive maxWait value is supplied, it will block for at most that many milliseconds, after which a NoSuchElementException will be thrown. If maxThreadWait is a negative value, it will block indefinitely."
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "initialisationPolicy"
                    },
                    "model": {
                      "type": "String",
                      "annotations": {
                        "typeId": "java.lang.String",
                        "enum": {
                          "type": "[Ljava.lang.String;",
                          "values": [
                            "INITIALISE_NONE",
                            "INITIALISE_ONE",
                            "INITIALISE_ALL"
                          ]
                        },
                        "default": "INITIALISE_ONE"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Determines how components in a pool should be initialized. The possible values are: INITIALISE_NONE (will not load any components into the pool on startup), INITIALISE_ONE (will load one initial component into the pool on startup), or INITIALISE_ALL (will load all components in the pool on startup)"
                      }
                    }
                  },
                  {
                    "key": {
                      "name": "disabled"
                    },
                    "model": {
                      "type": "Boolean",
                      "annotations": {
                        "typeId": "java.lang.Boolean",
                        "default": "false"
                      }
                    },
                    "annotations": {
                      "description": {
                        "value": "Whether pooling should be disabled"
                      }
                    }
                  }
                ]
              },
              "hasDynamicType": false,
              "required": false,
              "expressionSupport": "NOT_SUPPORTED",
              "role": "BEHAVIOUR",
              "dslConfiguration": {
                "allowsInlineDefinition": true,
                "allowsReferences": false,
                "allowTopLevelDefinition": false
              },
              "layoutModel": {
                "password": false,
                "text": false,
                "query": false,
                "tabName": "Advanced"
              },
              "name": "poolingProfile",
              "description": "Characteristics of the connection pool",
              "modelProperties": {}
            }
          ],
          "exclusiveParametersModels": [],
          "layoutModel": {
            "password": false,
            "text": false,
            "query": false
          },
          "showInDsl": false,
          "name": "Connection",
          "description": "",
          "modelProperties": {}
        }
      ],
      "name": "sftp-connection",
      "displayModel": {
        "displayName": "SFTP Connection"
      },
      "description": "An AbstractFtpConnectionProvider which provides instances of SftpFileSystem from instances of\nFtpConnector",
      "modelProperties": {}
    }
  ],
  "messageSources": [],
  "errors": [
    {
      "type": "CANNOT_REACH",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "CONNECTIVITY",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "MULE",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "FILE_DOESNT_EXIST",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "ILLEGAL_CONTENT",
      "namespace": "FTP",
      "parent": {
        "type": "ANY",
        "namespace": "FTP",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "CONNECTIVITY",
      "namespace": "MULE",
      "parent": {
        "type": "ANY",
        "namespace": "MULE"
      }
    },
    {
      "type": "CONNECTION_TIMEOUT",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "ANY",
      "namespace": "MULE"
    },
    {
      "type": "FILE_ALREADY_EXISTS",
      "namespace": "FTP",
      "parent": {
        "type": "ANY",
        "namespace": "FTP",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "SERVICE_NOT_AVAILABLE",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "UNKNOWN_HOST",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "ACCESS_DENIED",
      "namespace": "FTP",
      "parent": {
        "type": "ANY",
        "namespace": "FTP",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "RETRY_EXHAUSTED",
      "namespace": "FTP",
      "parent": {
        "type": "RETRY_EXHAUSTED",
        "namespace": "MULE",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "FILE_IS_NOT_DIRECTORY",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "FILE_LOCK",
      "namespace": "FTP",
      "parent": {
        "type": "ANY",
        "namespace": "FTP",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "RETRY_EXHAUSTED",
      "namespace": "MULE",
      "parent": {
        "type": "ANY",
        "namespace": "MULE"
      }
    },
    {
      "type": "INVALID_CREDENTIALS",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "DISCONNECTED",
      "namespace": "FTP",
      "parent": {
        "type": "CONNECTIVITY",
        "namespace": "FTP",
        "parent": {
          "type": "CONNECTIVITY",
          "namespace": "MULE",
          "parent": {
            "type": "ANY",
            "namespace": "MULE"
          }
        }
      }
    },
    {
      "type": "ANY",
      "namespace": "FTP",
      "parent": {
        "type": "ANY",
        "namespace": "MULE"
      }
    },
    {
      "type": "ILLEGAL_PATH",
      "namespace": "FTP",
      "parent": {
        "type": "ANY",
        "namespace": "FTP",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    },
    {
      "type": "FILE_NOT_FOUND",
      "namespace": "FTP",
      "parent": {
        "type": "ANY",
        "namespace": "FTP",
        "parent": {
          "type": "ANY",
          "namespace": "MULE"
        }
      }
    }
  ],
  "modelProperties": {},
  "types": [
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.ftp.api.sftp.SftpFileAttributes",
        "classInformation": {
          "hasDefaultConstructor": false,
          "isInterface": false,
          "isInstantiable": false,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.extension.ftp.api.FtpFileAttributes"
          ],
          "parent": "org.mule.extension.file.common.api.AbstractFileAttributes",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "SftpFileAttributes"
        }
      },
      "fields": [
        {
          "key": {
            "name": "directory"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "name"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "path"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "regularFile"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "size"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "int": {},
              "typeId": "long"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "symbolicLink"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "timestamp"
          },
          "model": {
            "type": "DateTime",
            "annotations": {
              "typeId": "java.time.LocalDateTime"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.ftp.api.ftp.ClassicFtpFileAttributes",
        "classInformation": {
          "hasDefaultConstructor": false,
          "isInterface": false,
          "isInstantiable": false,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.extension.ftp.api.FtpFileAttributes"
          ],
          "parent": "org.mule.extension.file.common.api.AbstractFileAttributes",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "ClassicFtpFileAttributes"
        }
      },
      "fields": [
        {
          "key": {
            "name": "directory"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "name"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "path"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "regularFile"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "size"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "int": {},
              "typeId": "long"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "symbolicLink"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "boolean"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        },
        {
          "key": {
            "name": "timestamp"
          },
          "model": {
            "type": "DateTime",
            "annotations": {
              "typeId": "java.time.LocalDateTime"
            }
          },
          "annotations": {
            "visibility": "READ_ONLY"
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.ftp.api.FtpFileAttributes",
        "classInformation": {
          "hasDefaultConstructor": false,
          "isInterface": true,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [
            "org.mule.extension.file.common.api.FileAttributes"
          ],
          "parent": "",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "FtpFileAttributes"
        }
      },
      "fields": []
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.file.common.api.FilePredicateBuilder",
        "classInformation": {
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": false,
          "isAbstract": true,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "",
          "genericTypes": []
        },
        "typeAlias": {
          "value": "FilePredicateBuilder"
        }
      },
      "fields": [
        {
          "key": {
            "name": "filenamePattern"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "A matching pattern to be applied on the file name."
              }
            }
          }
        },
        {
          "key": {
            "name": "pathPattern"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "A matching pattern to be applied on the file path"
              }
            }
          }
        },
        {
          "key": {
            "name": "directory"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "Indicates whether accept only directories or non directories files"
              }
            }
          }
        },
        {
          "key": {
            "name": "regularFile"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "Indicates whether accept only regular files (files which are not directories, nor symbolic links) or only not regular files"
              }
            }
          }
        },
        {
          "key": {
            "name": "symbolicLink"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "Indicates whether accept only symbolic links files or accept only not symbolic links files"
              }
            }
          }
        },
        {
          "key": {
            "name": "minSize"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "typeId": "java.lang.Long"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "maxSize"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "typeId": "java.lang.Long"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    },
    {
      "format": "java",
      "type": "Object",
      "annotations": {
        "typeId": "org.mule.extension.ftp.api.FtpFilePredicateBuilder",
        "classInformation": {
          "hasDefaultConstructor": true,
          "isInterface": false,
          "isInstantiable": true,
          "isAbstract": false,
          "isFinal": false,
          "implementedInterfaces": [],
          "parent": "org.mule.extension.file.common.api.FilePredicateBuilder",
          "genericTypes": []
        },
        "xmlHints": {
          "allowInlineDefinition": true,
          "allowTopLevelDefinition": true,
          "allowReferences": true
        },
        "typeAlias": {
          "value": "matcher"
        }
      },
      "fields": [
        {
          "key": {
            "name": "timestampSince"
          },
          "model": {
            "type": "DateTime",
            "annotations": {
              "typeId": "java.time.LocalDateTime"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "timestampUntil"
          },
          "model": {
            "type": "DateTime",
            "annotations": {
              "typeId": "java.time.LocalDateTime"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "filenamePattern"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "A matching pattern to be applied on the file name."
              }
            }
          }
        },
        {
          "key": {
            "name": "pathPattern"
          },
          "model": {
            "type": "String",
            "annotations": {
              "typeId": "java.lang.String"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "A matching pattern to be applied on the file path"
              }
            }
          }
        },
        {
          "key": {
            "name": "directory"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "Indicates whether accept only directories or non directories files"
              }
            }
          }
        },
        {
          "key": {
            "name": "regularFile"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "Indicates whether accept only regular files (files which are not directories, nor symbolic links) or only not regular files"
              }
            }
          }
        },
        {
          "key": {
            "name": "symbolicLink"
          },
          "model": {
            "type": "Boolean",
            "annotations": {
              "typeId": "java.lang.Boolean"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            },
            "org.mule.runtime.extension.api.declaration.type.annotation.DisplayTypeAnnotation": {
              "displayModel": {
                "summary": "Indicates whether accept only symbolic links files or accept only not symbolic links files"
              }
            }
          }
        },
        {
          "key": {
            "name": "minSize"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "typeId": "java.lang.Long"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        },
        {
          "key": {
            "name": "maxSize"
          },
          "model": {
            "type": "Number",
            "annotations": {
              "typeId": "java.lang.Long"
            }
          },
          "annotations": {
            "parameterPurpose": {
              "role": "BEHAVIOUR"
            },
            "expressionSupport": {
              "value": "SUPPORTED"
            }
          }
        }
      ]
    }
  ]
}
