{
	"connector": {
		"class": "org.apache.camel.kafkaconnector.file.CamelFileSinkConnector",
		"artifactId": "camel-file-kafka-connector",
		"groupId": "org.apache.camel.kafkaconnector",
		"id": "camel-file-sink",
		"type": "sink",
		"version": "3.19.0-SNAPSHOT",
		"description": "Read and write files."
	},
	"properties": {
		"camel.sink.path.directoryName": {
			"name": "camel.sink.path.directoryName",
			"description": "The starting directory",
			"priority": "HIGH",
			"required": "true"
		},
		"camel.sink.endpoint.charset": {
			"name": "camel.sink.endpoint.charset",
			"description": "This option is used to specify the encoding of the file. You can use this on the consumer, to specify the encodings of the files, which allow Camel to know the charset it should load the file content in case the file content is being accessed. Likewise when writing a file, you can use this option to specify which charset to write the file as well. Do mind that when writing the file Camel may have to read the message content into memory to be able to convert the data into the configured charset, so do not use this if you have big messages.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.doneFileName": {
			"name": "camel.sink.endpoint.doneFileName",
			"description": "Producer: If provided, then Camel will write a 2nd done file when the original file has been written. The done file will be empty. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders. The done file will always be written in the same folder as the original file. Consumer: If provided, Camel will only consume files if a done file exists. This option configures what file name to use. Either you can specify a fixed name. Or you can use dynamic placeholders.The done file is always expected in the same folder as the original file. Only pom.xml and ${file.name.next} is supported as dynamic placeholders.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.fileName": {
			"name": "camel.sink.endpoint.fileName",
			"description": "Use Expression such as File Language to dynamically set the filename. For consumers, it's used as a filename filter. For producers, it's used to evaluate the filename to write. If an expression is set, it take precedence over the CamelFileName header. (Note: The header itself can also be an Expression). The expression options support both String and Expression types. If the expression is a String type, it is always evaluated using the File Language. If the expression is an Expression type, the specified Expression type is used - this allows you, for instance, to use OGNL expressions. For the consumer, you can use it to filter filenames, so you can for instance consume today's file using the File Language syntax: mydata-${date:now:yyyyMMdd}.txt. The producers support the CamelOverruleFileName header which takes precedence over any existing CamelFileName header; the CamelOverruleFileName is a header that is used only once, and makes it easier as this avoids to temporary store CamelFileName and have to restore it afterwards.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.appendChars": {
			"name": "camel.sink.endpoint.appendChars",
			"description": "Used to append characters (text) after writing files. This can for example be used to add new lines or other separators when writing and appending new files or existing files. To specify new-line (slash-n or slash-r) or tab (slash-t) characters then escape with an extra slash, eg slash-slash-n.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.fileExist": {
			"name": "camel.sink.endpoint.fileExist",
			"description": "What to do if a file already exists with the same name. Override, which is the default, replaces the existing file. - Append - adds content to the existing file. - Fail - throws a GenericFileOperationException, indicating that there is already an existing file. - Ignore - silently ignores the problem and does not override the existing file, but assumes everything is okay. - Move - option requires to use the moveExisting option to be configured as well. The option eagerDeleteTargetFile can be used to control what to do if an moving the file, and there exists already an existing file, otherwise causing the move operation to fail. The Move option will move any existing files, before writing the target file. - TryRename is only applicable if tempFileName option is in use. This allows to try renaming the file from the temporary name to the actual name, without doing any exists check. This check may be faster on some file systems and especially FTP servers. One of: [Override] [Append] [Fail] [Ignore] [Move] [TryRename]",
			"defaultValue": "\"Override\"",
			"priority": "MEDIUM",
			"required": "false",
			"enum": [
				"Override",
				"Append",
				"Fail",
				"Ignore",
				"Move",
				"TryRename"
			]
		},
		"camel.sink.endpoint.flatten": {
			"name": "camel.sink.endpoint.flatten",
			"description": "Flatten is used to flatten the file name path to strip any leading paths, so it's just the file name. This allows you to consume recursively into sub-directories, but when you eg write the files to another directory they will be written in a single directory. Setting this to true on the producer enforces that any file name in CamelFileName header will be stripped for any leading paths.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.jailStartingDirectory": {
			"name": "camel.sink.endpoint.jailStartingDirectory",
			"description": "Used for jailing (restricting) writing files to the starting directory (and sub) only. This is enabled by default to not allow Camel to write files to outside directories (to be more secured out of the box). You can turn this off to allow writing files to directories outside the starting directory, such as parent or root folders.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.moveExisting": {
			"name": "camel.sink.endpoint.moveExisting",
			"description": "Expression (such as File Language) used to compute file name to use when fileExist=Move is configured. To move files into a backup subdirectory just enter backup. This option only supports the following File Language tokens: file:name, file:name.ext, file:name.noext, file:onlyname, file:onlyname.noext, file:ext, and file:parent. Notice the file:parent is not supported by the FTP component, as the FTP component can only move any existing files to a relative directory based on current dir as base.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.tempFileName": {
			"name": "camel.sink.endpoint.tempFileName",
			"description": "The same as tempPrefix option but offering a more fine grained control on the naming of the temporary filename as it uses the File Language. The location for tempFilename is relative to the final file location in the option 'fileName', not the target directory in the base uri. For example if option fileName includes a directory prefix: dir\/finalFilename then tempFileName is relative to that subdirectory dir.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.tempPrefix": {
			"name": "camel.sink.endpoint.tempPrefix",
			"description": "This option is used to write the file using a temporary name and then, after the write is complete, rename it to the real name. Can be used to identify files being written and also avoid consumers (not using exclusive read locks) reading in progress files. Is often used by FTP when uploading big files.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.allowNullBody": {
			"name": "camel.sink.endpoint.allowNullBody",
			"description": "Used to specify if a null body is allowed during file writing. If set to true then an empty file will be created, when set to false, and attempting to send a null body to the file component, a GenericFileWriteException of 'Cannot write null body to file.' will be thrown. If the fileExist option is set to 'Override', then the file will be truncated, and if set to append the file will remain unchanged.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.chmod": {
			"name": "camel.sink.endpoint.chmod",
			"description": "Specify the file permissions which is sent by the producer, the chmod value must be between 000 and 777; If there is a leading digit like in 0755 we will ignore it.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.chmodDirectory": {
			"name": "camel.sink.endpoint.chmodDirectory",
			"description": "Specify the directory permissions used when the producer creates missing directories, the chmod value must be between 000 and 777; If there is a leading digit like in 0755 we will ignore it.",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.eagerDeleteTargetFile": {
			"name": "camel.sink.endpoint.eagerDeleteTargetFile",
			"description": "Whether or not to eagerly delete any existing target file. This option only applies when you use fileExists=Override and the tempFileName option as well. You can use this to disable (set it to false) deleting the target file before the temp file is written. For example you may write big files and want the target file to exists during the temp file is being written. This ensure the target file is only deleted until the very last moment, just before the temp file is being renamed to the target filename. This option is also used to control whether to delete any existing files when fileExist=Move is enabled, and an existing file exists. If this option copyAndDeleteOnRenameFails false, then an exception will be thrown if an existing file existed, if its true, then the existing file is deleted before the move operation.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.forceWrites": {
			"name": "camel.sink.endpoint.forceWrites",
			"description": "Whether to force syncing writes to the file system. You can turn this off if you do not want this level of guarantee, for example if writing to logs \/ audit logs etc; this would yield better performance.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.keepLastModified": {
			"name": "camel.sink.endpoint.keepLastModified",
			"description": "Will keep the last modified timestamp from the source file (if any). Will use the FileConstants.FILE_LAST_MODIFIED header to located the timestamp. This header can contain either a java.util.Date or long with the timestamp. If the timestamp exists and the option is enabled it will set this timestamp on the written file. Note: This option only applies to the file producer. You cannot use this option with any of the ftp producers.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.lazyStartProducer": {
			"name": "camel.sink.endpoint.lazyStartProducer",
			"description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.moveExistingFileStrategy": {
			"name": "camel.sink.endpoint.moveExistingFileStrategy",
			"description": "Strategy (Custom Strategy) used to move file with special naming token to use when fileExist=Move is configured. By default, there is an implementation used if no custom strategy is provided",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.autoCreate": {
			"name": "camel.sink.endpoint.autoCreate",
			"description": "Automatically create missing directories in the file's pathname. For the file consumer, that means creating the starting directory. For the file producer, it means the directory the files should be written to.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.bufferSize": {
			"name": "camel.sink.endpoint.bufferSize",
			"description": "Buffer size in bytes used for writing files (or in case of FTP for downloading and uploading files).",
			"defaultValue": "131072",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.copyAndDeleteOnRenameFail": {
			"name": "camel.sink.endpoint.copyAndDeleteOnRenameFail",
			"description": "Whether to fallback and do a copy and delete file, in case the file could not be renamed directly. This option is not available for the FTP component.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.renameUsingCopy": {
			"name": "camel.sink.endpoint.renameUsingCopy",
			"description": "Perform rename operations using a copy and delete strategy. This is primarily used in environments where the regular rename operation is unreliable (e.g. across different file systems or networks). This option takes precedence over the copyAndDeleteOnRenameFail parameter that will automatically fall back to the copy and delete strategy, but only after additional delays.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.sink.endpoint.synchronous": {
			"name": "camel.sink.endpoint.synchronous",
			"description": "Sets whether synchronous processing should be strictly used",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.file.lazyStartProducer": {
			"name": "camel.component.file.lazyStartProducer",
			"description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.",
			"defaultValue": "false",
			"priority": "MEDIUM",
			"required": "false"
		},
		"camel.component.file.autowiredEnabled": {
			"name": "camel.component.file.autowiredEnabled",
			"description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc.",
			"defaultValue": "true",
			"priority": "MEDIUM",
			"required": "false"
		}
	},
	"transforms": [
		"org.apache.camel.kafkaconnector.file.transformers.FileTransforms"
	]
}