Available since FlowX.AI v5.5The document encryption/decryption feature is available starting with FlowX.AI version 5.5.
Overview
The Documents plugin provides file encryption and decryption capabilities through Kafka messaging. This feature allows you to:- Encrypt files - Password-protect one or multiple files stored in the Documents plugin
- Decrypt files - Unlock password-protected files and extract contents from encrypted ZIP archives
Supported file types
| Format | Extensions |
|---|---|
.pdf | |
| Microsoft Word | .doc, .docx |
| Microsoft Excel | .xls, .xlsx |
| ZIP | .zip |
When encrypting multiple files, they are automatically bundled into a password-protected ZIP archive. During decryption, ZIP archives are extracted and only files matching supported types are returned.
Prerequisites
Before using the encryption/decryption features, ensure:The Documents plugin is deployed and configured in your environment
Files are already uploaded to the Documents plugin (you’ll need file IDs)
Kafka topics are properly configured
Kafka topics
The encryption and decryption operations use dedicated Kafka topics for communication between the FlowX Engine and the Documents plugin.Topic configuration
| Environment Variable | Default Topic Name | Direction | Description |
|---|---|---|---|
KAFKA_TOPIC_DOCUMENT_ENCRYPT_FILE_IN | ai.flowx.plugin.document.trigger.encrypt.file.v1 | Inbound | Topic for encryption requests |
KAFKA_TOPIC_DOCUMENT_DECRYPT_FILE_IN | ai.flowx.plugin.document.trigger.decrypt.file.v1 | Inbound | Topic for decryption requests |
KAFKA_TOPIC_DOCUMENT_ENCRYPT_FILE_OUT | ai.flowx.engine.receive.plugin.document.encrypt.file.results.v1 | Outbound | Topic for encryption results |
KAFKA_TOPIC_DOCUMENT_DECRYPT_FILE_OUT | ai.flowx.engine.receive.plugin.document.decrypt.file.results.v1 | Outbound | Topic for decryption results |
Encrypting files
Use file encryption to password-protect documents stored in the Documents plugin.How encryption works
- The plugin validates that all specified file(s) exist
- Validates that files are of supported types
- Downloads the file(s) from storage
- Creates a password-protected copy:
- Single file: Creates an encrypted copy with a new file ID
- Multiple files: Creates a ZIP archive containing all files, then password-protects the ZIP
- Returns the file ID of the encrypted document
Request message structure
Configure a Send Message Task node with a Kafka Send action to trigger file encryption. Topic: Use the encryption inbound topic (e.g.,ai.flowx.plugin.document.trigger.encrypt.file.v1)
Request body:
| Parameter | Type | Required | Description |
|---|---|---|---|
fileIds | Array of strings | Yes | List of file IDs to encrypt (files must exist in Documents plugin) |
password | String | No | Password for encryption. If null, creates an unprotected archive for multiple files |
Response message structure
Configure a Receive Message Task node to receive the encryption result. Topic: Use the encryption outbound topic (e.g.,ai.flowx.engine.receive.plugin.document.encrypt.file.results.v1)
Response body:
| Parameter | Type | Description |
|---|---|---|
status | String | Operation result: success, partial_success, error, or no-op |
message | String | Additional information (populated in case of errors or partial success) |
fileId | String | The file ID of the newly created encrypted file |
Example: Encrypt a single file
Add a Send Message Task node
Configure a Kafka Send action with the encryption topic and the following message body:
Add a Receive Message Task node
Configure the node to listen on the encryption results topic to capture the encrypted file ID.
Decrypting files
Use file decryption to unlock password-protected documents and extract contents from encrypted archives.How decryption works
- The plugin validates that the specified file exists
- Validates that the file is of a supported type
- Downloads the file from storage
- Attempts to open the file:
- First tries without a password
- If that fails, uses the provided password
- If the file is a ZIP archive, extracts its contents
- Filters extracted files by supported types
- Uploads the resulting file(s) to storage
- Returns the file ID(s) of the decrypted/extracted files
Request message structure
Configure a Send Message Task node with a Kafka Send action to trigger file decryption. Topic: Use the decryption inbound topic (e.g.,ai.flowx.plugin.document.trigger.decrypt.file.v1)
Request body:
| Parameter | Type | Required | Description |
|---|---|---|---|
fileId | String | Yes | The file ID of the encrypted file to decrypt |
password | String | No | Password for decryption. If the file is not password-protected, this can be null |
Response message structure
Configure a Receive Message Task node to receive the decryption result. Topic: Use the decryption outbound topic (e.g.,ai.flowx.engine.receive.plugin.document.decrypt.file.results.v1)
Response body:
| Parameter | Type | Description |
|---|---|---|
status | String | Operation result: success, partial_success, error, or no-op |
message | String | Additional information (populated in case of errors or partial success) |
fileIds | Array of strings | List of file IDs for the decrypted/extracted files |
When decrypting a ZIP archive, the response contains multiple file IDs—one for each extracted file that matches supported file types.
Example: Decrypt a password-protected file
Add a Send Message Task node
Configure a Kafka Send action with the decryption topic and the following message body:
Error handling
Both encryption and decryption operations return descriptive error messages when issues occur.Common error scenarios
| Scenario | Status | Description |
|---|---|---|
| All files processed | success | All files were encrypted/decrypted successfully |
| Some files failed | partial_success | Some files were processed but others failed (e.g., unsupported type in a batch) |
| File not found | error | The specified file ID does not exist in the Documents plugin |
| Unsupported file type | error | The file format is not supported for encryption/decryption |
| Invalid password | error | The provided password is incorrect (decryption only) |
| No files to process | no-op | Empty file list provided or all files filtered out |
Example error response
Security considerations
Password handling
In the current version, passwords are transmitted in clear text. Ensure your Kafka communication is secured with TLS encryption.
File storage
Encrypted files are stored as new documents with unique file IDs. Original files remain unchanged.

