<extensionManifest><groupId>org.apache.nifi</groupId><artifactId>nifi-slack-nar</artifactId><version>1.28.0.250-eep-1001</version><parentNar><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-shared-nar</artifactId><version>1.28.0.250-eep-1001</version></parentNar><systemApiVersion>1.28.0.250-eep-1001</systemApiVersion><buildInfo><tag>nifi-1.28.0-RC1</tag><branch>UNKNOWN</branch><revision>bdae0d7</revision></buildInfo><extensions><extension><name>org.apache.nifi.processors.slack.PostSlack</name><type>PROCESSOR</type><deprecationNotice><reason>This Processor is more difficult to configure than necessary, and exposes intricate nuances of the Slack API that need not be exposed. Additionally, it lacks some capabilities, such as responding to messages in threads. It interacts directly with the Slack API instead of making use of the Slack-provided SDK, which makes the Processor much more brittle. Additionally, it does not make clear the differences between PutSlack and PostSlack. Each provides slightly different capabilities. PublishSlack combines the capabilities of both Processors in a simpler configuration that makes use of Slack's standard REST API.</reason><alternatives><alternative>org.apache.nifi.processors.slack.PublishSlack</alternative></alternatives></deprecationNotice><description>Sends a message on Slack. The FlowFile content (e.g. an image) can be uploaded and attached to the message.</description><tags><tag>slack</tag><tag>post</tag><tag>notify</tag><tag>upload</tag><tag>message</tag></tags><properties><property><name>post-message-url</name><displayName>Post Message URL</displayName><description>Slack Web API URL for posting text messages to channels. It only needs to be changed if Slack changes its API URL.</description><defaultValue>https://slack.com/api/chat.postMessage</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>file-upload-url</name><displayName>File Upload URL</displayName><description>Slack Web API URL for uploading files to channels. It only needs to be changed if Slack changes its API URL.</description><defaultValue>https://slack.com/api/files.upload</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>access-token</name><displayName>Access Token</displayName><description>OAuth Access Token used for authenticating/authorizing the Slack request sent by NiFi.</description><required>true</required><sensitive>true</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>channel</name><displayName>Channel</displayName><description>Slack channel, private group, or IM channel to send the message to.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>text</name><displayName>Text</displayName><description>Text of the Slack message to send. Only required if no attachment has been specified and 'Upload File' has been set to 'No'.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>upload-flowfile</name><displayName>Upload FlowFile</displayName><description>Whether or not to upload and attach the FlowFile content to the Slack message.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>Yes</displayName><value>true</value><description>Upload and attach FlowFile content to the Slack message.</description></allowableValue><allowableValue><displayName>No</displayName><value>false</value><description>Don't upload and attach FlowFile content to the Slack message.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>file-title</name><displayName>File Title</displayName><description>Title of the file displayed in the Slack message. The property value will only be used if 'Upload FlowFile' has been set to 'Yes'.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>file-name</name><displayName>File Name</displayName><description>Name of the file to be uploaded. The property value will only be used if 'Upload FlowFile' has been set to 'Yes'. If the property evaluated to null or empty string, then the file name will be set to 'file' in the Slack message.</description><defaultValue>${filename}</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>file-mime-type</name><displayName>File Mime Type</displayName><description>Mime type of the file to be uploaded. The property value will only be used if 'Upload FlowFile' has been set to 'Yes'. If the property evaluated to null or empty string, then the mime type will be set to 'application/octet-stream' in the Slack message.</description><defaultValue>${mime.type}</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>SSL Context Service</name><displayName>SSL Context Service</displayName><description>Specifies an optional SSL Context Service that, if provided, will be used to create connections</description><controllerServiceDefinition><className>org.apache.nifi.ssl.SSLContextService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>&lt;Arbitrary name&gt;</name><value>JSON snippet specifying a Slack message "attachment"</value><description>The property value will be converted to JSON and will be added to the array of attachments in the JSON payload being sent to Slack. The property name will not be used by the processor.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>success</name><description>FlowFiles are routed to success after being successfully sent to Slack</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>FlowFiles are routed to failure if unable to be sent to Slack</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>slack.file.url</name><description>The Slack URL of the uploaded file. It will be added if 'Upload FlowFile' has been set to 'Yes'.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement></extension><extension><name>org.apache.nifi.processors.slack.PublishSlack</name><type>PROCESSOR</type><description>Posts a message to the specified Slack channel. The content of the message can be either a user-defined message that makes use of Expression Language or the contents of the FlowFile can be sent as the message. If sending a user-defined message, the contents of the FlowFile may also be optionally uploaded as a file attachment.</description><tags><tag>slack</tag><tag>conversation</tag><tag>chat.postMessage</tag><tag>social media</tag><tag>team</tag><tag>text</tag><tag>unstructured</tag><tag>write</tag><tag>upload</tag><tag>send</tag><tag>publish</tag></tags><properties><property><name>Access Token</name><displayName>Access Token</displayName><description>OAuth Access Token used for authenticating/authorizing the Slack request sent by NiFi. This may be either a User Token or a Bot Token. The token must be granted the chat:write scope. Additionally, in order to upload FlowFile contents as an attachment, it must be granted files:write.</description><required>true</required><sensitive>true</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Channel</name><displayName>Channel</displayName><description>The name or identifier of the channel to send the message to. If using a channel name, it must be prefixed with the # character. For example, #general. This is valid only for public channels. Otherwise, the unique identifier of the channel to publish to must be provided.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Publish Strategy</name><displayName>Publish Strategy</displayName><description>Specifies how the Processor will send the message or file to Slack.</description><defaultValue>Send FlowFile Content as Message</defaultValue><allowableValues><allowableValue><displayName>Send FlowFile Content as Message</displayName><value>Send FlowFile Content as Message</value><description>The contents of the FlowFile will be sent as the message text.</description></allowableValue><allowableValue><displayName>Use 'Message Text' Property</displayName><value>Use 'Message Text' Property</value><description>The value of the Message Text Property will be sent as the message text.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Message Text</name><displayName>Message Text</displayName><description>The text of the message to send to Slack.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Publish Strategy</propertyName><propertyDisplayName>Publish Strategy</propertyDisplayName><dependentValues><dependentValue>Use 'Message Text' Property</dependentValue></dependentValues></dependency></dependencies></property><property><name>Character Set</name><displayName>Character Set</displayName><description>Specifies the name of the Character Set used to encode the FlowFile contents.</description><defaultValue>UTF-8</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Publish Strategy</propertyName><propertyDisplayName>Publish Strategy</propertyDisplayName><dependentValues><dependentValue>Send FlowFile Content as Message</dependentValue></dependentValues></dependency></dependencies></property><property><name>Include FlowFile Content as Attachment</name><displayName>Include FlowFile Content as Attachment</displayName><description>Specifies whether or not the contents of the FlowFile should be uploaded as an attachment to the Slack message.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Publish Strategy</propertyName><propertyDisplayName>Publish Strategy</propertyDisplayName><dependentValues><dependentValue>Use 'Message Text' Property</dependentValue></dependentValues></dependency></dependencies></property><property><name>Max FlowFile Size</name><displayName>Max FlowFile Size</displayName><description>The maximum size of a FlowFile that can be sent to Slack. If any FlowFile exceeds this size, it will be routed to failure. This plays an important role because the entire contents of the file must be loaded into NiFi's heap in order to send the data to Slack.</description><defaultValue>1 MB</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Include FlowFile Content as Attachment</propertyName><propertyDisplayName>Include FlowFile Content as Attachment</propertyDisplayName><dependentValues><dependentValue>true</dependentValue></dependentValues></dependency></dependencies></property><property><name>Thread Timestamp</name><displayName>Thread Timestamp</displayName><description>The Timestamp identifier for the thread that this message is to be a part of. If not specified, the message will be a top-level message instead of being in a thread.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>success</name><description>FlowFiles are routed to success after being successfully sent to Slack</description><autoTerminated>false</autoTerminated></relationship><relationship><name>rate limited</name><description>FlowFiles are routed to 'rate limited' if the Rate Limit has been exceeded</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>FlowFiles are routed to 'failure' if unable to be sent to Slack for any other reason</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>slack.channel.id</name><description>The ID of the Slack Channel from which the messages were retrieved</description></writesAttribute><writesAttribute><name>slack.ts</name><description>The timestamp of the slack messages that was sent; this is used by Slack as a unique identifier</description></writesAttribute></writesAttributes><defaultSettings><yieldDuration>3 sec</yieldDuration><penaltyDuration>30 sec</penaltyDuration><bulletinLevel>WARN</bulletinLevel></defaultSettings><inputRequirement>INPUT_REQUIRED</inputRequirement></extension><extension><name>org.apache.nifi.processors.slack.PutSlack</name><type>PROCESSOR</type><deprecationNotice><reason>This Processor makes use of a Webhook URL, rather than Slack's REST API. As a result, the Processor is more difficult to configure than necessary and requires special permissions for the Slack Application / Bot. These permissions must be granted for every channel that the application is to respond to, which makes setup and maintenance difficult. Additionally, it does not make clear the differences between PutSlack and PostSlack. Each provides slightly different capabilities. PublishSlack combines the capabilities of both Processors in a simpler configuration that makes use of Slack's standard REST API.</reason><alternatives><alternative>org.apache.nifi.processors.slack.PublishSlack</alternative></alternatives></deprecationNotice><description>Sends a message to your team on slack.com</description><tags><tag>put</tag><tag>slack</tag><tag>notify</tag></tags><properties><property><name>webhook-url</name><displayName>Webhook URL</displayName><description>The POST URL provided by Slack to send messages into a channel.</description><required>true</required><sensitive>true</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>webhook-text</name><displayName>Webhook Text</displayName><description>The text sent in the webhook message</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>channel</name><displayName>Channel</displayName><description>A public channel using #channel or direct message using @username. If not specified, the default webhook channel as specified in Slack's Incoming Webhooks web interface is used.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>username</name><displayName>Username</displayName><description>The displayed Slack username</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>icon-url</name><displayName>Icon URL</displayName><description>Icon URL to be used for the message</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>icon-emoji</name><displayName>Icon Emoji</displayName><description>Icon Emoji to be used for the message. Must begin and end with a colon, e.g. :ghost:</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>SSL Context Service</name><displayName>SSL Context Service</displayName><description>Specifies an optional SSL Context Service that, if provided, will be used to create connections</description><controllerServiceDefinition><className>org.apache.nifi.ssl.SSLContextService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.28.0.250-eep-1001</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><dynamicProperties><dynamicProperty><name>A JSON object to add to Slack's "attachments" JSON payload.</name><value>JSON-formatted string to add to Slack's payload JSON appended to the "attachments" JSON array.</value><description>Converts the contents of each value specified by the Dynamic Property's value to JSON and appends it to the payload being sent to Slack.</description><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>success</name><description>FlowFiles are routed to success after being successfully sent to Slack</description><autoTerminated>false</autoTerminated></relationship><relationship><name>failure</name><description>FlowFiles are routed to failure if unable to be sent to Slack</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement></extension></extensions></extensionManifest>