{
  "name": "FTP",
  "description": "Connector to manipulate Files on a FTP/SFTP server",
  "version": "4.0.0-M5.2",
  "vendor": "Mulesoft",
  "category": "COMMUNITY",
  "minMuleVersion": "4.0.0",
  "xmlDsl": {
    "namespace": "ftp",
    "namespaceUri": "http://www.mulesoft.org/schema/mule/ftp",
    "schemaLocation": "http://www.mulesoft.org/schema/mule/ftp/current/mule-ftp.xsd",
    "schemaVersion": "4.0.0-M5.2",
    "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\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\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",
          "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\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\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": "StreamingStrategy"
                      }
                    },
                    "of": [
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "repeatable-in-memory-stream"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "initialBufferSize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Integer",
                                "default": "256"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is the amount of memory that will be allocated in order to consume the stream and provide random access to it. If the stream contains more data than can be fit into this buffer, then it will be expanded by according to the bufferSizeIncrement attribute, with an upper limit of maxInMemorySize."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferSizeIncrement"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Integer",
                                "default": "256"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is by how much will be buffer size by expanded if it exceeds its initial size. Setting a value of zero or lower will mean that the buffer should not expand, meaning that a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised when the buffer gets full."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "maxInMemorySize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Integer",
                                "default": "0"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "This is the maximum amount of memory that will be used. If more than that is used then a STREAM_MAXIMUM_SIZE_EXCEEDED error will be raised. A value lower or equal to zero means no limit."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferUnit"
                            },
                            "model": {
                              "type": "String",
                              "annotations": {
                                "typeId": "java.lang.String",
                                "enum": {
                                  "type": "[Ljava.lang.String;",
                                  "values": [
                                    "BYTE",
                                    "KB",
                                    "MB",
                                    "GB"
                                  ]
                                },
                                "default": "KB"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "The unit in which all these attributes are expressed"
                              }
                            }
                          }
                        ]
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "in-memory-stream"
                          },
                          "description": {
                            "value": "This configuration allows the input stream to be read only once. It will not allow to seek randomly which will limit the transformations that DW can perform on this stream. Use this option for use cases which just require moving data around from one system to another to get optimum performance."
                          }
                        },
                        "fields": []
                      },
                      {
                        "type": "Object",
                        "annotations": {
                          "typeId": "java.lang.Object",
                          "typeAlias": {
                            "value": "repeatable-file-store-stream"
                          }
                        },
                        "fields": [
                          {
                            "key": {
                              "name": "maxInMemorySize"
                            },
                            "model": {
                              "type": "Number",
                              "annotations": {
                                "int": {},
                                "typeId": "java.lang.Integer",
                                "default": "2048"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "Defines the maximum memory that the stream should use to keep data in memory. If more than that is consumed then it will start to buffer the content on disk."
                              }
                            }
                          },
                          {
                            "key": {
                              "name": "bufferUnit"
                            },
                            "model": {
                              "type": "String",
                              "annotations": {
                                "typeId": "java.lang.String",
                                "enum": {
                                  "type": "[Ljava.lang.String;",
                                  "values": [
                                    "BYTE",
                                    "KB",
                                    "MB",
                                    "GB"
                                  ]
                                },
                                "default": "KB"
                              }
                            },
                            "annotations": {
                              "description": {
                                "value": "The unit in which maxInMemorySize is expressed"
                              }
                            }
                          }
                        ]
                      }
                    ]
                  },
                  "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": {
                    "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-streaming-strategy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
                  }
                }
              ],
              "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 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": {
                    "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-reconnection-strategy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
                  }
                },
                {
                  "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": {
                    "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
                  }
                },
                {
                  "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": {
                    "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "pooling-profile",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
                  }
                }
              ],
              "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": {
                    "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "abstract-reconnection-strategy",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
                  }
                },
                {
                  "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": {
                    "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
                  }
                },
                {
                  "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": {
                    "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                      "value": {
                        "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                        "localPart": "pooling-profile",
                        "prefix": "mule"
                      }
                    },
                    "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
                  }
                }
              ],
              "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": {
                "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "abstract-reconnection-strategy",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
              }
            },
            {
              "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": {
                "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
              }
            },
            {
              "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": {
                "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "pooling-profile",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
              }
            }
          ],
          "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": {
                "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "abstract-reconnection-strategy",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
              }
            },
            {
              "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": {
                "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
              }
            },
            {
              "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": {
                "org.mule.runtime.extension.internal.property.QNameModelProperty": {
                  "value": {
                    "namespaceURI": "http://www.mulesoft.org/schema/mule/core",
                    "localPart": "pooling-profile",
                    "prefix": "mule"
                  }
                },
                "org.mule.runtime.extension.internal.property.InfrastructureParameterModelProperty": {}
              }
            }
          ],
          "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"
            }
          }
        }
      ]
    }
  ]
}
