<extensionManifest><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-nar</artifactId><version>2.5.0</version><parentNar><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></parentNar><systemApiVersion>2.2.0</systemApiVersion><buildInfo><tag>rel/nifi-2.5.0</tag><branch>main</branch><revision>1</revision></buildInfo><extensions><extension><name>org.apache.nifi.processors.gcp.bigquery.PutBigQuery</name><type>PROCESSOR</type><description>Writes the contents of a FlowFile to a Google BigQuery table. The processor is record based so the schema that is used is driven by the RecordReader. Attributes that are not matched to the target schema are skipped. Exactly once delivery semantics are achieved via stream offsets.</description><tags><tag>google</tag><tag>google cloud</tag><tag>bq</tag><tag>bigquery</tag></tags><properties><property><name>GCP Credentials Provider Service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>bigquery-api-endpoint</name><displayName>BigQuery API Endpoint</displayName><description>Can be used to override the default BigQuery endpoint. Default is bigquerystorage.googleapis.com:443. Format must be hostname:port.</description><defaultValue>bigquerystorage.googleapis.com:443</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>bq.dataset</name><displayName>Dataset</displayName><description>BigQuery dataset name (Note - The dataset must exist in GCP)</description><defaultValue>${bq.dataset}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>bq.table.name</name><displayName>Table Name</displayName><description>BigQuery table name</description><defaultValue>${bq.table.name}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>bq.record.reader</name><displayName>Record Reader</displayName><description>Specifies the Controller Service to use for parsing incoming data.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordReaderFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>bq.transfer.type</name><displayName>Transfer Type</displayName><description>Defines the preferred transfer type streaming or batching</description><defaultValue>STREAM</defaultValue><allowableValues><allowableValue><displayName>STREAM</displayName><value>STREAM</value><description>Use streaming record handling strategy</description></allowableValue><allowableValue><displayName>BATCH</displayName><value>BATCH</value><description>Use batching record handling strategy</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>bq.append.record.count</name><displayName>Append Record Count</displayName><description>The number of records to be appended to the write stream at once. Applicable for both batch and stream types</description><defaultValue>20</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-retry-count</name><displayName>Number of retries</displayName><description>How many retry attempts should be made before routing to the failure relationship.</description><defaultValue>6</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>bq.skip.invalid.rows</name><displayName>Skip Invalid Rows</displayName><description>Sets whether to insert all valid rows of a request, even if invalid rows exist. If not set the entire insert request will fail if it contains an invalid row.</description><defaultValue>false</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>FlowFiles are routed to this relationship if the Google BigQuery operation fails.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to this relationship after a successful Google BigQuery operation.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>bq.records.count</name><description>Number of records successfully inserted</description></writesAttribute></writesAttributes><triggerSerially>true</triggerSerially><inputRequirement>INPUT_REQUIRED</inputRequirement></extension><extension><name>org.apache.nifi.processors.gcp.drive.FetchGoogleDrive</name><type>PROCESSOR</type><description>Fetches files from a Google Drive Folder. Designed to be used in tandem with ListGoogleDrive. Please see Additional Details to set up access to Google Drive.</description><tags><tag>google</tag><tag>drive</tag><tag>storage</tag><tag>fetch</tag></tags><properties><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>drive-file-id</name><displayName>File ID</displayName><description>The Drive ID of the File to fetch. Please see Additional Details for information on how to obtain the Drive ID.</description><defaultValue>${drive.id}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Google Doc Export Type</name><displayName>Google Doc Export Type</displayName><description>Google Documents cannot be downloaded directly from Google Drive but instead must be exported to a specified MIME Type. In the event that the incoming FlowFile's MIME Type indicates that the file is a Google Document, this property specifies the MIME Type to export the document to.</description><defaultValue>application/pdf</defaultValue><allowableValues><allowableValue><displayName>PDF</displayName><value>application/pdf</value><description></description></allowableValue><allowableValue><displayName>Microsoft Word</displayName><value>application/vnd.openxmlformats-officedocument.wordprocessingml.document</value><description></description></allowableValue><allowableValue><displayName>OpenDocument Text</displayName><value>application/vnd.oasis.opendocument.text</value><description></description></allowableValue><allowableValue><displayName>Plain Text</displayName><value>text/plain</value><description></description></allowableValue><allowableValue><displayName>Rich Text</displayName><value>application/rtf</value><description></description></allowableValue><allowableValue><displayName>Web Page (HTML)</displayName><value>application/zip</value><description></description></allowableValue><allowableValue><displayName>EPUB</displayName><value>application/epub+zip</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Google Spreadsheet Export Type</name><displayName>Google Spreadsheet Export Type</displayName><description>Google Spreadsheets cannot be downloaded directly from Google Drive but instead must be exported to a specified MIME Type. In the event that the incoming FlowFile's MIME Type indicates that the file is a Google Spreadsheet, this property specifies the MIME Type to export the spreadsheet to.</description><defaultValue>application/pdf</defaultValue><allowableValues><allowableValue><displayName>PDF</displayName><value>application/pdf</value><description></description></allowableValue><allowableValue><displayName>Microsoft Excel</displayName><value>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</value><description></description></allowableValue><allowableValue><displayName>OpenDocument Spreadsheet</displayName><value>application/x-vnd.oasis.opendocument.spreadsheet</value><description></description></allowableValue><allowableValue><displayName>CSV (first sheet only)</displayName><value>text/csv</value><description>Comma-separated values. Only the first sheet will be exported.</description></allowableValue><allowableValue><displayName>TSV (first sheet only)</displayName><value>text/tab-separated-values</value><description>Tab-separate values. Only the first sheet will be exported.</description></allowableValue><allowableValue><displayName>Web Page (HTML)</displayName><value>application/zip</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Google Presentation Export Type</name><displayName>Google Presentation Export Type</displayName><description>Google Presentations cannot be downloaded directly from Google Drive but instead must be exported to a specified MIME Type. In the event that the incoming FlowFile's MIME Type indicates that the file is a Google Presentation, this property specifies the MIME Type to export the presentation to.</description><defaultValue>application/pdf</defaultValue><allowableValues><allowableValue><displayName>PDF</displayName><value>application/pdf</value><description></description></allowableValue><allowableValue><displayName>Microsoft PowerPoint</displayName><value>application/vnd.openxmlformats-officedocument.presentationml.presentation</value><description></description></allowableValue><allowableValue><displayName>OpenDocument Presentation</displayName><value>application/vnd.oasis.opendocument.presentation</value><description></description></allowableValue><allowableValue><displayName>Plain Text</displayName><value>text/plain</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Google Drawing Export Type</name><displayName>Google Drawing Export Type</displayName><description>Google Drawings cannot be downloaded directly from Google Drive but instead must be exported to a specified MIME Type. In the event that the incoming FlowFile's MIME Type indicates that the file is a Google Drawing, this property specifies the MIME Type to export the drawing to.</description><defaultValue>application/pdf</defaultValue><allowableValues><allowableValue><displayName>PDF</displayName><value>application/pdf</value><description></description></allowableValue><allowableValue><displayName>PNG</displayName><value>image/png</value><description></description></allowableValue><allowableValue><displayName>JPEG</displayName><value>image/jpeg</value><description></description></allowableValue><allowableValue><displayName>SVG</displayName><value>image/svg+xml</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>connect-timeout</name><displayName>Connect Timeout</displayName><description>Maximum wait time for connection to Google Drive service.</description><defaultValue>20 sec</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>read-timeout</name><displayName>Read Timeout</displayName><description>Maximum wait time for response from Google Drive service.</description><defaultValue>60 sec</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>A FlowFile will be routed here for each File for which fetch was attempted but failed.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>A FlowFile will be routed here for each successfully fetched File.</description><autoTerminated>false</autoTerminated></relationship></relationships><readsAttributes><readsAttribute><name>drive.id</name><description>The id of the file</description></readsAttribute></readsAttributes><writesAttributes><writesAttribute><name>drive.id</name><description>The id of the file</description></writesAttribute><writesAttribute><name>filename</name><description>The name of the file</description></writesAttribute><writesAttribute><name>mime.type</name><description>The MIME type of the file</description></writesAttribute><writesAttribute><name>drive.size</name><description>The size of the file. Set to 0 when the file size is not available (e.g. externally stored files).</description></writesAttribute><writesAttribute><name>drive.size.available</name><description>Indicates if the file size is known / available</description></writesAttribute><writesAttribute><name>drive.timestamp</name><description>The last modified time or created time (whichever is greater) of the file. The reason for this is that the original modified date of a file is preserved when uploaded to Google Drive. 'Created time' takes the time when the upload occurs. However uploaded files can still be modified later.</description></writesAttribute><writesAttribute><name>drive.created.time</name><description>The file's creation time</description></writesAttribute><writesAttribute><name>drive.modified.time</name><description>The file's last modification time</description></writesAttribute><writesAttribute><name>drive.owner</name><description>The owner of the file</description></writesAttribute><writesAttribute><name>drive.last.modifying.user</name><description>The last modifying user of the file</description></writesAttribute><writesAttribute><name>drive.web.view.link</name><description>Web view link to the file</description></writesAttribute><writesAttribute><name>drive.web.content.link</name><description>Web content link to the file</description></writesAttribute><writesAttribute><name>drive.parent.folder.id</name><description>The id of the file's parent folder</description></writesAttribute><writesAttribute><name>drive.parent.folder.name</name><description>The name of the file's parent folder</description></writesAttribute><writesAttribute><name>drive.shared.drive.id</name><description>The id of the shared drive (if the file is located on a shared drive)</description></writesAttribute><writesAttribute><name>drive.shared.drive.name</name><description>The name of the shared drive (if the file is located on a shared drive)</description></writesAttribute><writesAttribute><name>error.code</name><description>The error code returned by Google Drive</description></writesAttribute><writesAttribute><name>error.message</name><description>The error message returned by Google Drive</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement><multiProcessorUseCases><multiProcessorUseCase><description>Retrieve all files in a Google Drive folder</description><notes></notes><keywords><keyword>google</keyword><keyword>drive</keyword><keyword>google cloud</keyword><keyword>state</keyword><keyword>retrieve</keyword><keyword>fetch</keyword><keyword>all</keyword><keyword>stream</keyword></keywords><processorConfigurations><processorConfiguration><processorClassName>org.apache.nifi.processors.gcp.drive.ListGoogleDrive</processorClassName><configuration>The "Folder ID" property should be set to the ID of the Google Drive folder that files reside in.     See processor documentation / additional details for more information on how to determine a Google Drive folder's ID.
    If the flow being built is to be reused elsewhere, it's a good idea to parameterize     this property by setting it to something like `#{GOOGLE_DRIVE_FOLDER_ID}`.

The "GCP Credentials Provider Service" property should specify an instance of the GCPCredentialsService in order to provide credentials for accessing the folder.

The 'success' Relationship of this Processor is then connected to FetchGoogleDrive.
</configuration></processorConfiguration><processorConfiguration><processorClassName>org.apache.nifi.processors.gcp.drive.FetchGoogleDrive</processorClassName><configuration>"File ID" = "${drive.id}"

The "GCP Credentials Provider Service" property should specify an instance of the GCPCredentialsService in order to provide credentials for accessing the bucket.
</configuration></processorConfiguration></processorConfigurations></multiProcessorUseCase></multiProcessorUseCases><seeAlso><see>org.apache.nifi.processors.gcp.drive.ListGoogleDrive</see><see>org.apache.nifi.processors.gcp.drive.PutGoogleDrive</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.drive.ListGoogleDrive</name><type>PROCESSOR</type><description>Performs a listing of concrete files (shortcuts are ignored) in a Google Drive folder. If the 'Record Writer' property is set, a single Output FlowFile is created, and each file in the listing is written as a single record to the output file. Otherwise, for each file in the listing, an individual FlowFile is created, the metadata being written as FlowFile attributes. This Processor is designed to run on Primary Node only in a cluster. If the primary node changes, the new Primary Node will pick up where the previous node left off without duplicating all of the data. Please see Additional Details to set up access to Google Drive.</description><tags><tag>google</tag><tag>drive</tag><tag>storage</tag></tags><properties><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>folder-id</name><displayName>Folder ID</displayName><description>The ID of the folder from which to pull list of files. Please see Additional Details to set up access to Google Drive and obtain Folder ID. WARNING: Unauthorized access to the folder is treated as if the folder was empty. This results in the processor not creating outgoing FlowFiles. No additional error message is provided.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>recursive-search</name><displayName>Search Recursively</displayName><description>When 'true', will include list of files from concrete sub-folders (ignores shortcuts). Otherwise, will return only files that have the defined 'Folder ID' as their parent directly. WARNING: The listing may fail if there are too many sub-folders (500+).</description><defaultValue>true</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></property><property><name>min-age</name><displayName>Minimum File Age</displayName><description>The minimum age a file must be in order to be considered; any files younger than this will be ignored.</description><defaultValue>0 sec</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>listing-strategy</name><displayName>Listing Strategy</displayName><description>Specify how to determine new/updated entities. See each strategy descriptions for detail.</description><defaultValue>timestamps</defaultValue><allowableValues><allowableValue><displayName>Tracking Timestamps</displayName><value>timestamps</value><description>This strategy tracks the latest timestamp of listed entity to determine new/updated entities. Since it only tracks few timestamps, it can manage listing state efficiently. However, any newly added, or updated entity having timestamp older than the tracked latest timestamp can not be picked by this strategy. For example, such situation can happen in a file system if a file with old timestamp is copied or moved into the target directory without its last modified timestamp being updated. Also may miss files when multiple subdirectories are being written at the same time while listing is running.</description></allowableValue><allowableValue><displayName>Tracking Entities</displayName><value>entities</value><description>This strategy tracks information of all the listed entities within the latest 'Entity Tracking Time Window' to determine new/updated entities. This strategy can pick entities having old timestamp that can be missed with 'Tracking Timestamps'. Works even when multiple subdirectories are being written at the same time while listing is running. However additional DistributedMapCache controller service is required and more JVM heap memory is used. See the description of 'Entity Tracking Time Window' property for further details on how it works.</description></allowableValue><allowableValue><displayName>Time Window</displayName><value>time-window</value><description>This strategy uses a sliding time window. The window starts where the previous window ended and ends with the 'current time'. One cycle will list files with modification time falling within the time window. Works even when multiple subdirectories are being written at the same time while listing is running. IMPORTANT: This strategy works properly only if the time on both the system hosting NiFi and the one hosting the files are accurate.</description></allowableValue><allowableValue><displayName>No Tracking</displayName><value>none</value><description>This strategy lists an entity without any tracking. The same entity will be listed each time on executing this processor. It is recommended to change the default run schedule value. Any property that related to the persisting state will be disregarded.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>et-state-cache</name><displayName>Entity Tracking State Cache</displayName><description>Listed entities are stored in the specified cache storage so that this processor can resume listing across NiFi restart or in case of primary node change. 'Tracking Entities' strategy require tracking information of all listed entities within the last 'Tracking Time Window'. To support large number of entities, the strategy uses DistributedMapCache instead of managed state. Cache key format is 'ListedEntities::{processorId}(::{nodeId})'. If it tracks per node listed entities, then the optional '::{nodeId}' part is added to manage state separately. E.g. cluster wide cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b', per node cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b::nifi-node3' The stored cache content is Gzipped JSON string. The cache key will be deleted when target listing configuration is changed. Used by 'Tracking Entities' strategy.</description><controllerServiceDefinition><className>org.apache.nifi.distributed.cache.client.DistributedMapCacheClient</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>listing-strategy</propertyName><propertyDisplayName>Listing Strategy</propertyDisplayName><dependentValues><dependentValue>entities</dependentValue></dependentValues></dependency></dependencies></property><property><name>et-time-window</name><displayName>Entity Tracking Time Window</displayName><description>Specify how long this processor should track already-listed entities. 'Tracking Entities' strategy can pick any entity whose timestamp is inside the specified time window. For example, if set to '30 minutes', any entity having timestamp in recent 30 minutes will be the listing target when this processor runs. A listed entity is considered 'new/updated' and a FlowFile is emitted if one of following condition meets: 1. does not exist in the already-listed entities, 2. has newer timestamp than the cached entity, 3. has different size than the cached entity. If a cached entity's timestamp becomes older than specified time window, that entity will be removed from the cached already-listed entities. Used by 'Tracking Entities' strategy.</description><defaultValue>3 hours</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>listing-strategy</propertyName><propertyDisplayName>Listing Strategy</propertyDisplayName><dependentValues><dependentValue>entities</dependentValue></dependentValues></dependency></dependencies></property><property><name>et-initial-listing-target</name><displayName>Entity Tracking Initial Listing Target</displayName><description>Specify how initial listing should be handled. Used by 'Tracking Entities' strategy.</description><defaultValue>all</defaultValue><allowableValues><allowableValue><displayName>Tracking Time Window</displayName><value>window</value><description>Ignore entities having timestamp older than the specified 'Tracking Time Window' at the initial listing activity.</description></allowableValue><allowableValue><displayName>All Available</displayName><value>all</value><description>Regardless of entities timestamp, all existing entities will be listed at the initial listing activity.</description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>listing-strategy</propertyName><propertyDisplayName>Listing Strategy</propertyDisplayName><dependentValues><dependentValue>entities</dependentValue></dependentValues></dependency></dependencies></property><property><name>record-writer</name><displayName>Record Writer</displayName><description>Specifies the Record Writer to use for creating the listing. If not specified, one FlowFile will be created for each entity that is listed. If the Record Writer is specified, all entities will be written to a single FlowFile instead of adding attributes to individual FlowFiles.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordSetWriterFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>connect-timeout</name><displayName>Connect Timeout</displayName><description>Maximum wait time for connection to Google Drive service.</description><defaultValue>20 sec</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>read-timeout</name><displayName>Read Timeout</displayName><description>Maximum wait time for response from Google Drive service.</description><defaultValue>60 sec</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>success</name><description>All FlowFiles that are received are routed to success</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>drive.id</name><description>The id of the file</description></writesAttribute><writesAttribute><name>filename</name><description>The name of the file</description></writesAttribute><writesAttribute><name>mime.type</name><description>The MIME type of the file</description></writesAttribute><writesAttribute><name>drive.size</name><description>The size of the file. Set to 0 when the file size is not available (e.g. externally stored files).</description></writesAttribute><writesAttribute><name>drive.size.available</name><description>Indicates if the file size is known / available</description></writesAttribute><writesAttribute><name>drive.timestamp</name><description>The last modified time or created time (whichever is greater) of the file. The reason for this is that the original modified date of a file is preserved when uploaded to Google Drive. 'Created time' takes the time when the upload occurs. However uploaded files can still be modified later.</description></writesAttribute><writesAttribute><name>drive.created.time</name><description>The file's creation time</description></writesAttribute><writesAttribute><name>drive.modified.time</name><description>The file's last modification time</description></writesAttribute><writesAttribute><name>drive.path</name><description>The path of the file's directory from the base directory. The path contains the folder names in URL encoded form because Google Drive allows special characters in file names, including '/' (slash) and '\' (backslash). The URL encoded folder names are separated by '/' in the path.</description></writesAttribute><writesAttribute><name>drive.owner</name><description>The owner of the file</description></writesAttribute><writesAttribute><name>drive.last.modifying.user</name><description>The last modifying user of the file</description></writesAttribute><writesAttribute><name>drive.web.view.link</name><description>Web view link to the file</description></writesAttribute><writesAttribute><name>drive.web.content.link</name><description>Web content link to the file</description></writesAttribute><writesAttribute><name>drive.parent.folder.id</name><description>The id of the file's parent folder</description></writesAttribute><writesAttribute><name>drive.parent.folder.name</name><description>The name of the file's parent folder</description></writesAttribute><writesAttribute><name>drive.listed.folder.id</name><description>The id of the base folder that was listed</description></writesAttribute><writesAttribute><name>drive.listed.folder.name</name><description>The name of the base folder that was listed</description></writesAttribute><writesAttribute><name>drive.shared.drive.id</name><description>The id of the shared drive (if the file is located on a shared drive)</description></writesAttribute><writesAttribute><name>drive.shared.drive.name</name><description>The name of the shared drive (if the file is located on a shared drive)</description></writesAttribute></writesAttributes><triggerSerially>true</triggerSerially><primaryNodeOnly>true</primaryNodeOnly><stateful><description>The processor stores necessary data to be able to keep track what files have been listed already. What exactly needs to be stored depends on the 'Listing Strategy'. State is stored across the cluster so that this Processor can be run on Primary Node only and if a new Primary Node is selected, the new node can pick up where the previous node left off, without duplicating the data.</description><scopes><scope>CLUSTER</scope></scopes></stateful><inputRequirement>INPUT_FORBIDDEN</inputRequirement><seeAlso><see>org.apache.nifi.processors.gcp.drive.FetchGoogleDrive</see><see>org.apache.nifi.processors.gcp.drive.PutGoogleDrive</see></seeAlso><defaultSchedule><strategy>TIMER_DRIVEN</strategy><period>1 min</period><concurrentTasks>1</concurrentTasks></defaultSchedule></extension><extension><name>org.apache.nifi.processors.gcp.drive.PutGoogleDrive</name><type>PROCESSOR</type><description>Writes the contents of a FlowFile as a file in Google Drive.</description><tags><tag>google</tag><tag>drive</tag><tag>storage</tag><tag>put</tag></tags><properties><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>folder-id</name><displayName>Folder ID</displayName><description>The ID of the shared folder. Please see Additional Details to set up access to Google Drive and obtain Folder ID.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>file-name</name><displayName>Filename</displayName><description>The name of the file to upload to the specified Google Drive folder.</description><defaultValue>${filename}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>conflict-resolution-strategy</name><displayName>Conflict Resolution Strategy</displayName><description>Indicates what should happen when a file with the same name already exists in the specified Google Drive folder.</description><defaultValue>fail</defaultValue><allowableValues><allowableValue><displayName>fail</displayName><value>fail</value><description>Handle file conflict as failure.</description></allowableValue><allowableValue><displayName>ignore</displayName><value>ignore</value><description>Ignore conflict, do not change the original file.</description></allowableValue><allowableValue><displayName>replace</displayName><value>replace</value><description>Replace existing file in case of conflict.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>chunked-upload-threshold</name><displayName>Chunked Upload Threshold</displayName><description>The maximum size of the content which is uploaded at once. FlowFiles larger than this threshold are uploaded in chunks.</description><defaultValue>100 MB</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>chunked-upload-size</name><displayName>Chunked Upload Size</displayName><description>Defines the size of a chunk. Used when a FlowFile's size exceeds 'Chunked Upload Threshold' and content is uploaded in smaller chunks. Minimum allowed chunk size is 256 KB, maximum allowed chunk size is 1 GB.</description><defaultValue>10 MB</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>connect-timeout</name><displayName>Connect Timeout</displayName><description>Maximum wait time for connection to Google Drive service.</description><defaultValue>20 sec</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>read-timeout</name><displayName>Read Timeout</displayName><description>Maximum wait time for response from Google Drive service.</description><defaultValue>60 sec</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>Files that could not be written to Google Drive for some reason are transferred to this relationship.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>Files that have been successfully written to Google Drive are transferred to this relationship.</description><autoTerminated>false</autoTerminated></relationship></relationships><readsAttributes><readsAttribute><name>filename</name><description>Uses the FlowFile's filename as the filename for the Google Drive object.</description></readsAttribute></readsAttributes><writesAttributes><writesAttribute><name>drive.id</name><description>The id of the file</description></writesAttribute><writesAttribute><name>filename</name><description>The name of the file</description></writesAttribute><writesAttribute><name>mime.type</name><description>The MIME type of the file</description></writesAttribute><writesAttribute><name>drive.size</name><description>The size of the file. Set to 0 when the file size is not available (e.g. externally stored files).</description></writesAttribute><writesAttribute><name>drive.size.available</name><description>Indicates if the file size is known / available</description></writesAttribute><writesAttribute><name>drive.timestamp</name><description>The last modified time or created time (whichever is greater) of the file. The reason for this is that the original modified date of a file is preserved when uploaded to Google Drive. 'Created time' takes the time when the upload occurs. However uploaded files can still be modified later.</description></writesAttribute><writesAttribute><name>drive.created.time</name><description>The file's creation time</description></writesAttribute><writesAttribute><name>drive.modified.time</name><description>The file's last modification time</description></writesAttribute><writesAttribute><name>error.code</name><description>The error code returned by Google Drive</description></writesAttribute><writesAttribute><name>error.message</name><description>The error message returned by Google Drive</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement><seeAlso><see>org.apache.nifi.processors.gcp.drive.ListGoogleDrive</see><see>org.apache.nifi.processors.gcp.drive.FetchGoogleDrive</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub</name><type>PROCESSOR</type><description> Consumes messages from the configured Google Cloud PubSub subscription. The 'Batch Size' property specified the maximum
 number of messages that will be pulled from the subscription in a single request. The 'Processing Strategy' property
 specifies if each message should be its own FlowFile or if messages should be grouped into a single FlowFile. Using the
 Demarcator strategy will provide best throughput when the format allows it. Using Record allows to convert data format
 as well as doing schema enforcement. Using the FlowFile strategy will generate one FlowFile per message and will have
 the message's attributes as FlowFile attributes.
</description><tags><tag>google</tag><tag>google-cloud</tag><tag>gcp</tag><tag>message</tag><tag>pubsub</tag><tag>consume</tag></tags><properties><property><name>GCP Credentials Provider Service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-pubsub-subscription</name><displayName>Subscription</displayName><description>Name of the Google Cloud Pub/Sub Subscription</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-pubsub-publish-batch-size</name><displayName>Batch Size Threshold</displayName><description>Indicates the number of messages the cloud service should bundle together in a batch. If not set and left empty, only one message will be used in a batch</description><defaultValue>15</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Processing Strategy</name><displayName>Processing Strategy</displayName><description>Strategy for processing PubSub Records and writing serialized output to FlowFiles</description><defaultValue>FLOW_FILE</defaultValue><allowableValues><allowableValue><displayName>FLOW_FILE</displayName><value>FLOW_FILE</value><description>Write one FlowFile for each PubSub message consumed</description></allowableValue><allowableValue><displayName>DEMARCATOR</displayName><value>DEMARCATOR</value><description>Write one FlowFile for each batch of PubSub messages consumed</description></allowableValue><allowableValue><displayName>RECORD</displayName><value>RECORD</value><description>Write one FlowFile containing multiple PubSub messages consumed and processed with Record Reader and Record Writer</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Record Reader</name><displayName>Record Reader</displayName><description>The Record Reader to use for incoming messages</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordReaderFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Processing Strategy</propertyName><propertyDisplayName>Processing Strategy</propertyDisplayName><dependentValues><dependentValue>RECORD</dependentValue></dependentValues></dependency></dependencies></property><property><name>Record Writer</name><displayName>Record Writer</displayName><description>The Record Writer to use in order to serialize the outgoing FlowFiles</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordSetWriterFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Processing Strategy</propertyName><propertyDisplayName>Processing Strategy</propertyDisplayName><dependentValues><dependentValue>RECORD</dependentValue></dependentValues></dependency></dependencies></property><property><name>Output Strategy</name><displayName>Output Strategy</displayName><description>The format used to output the Kafka Record into a FlowFile Record.</description><defaultValue>USE_VALUE</defaultValue><allowableValues><allowableValue><displayName>Use Content as Value</displayName><value>USE_VALUE</value><description>Write only the message payload to the FlowFile record.</description></allowableValue><allowableValue><displayName>Use Wrapper</displayName><value>USE_WRAPPER</value><description>Write the message's attributes into the FlowFile record.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Processing Strategy</propertyName><propertyDisplayName>Processing Strategy</propertyDisplayName><dependentValues><dependentValue>RECORD</dependentValue></dependentValues></dependency></dependencies></property><property><name>Message Demarcator</name><displayName>Message Demarcator</displayName><description>Since the PubSub client receives messages in batches, this Processor has an option to output FlowFiles
which contains all the messages in a single batch. This property allows you to provide a string
(interpreted as UTF-8) to use for demarcating apart multiple messages. To enter special character
such as 'new line' use CTRL+Enter or Shift+Enter depending on the OS.
</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Processing Strategy</propertyName><propertyDisplayName>Processing Strategy</propertyDisplayName><dependentValues><dependentValue>DEMARCATOR</dependentValue></dependentValues></dependency></dependencies></property><property><name>api-endpoint</name><displayName>API Endpoint</displayName><description>Override the gRPC endpoint in the form of [host:port]</description><defaultValue>pubsub.googleapis.com:443</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>success</name><description>FlowFiles are routed to this relationship after a successful Google Cloud Pub/Sub operation.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>gcp.pubsub.ackId</name><description>Acknowledgement Id of the consumed Google Cloud PubSub message</description></writesAttribute><writesAttribute><name>gcp.pubsub.messageSize</name><description>Serialized size of the consumed Google Cloud PubSub message</description></writesAttribute><writesAttribute><name>gcp.pubsub.attributesCount</name><description>Number of attributes the consumed PubSub message has, if any</description></writesAttribute><writesAttribute><name>gcp.pubsub.publishTime</name><description>Timestamp value when the message was published</description></writesAttribute><writesAttribute><name>gcp.pubsub.subscription</name><description>Name of the PubSub subscription</description></writesAttribute><writesAttribute><name>Dynamic Attributes</name><description>Other than the listed attributes, this processor may write zero or more attributes, if the original Google Cloud Publisher client added any attributes to the message while sending</description></writesAttribute></writesAttributes><inputRequirement>INPUT_FORBIDDEN</inputRequirement><seeAlso><see>org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub</name><type>PROCESSOR</type><description>Publishes the content of the incoming flowfile to the configured Google Cloud PubSub topic. The processor supports dynamic properties. If any dynamic properties are present, they will be sent along with the message in the form of 'attributes'.</description><tags><tag>google</tag><tag>google-cloud</tag><tag>gcp</tag><tag>message</tag><tag>pubsub</tag><tag>publish</tag></tags><properties><property><name>GCP Credentials Provider Service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-pubsub-topic</name><displayName>Topic Name</displayName><description>Name of the Google Cloud PubSub Topic</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Message Derivation Strategy</name><displayName>Message Derivation Strategy</displayName><description>The strategy used to publish the incoming FlowFile to the Google Cloud PubSub endpoint.</description><defaultValue>FLOWFILE_ORIENTED</defaultValue><allowableValues><allowableValue><displayName>FlowFile Oriented</displayName><value>FLOWFILE_ORIENTED</value><description>Each incoming FlowFile is sent as a Google Cloud PubSub message</description></allowableValue><allowableValue><displayName>Record Oriented</displayName><value>RECORD_ORIENTED</value><description>Each incoming FlowFile is parsed into NiFi records, which are each sent as a Google Cloud PubSub 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>Record Reader</name><displayName>Record Reader</displayName><description>The Record Reader to use for incoming FlowFiles</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordReaderFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Message Derivation Strategy</propertyName><propertyDisplayName>Message Derivation Strategy</propertyDisplayName><dependentValues><dependentValue>RECORD_ORIENTED</dependentValue></dependentValues></dependency></dependencies></property><property><name>Record Writer</name><displayName>Record Writer</displayName><description>The Record Writer to use in order to serialize the data before sending to GCPubSub endpoint</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordSetWriterFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Message Derivation Strategy</propertyName><propertyDisplayName>Message Derivation Strategy</propertyDisplayName><dependentValues><dependentValue>RECORD_ORIENTED</dependentValue></dependentValues></dependency></dependencies></property><property><name>Input Batch Size</name><displayName>Input Batch Size</displayName><description>Maximum number of FlowFiles processed for each Processor invocation</description><defaultValue>100</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Maximum Message Size</name><displayName>Maximum Message Size</displayName><description>The maximum size of a Google PubSub message in bytes. Defaults to 1 MB (1048576 bytes)</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>Message Derivation Strategy</propertyName><propertyDisplayName>Message Derivation Strategy</propertyDisplayName><dependentValues><dependentValue>FLOWFILE_ORIENTED</dependentValue></dependentValues></dependency></dependencies></property><property><name>gcp-pubsub-publish-batch-size</name><displayName>Batch Size Threshold</displayName><description>Indicates the number of messages the cloud service should bundle together in a batch. If not set and left empty, only one message will be used in a batch</description><defaultValue>15</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-batch-bytes</name><displayName>Batch Bytes Threshold</displayName><description>Publish request gets triggered based on this Batch Bytes Threshold property and the Batch Size Threshold property, whichever condition is met first.</description><defaultValue>3 MB</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-pubsub-publish-batch-delay</name><displayName>Batch Delay Threshold</displayName><description>Indicates the delay threshold to use for batching. After this amount of time has elapsed (counting from the first element added), the elements will be wrapped up in a batch and sent. This value should not be set too high, usually on the order of milliseconds. Otherwise, calls might appear to never complete.</description><defaultValue>100 millis</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>api-endpoint</name><displayName>API Endpoint</displayName><description>Override the gRPC endpoint in the form of [host:port]</description><defaultValue>pubsub.googleapis.com:443</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</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>Attribute name</name><value>Value to be set to the attribute</value><description>Attributes to be set for the outgoing Google Cloud PubSub message</description><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>failure</name><description>FlowFiles are routed to this relationship if the Google Cloud Pub/Sub operation fails.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>retry</name><description>FlowFiles are routed to this relationship if the Google Cloud Pub/Sub operation fails but attempting the operation again may succeed.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to this relationship after a successful Google Cloud Pub/Sub operation.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>gcp.pubsub.messageId</name><description>ID of the pubsub message published to the configured Google Cloud PubSub topic</description></writesAttribute><writesAttribute><name>gcp.pubsub.count.records</name><description>Count of pubsub messages published to the configured Google Cloud PubSub topic</description></writesAttribute><writesAttribute><name>gcp.pubsub.topic</name><description>Name of the Google Cloud PubSub topic the message was published to</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement><systemResourceConsiderations><systemResourceConsideration><resource>MEMORY</resource><description>The entirety of the FlowFile's content will be read into memory to be sent as a PubSub message.</description></systemResourceConsideration></systemResourceConsiderations><seeAlso><see>org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.storage.DeleteGCSObject</name><type>PROCESSOR</type><description>Deletes objects from a Google Cloud Bucket. If attempting to delete a file that does not exist, FlowFile is routed to success.</description><tags><tag>google cloud</tag><tag>gcs</tag><tag>google</tag><tag>storage</tag><tag>delete</tag></tags><properties><property><name>GCP Credentials Provider Service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-bucket</name><displayName>Bucket</displayName><description>Bucket of the object.</description><defaultValue>${gcs.bucket}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-key</name><displayName>Key</displayName><description>Name of the object.</description><defaultValue>${filename}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-generation</name><displayName>Generation</displayName><description>The generation of the object to be deleted. If null, will use latest version of the object.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-retry-count</name><displayName>Number of retries</displayName><description>How many retry attempts should be made before routing to the failure relationship.</description><defaultValue>6</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>storage-api-url</name><displayName>Storage API URL</displayName><description>Overrides the default storage URL. Configuring an alternative Storage API URL also overrides the HTTP Host header on requests as described in the Google documentation for Private Service Connections.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>FlowFiles are routed to this relationship if the Google Cloud Storage operation fails.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to this relationship after a successful Google Cloud Storage operation.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes></writesAttributes><supportsBatching>true</supportsBatching><inputRequirement>INPUT_REQUIRED</inputRequirement><seeAlso><see>org.apache.nifi.processors.gcp.storage.PutGCSObject</see><see>org.apache.nifi.processors.gcp.storage.FetchGCSObject</see><see>org.apache.nifi.processors.gcp.storage.ListGCSBucket</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.storage.FetchGCSObject</name><type>PROCESSOR</type><description>Fetches a file from a Google Cloud Bucket. Designed to be used in tandem with ListGCSBucket.</description><tags><tag>google cloud</tag><tag>google</tag><tag>storage</tag><tag>gcs</tag><tag>fetch</tag></tags><properties><property><name>GCP Credentials Provider Service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-bucket</name><displayName>Bucket</displayName><description>Bucket of the object.</description><defaultValue>${gcs.bucket}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-key</name><displayName>Key</displayName><description>Name of the object.</description><defaultValue>${filename}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-generation</name><displayName>Object Generation</displayName><description>The generation of the Object to download. If not set, the latest generation will be downloaded.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-server-side-encryption-key</name><displayName>Server Side Encryption Key</displayName><description>An AES256 Key (encoded in base64) which the object has been encrypted in.</description><required>false</required><sensitive>true</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-object-range-start</name><displayName>Range Start</displayName><description>The byte position at which to start reading from the object. An empty value or a value of zero will start reading at the beginning of the object.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-object-range-length</name><displayName>Range Length</displayName><description>The number of bytes to download from the object, starting from the Range Start. An empty value or a value that extends beyond the end of the object will read to the end of the object.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-retry-count</name><displayName>Number of retries</displayName><description>How many retry attempts should be made before routing to the failure relationship.</description><defaultValue>6</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>storage-api-url</name><displayName>Storage API URL</displayName><description>Overrides the default storage URL. Configuring an alternative Storage API URL also overrides the HTTP Host header on requests as described in the Google documentation for Private Service Connections.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>FlowFiles are routed to this relationship if the Google Cloud Storage operation fails.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to this relationship after a successful Google Cloud Storage operation.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>filename</name><description>The name of the file, parsed if possible from the Content-Disposition response header</description></writesAttribute><writesAttribute><name>gcs.bucket</name><description>Bucket of the object.</description></writesAttribute><writesAttribute><name>gcs.key</name><description>Name of the object.</description></writesAttribute><writesAttribute><name>gcs.size</name><description>Size of the object.</description></writesAttribute><writesAttribute><name>gcs.cache.control</name><description>Data cache control of the object.</description></writesAttribute><writesAttribute><name>gcs.component.count</name><description>The number of components which make up the object.</description></writesAttribute><writesAttribute><name>gcs.content.disposition</name><description>The data content disposition of the object.</description></writesAttribute><writesAttribute><name>gcs.content.encoding</name><description>The content encoding of the object.</description></writesAttribute><writesAttribute><name>gcs.content.language</name><description>The content language of the object.</description></writesAttribute><writesAttribute><name>mime.type</name><description>The MIME/Content-Type of the object</description></writesAttribute><writesAttribute><name>gcs.crc32c</name><description>The CRC32C checksum of object's data, encoded in base64 in big-endian order.</description></writesAttribute><writesAttribute><name>gcs.create.time</name><description>The creation time of the object (milliseconds)</description></writesAttribute><writesAttribute><name>gcs.update.time</name><description>The last modification time of the object (milliseconds)</description></writesAttribute><writesAttribute><name>gcs.encryption.algorithm</name><description>The algorithm used to encrypt the object.</description></writesAttribute><writesAttribute><name>gcs.encryption.sha256</name><description>The SHA256 hash of the key used to encrypt the object</description></writesAttribute><writesAttribute><name>gcs.etag</name><description>The HTTP 1.1 Entity tag for the object.</description></writesAttribute><writesAttribute><name>gcs.generated.id</name><description>The service-generated for the object</description></writesAttribute><writesAttribute><name>gcs.generation</name><description>The data generation of the object.</description></writesAttribute><writesAttribute><name>gcs.md5</name><description>The MD5 hash of the object's data encoded in base64.</description></writesAttribute><writesAttribute><name>gcs.media.link</name><description>The media download link to the object.</description></writesAttribute><writesAttribute><name>gcs.metageneration</name><description>The metageneration of the object.</description></writesAttribute><writesAttribute><name>gcs.owner</name><description>The owner (uploader) of the object.</description></writesAttribute><writesAttribute><name>gcs.owner.type</name><description>The ACL entity type of the uploader of the object.</description></writesAttribute><writesAttribute><name>gcs.acl.owner</name><description>A comma-delimited list of ACL entities that have owner access to the object. Entities will be either email addresses, domains, or project IDs.</description></writesAttribute><writesAttribute><name>gcs.acl.writer</name><description>A comma-delimited list of ACL entities that have write access to the object. Entities will be either email addresses, domains, or project IDs.</description></writesAttribute><writesAttribute><name>gcs.acl.reader</name><description>A comma-delimited list of ACL entities that have read access to the object. Entities will be either email addresses, domains, or project IDs.</description></writesAttribute><writesAttribute><name>gcs.uri</name><description>The URI of the object as a string.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement><multiProcessorUseCases><multiProcessorUseCase><description>Retrieve all files in a Google Compute Storage (GCS) bucket</description><notes></notes><keywords><keyword>gcp</keyword><keyword>gcs</keyword><keyword>google cloud</keyword><keyword>google compute storage</keyword><keyword>state</keyword><keyword>retrieve</keyword><keyword>fetch</keyword><keyword>all</keyword><keyword>stream</keyword></keywords><processorConfigurations><processorConfiguration><processorClassName>org.apache.nifi.processors.gcp.storage.ListGCSBucket</processorClassName><configuration>The "Bucket" property should be set to the name of the GCS bucket that files reside in. If the flow being built is to be reused elsewhere, it's a good idea to parameterize     this property by setting it to something like `#{GCS_SOURCE_BUCKET}`.
Configure the "Project ID" property to reflect the ID of your Google Compute Cloud Project.

The "GCP Credentials Provider Service" property should specify an instance of the GCPCredentialsService in order to provide credentials for accessing the bucket.

The 'success' Relationship of this Processor is then connected to FetchGCSObject.
</configuration></processorConfiguration><processorConfiguration><processorClassName>org.apache.nifi.processors.gcp.storage.FetchGCSObject</processorClassName><configuration>"Bucket" = "${gcs.bucket}"
"Name" = "${filename}"

The "GCP Credentials Provider Service" property should specify an instance of the GCPCredentialsService in order to provide credentials for accessing the bucket.
</configuration></processorConfiguration></processorConfigurations></multiProcessorUseCase></multiProcessorUseCases><seeAlso><see>org.apache.nifi.processors.gcp.storage.ListGCSBucket</see><see>org.apache.nifi.processors.gcp.storage.PutGCSObject</see><see>org.apache.nifi.processors.gcp.storage.DeleteGCSObject</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.storage.ListGCSBucket</name><type>PROCESSOR</type><description>Retrieves a listing of objects from a GCS bucket. For each object that is listed, creates a FlowFile that represents the object so that it can be fetched in conjunction with FetchGCSObject. This Processor is designed to run on Primary Node only in a cluster. If the primary node changes, the new Primary Node will pick up where the previous node left off without duplicating all of the data.</description><tags><tag>google cloud</tag><tag>google</tag><tag>storage</tag><tag>gcs</tag><tag>list</tag></tags><properties><property><name>GCP Credentials Provider Service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-bucket</name><displayName>Bucket</displayName><description>Bucket of the object.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-prefix</name><displayName>Prefix</displayName><description>The prefix used to filter the object list. In most cases, it should end with a forward slash ('/').</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>listing-strategy</name><displayName>Listing Strategy</displayName><description>Specify how to determine new/updated entities. See each strategy descriptions for detail.</description><defaultValue>timestamps</defaultValue><allowableValues><allowableValue><displayName>Tracking Timestamps</displayName><value>timestamps</value><description>This strategy tracks the latest timestamp of listed entity to determine new/updated entities. Since it only tracks few timestamps, it can manage listing state efficiently. This strategy will not pick up any newly added or modified entity if their timestamps are older than the tracked latest timestamp. Also may miss files when multiple subdirectories are being written at the same time while listing is running.</description></allowableValue><allowableValue><displayName>Tracking Entities</displayName><value>entities</value><description>This strategy tracks information of all the listed entities within the latest 'Entity Tracking Time Window' to determine new/updated entities. This strategy can pick entities having old timestamp that can be missed with 'Tracing Timestamps'. Works even when multiple subdirectories are being written at the same time while listing is running. However an additional DistributedMapCache controller service is required and more JVM heap memory is used. For more information on how the 'Entity Tracking Time Window' property works, see the description.</description></allowableValue><allowableValue><displayName>No Tracking</displayName><value>none</value><description>This strategy lists all entities without any tracking. The same entities will be listed each time this processor is scheduled. It is recommended to change the default run schedule value. Any property that relates to the persisting state will be ignored.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>et-state-cache</name><displayName>Entity Tracking State Cache</displayName><description>Listed entities are stored in the specified cache storage so that this processor can resume listing across NiFi restart or in case of primary node change. 'Tracking Entities' strategy require tracking information of all listed entities within the last 'Tracking Time Window'. To support large number of entities, the strategy uses DistributedMapCache instead of managed state. Cache key format is 'ListedEntities::{processorId}(::{nodeId})'. If it tracks per node listed entities, then the optional '::{nodeId}' part is added to manage state separately. E.g. cluster wide cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b', per node cache key = 'ListedEntities::8dda2321-0164-1000-50fa-3042fe7d6a7b::nifi-node3' The stored cache content is Gzipped JSON string. The cache key will be deleted when target listing configuration is changed. Used by 'Tracking Entities' strategy.</description><controllerServiceDefinition><className>org.apache.nifi.distributed.cache.client.DistributedMapCacheClient</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>listing-strategy</propertyName><propertyDisplayName>Listing Strategy</propertyDisplayName><dependentValues><dependentValue>entities</dependentValue></dependentValues></dependency></dependencies></property><property><name>et-initial-listing-target</name><displayName>Entity Tracking Initial Listing Target</displayName><description>Specify how initial listing should be handled. Used by 'Tracking Entities' strategy.</description><defaultValue>all</defaultValue><allowableValues><allowableValue><displayName>Tracking Time Window</displayName><value>window</value><description>Ignore entities having timestamp older than the specified 'Tracking Time Window' at the initial listing activity.</description></allowableValue><allowableValue><displayName>All Available</displayName><value>all</value><description>Regardless of entities timestamp, all existing entities will be listed at the initial listing activity.</description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>listing-strategy</propertyName><propertyDisplayName>Listing Strategy</propertyDisplayName><dependentValues><dependentValue>entities</dependentValue></dependentValues></dependency></dependencies></property><property><name>et-time-window</name><displayName>Entity Tracking Time Window</displayName><description>Specify how long this processor should track already-listed entities. 'Tracking Entities' strategy can pick any entity whose timestamp is inside the specified time window. For example, if set to '30 minutes', any entity having timestamp in recent 30 minutes will be the listing target when this processor runs. A listed entity is considered 'new/updated' and a FlowFile is emitted if one of following condition meets: 1. does not exist in the already-listed entities, 2. has newer timestamp than the cached entity, 3. has different size than the cached entity. If a cached entity's timestamp becomes older than specified time window, that entity will be removed from the cached already-listed entities. Used by 'Tracking Entities' strategy.</description><defaultValue>3 hours</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>record-writer</name><displayName>Record Writer</displayName><description>Specifies the Record Writer to use for creating the listing. If not specified, one FlowFile will be created for each entity that is listed. If the Record Writer is specified, all entities will be written to a single FlowFile instead of adding attributes to individual FlowFiles.</description><controllerServiceDefinition><className>org.apache.nifi.serialization.RecordSetWriterFactory</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-use-generations</name><displayName>Use Generations</displayName><description>Specifies whether to use GCS Generations, if applicable.  If false, only the latest version of each object will be returned.</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></property><property><name>gcp-retry-count</name><displayName>Number of retries</displayName><description>How many retry attempts should be made before routing to the failure relationship.</description><defaultValue>6</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>storage-api-url</name><displayName>Storage API URL</displayName><description>Overrides the default storage URL. Configuring an alternative Storage API URL also overrides the HTTP Host header on requests as described in the Google documentation for Private Service Connections.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>success</name><description>FlowFiles are routed to this relationship after a successful Google Cloud Storage operation.</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>filename</name><description>The name of the file</description></writesAttribute><writesAttribute><name>gcs.bucket</name><description>Bucket of the object.</description></writesAttribute><writesAttribute><name>gcs.key</name><description>Name of the object.</description></writesAttribute><writesAttribute><name>gcs.size</name><description>Size of the object.</description></writesAttribute><writesAttribute><name>gcs.cache.control</name><description>Data cache control of the object.</description></writesAttribute><writesAttribute><name>gcs.component.count</name><description>The number of components which make up the object.</description></writesAttribute><writesAttribute><name>gcs.content.disposition</name><description>The data content disposition of the object.</description></writesAttribute><writesAttribute><name>gcs.content.encoding</name><description>The content encoding of the object.</description></writesAttribute><writesAttribute><name>gcs.content.language</name><description>The content language of the object.</description></writesAttribute><writesAttribute><name>mime.type</name><description>The MIME/Content-Type of the object</description></writesAttribute><writesAttribute><name>gcs.crc32c</name><description>The CRC32C checksum of object's data, encoded in base64 in big-endian order.</description></writesAttribute><writesAttribute><name>gcs.create.time</name><description>The creation time of the object (milliseconds)</description></writesAttribute><writesAttribute><name>gcs.update.time</name><description>The last modification time of the object (milliseconds)</description></writesAttribute><writesAttribute><name>gcs.encryption.algorithm</name><description>The algorithm used to encrypt the object.</description></writesAttribute><writesAttribute><name>gcs.encryption.sha256</name><description>The SHA256 hash of the key used to encrypt the object</description></writesAttribute><writesAttribute><name>gcs.etag</name><description>The HTTP 1.1 Entity tag for the object.</description></writesAttribute><writesAttribute><name>gcs.generated.id</name><description>The service-generated for the object</description></writesAttribute><writesAttribute><name>gcs.generation</name><description>The data generation of the object.</description></writesAttribute><writesAttribute><name>gcs.md5</name><description>The MD5 hash of the object's data encoded in base64.</description></writesAttribute><writesAttribute><name>gcs.media.link</name><description>The media download link to the object.</description></writesAttribute><writesAttribute><name>gcs.metageneration</name><description>The metageneration of the object.</description></writesAttribute><writesAttribute><name>gcs.owner</name><description>The owner (uploader) of the object.</description></writesAttribute><writesAttribute><name>gcs.owner.type</name><description>The ACL entity type of the uploader of the object.</description></writesAttribute><writesAttribute><name>gcs.acl.owner</name><description>A comma-delimited list of ACL entities that have owner access to the object. Entities will be either email addresses, domains, or project IDs.</description></writesAttribute><writesAttribute><name>gcs.acl.writer</name><description>A comma-delimited list of ACL entities that have write access to the object. Entities will be either email addresses, domains, or project IDs.</description></writesAttribute><writesAttribute><name>gcs.acl.reader</name><description>A comma-delimited list of ACL entities that have read access to the object. Entities will be either email addresses, domains, or project IDs.</description></writesAttribute><writesAttribute><name>gcs.uri</name><description>The URI of the object as a string.</description></writesAttribute></writesAttributes><triggerSerially>true</triggerSerially><triggerWhenEmpty>true</triggerWhenEmpty><primaryNodeOnly>true</primaryNodeOnly><stateful><description>After performing a listing of keys, the timestamp of the newest key is stored, along with the keys that share that same timestamp. This allows the Processor to list only keys that have been added or modified after this date the next time that the Processor is run. State is stored across the cluster so that this Processor can be run on Primary Node only and if a new Primary Node is selected, the new node can pick up where the previous node left off, without duplicating the data.</description><scopes><scope>CLUSTER</scope></scopes></stateful><inputRequirement>INPUT_FORBIDDEN</inputRequirement><seeAlso><see>org.apache.nifi.processors.gcp.storage.PutGCSObject</see><see>org.apache.nifi.processors.gcp.storage.DeleteGCSObject</see><see>org.apache.nifi.processors.gcp.storage.FetchGCSObject</see></seeAlso><defaultSchedule><strategy>TIMER_DRIVEN</strategy><period>1 min</period><concurrentTasks>1</concurrentTasks></defaultSchedule></extension><extension><name>org.apache.nifi.processors.gcp.storage.PutGCSObject</name><type>PROCESSOR</type><description>Writes the contents of a FlowFile as an object in a Google Cloud Storage.</description><tags><tag>google</tag><tag>google cloud</tag><tag>gcs</tag><tag>archive</tag><tag>put</tag></tags><properties><property><name>GCP Credentials Provider Service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-bucket</name><displayName>Bucket</displayName><description>Bucket of the object.</description><defaultValue>${gcs.bucket}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-key</name><displayName>Key</displayName><description>Name of the object.</description><defaultValue>${filename}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Resource Transfer Source</name><displayName>Resource Transfer Source</displayName><description>The source of the content to be transferred</description><defaultValue>FLOWFILE_CONTENT</defaultValue><allowableValues><allowableValue><displayName>FlowFile Content</displayName><value>FLOWFILE_CONTENT</value><description>The content of the incoming FlowFile provides the source for transfer</description></allowableValue><allowableValue><displayName>File Resource Service</displayName><value>FILE_RESOURCE_SERVICE</value><description>The File Resource Service provides the source for transfer</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 Resource Service</name><displayName>File Resource Service</displayName><description>File Resource Service providing access to the local resource to be transferred</description><controllerServiceDefinition><className>org.apache.nifi.fileresource.service.api.FileResourceService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Resource Transfer Source</propertyName><propertyDisplayName>Resource Transfer Source</propertyDisplayName><dependentValues><dependentValue>FILE_RESOURCE_SERVICE</dependentValue></dependentValues></dependency></dependencies></property><property><name>gcs-content-type</name><displayName>Content Type</displayName><description>Content Type for the file, i.e. text/plain</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>gcs-object-crc32c</name><displayName>CRC32C Checksum</displayName><description>CRC32C Checksum (encoded in Base64, big-Endian order) of the file for server-side validation.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-object-acl</name><displayName>Object ACL</displayName><description>Access Control to be attached to the object uploaded. Not providing this will revert to bucket defaults.</description><allowableValues><allowableValue><displayName>All Authenticated Users</displayName><value>ALL_AUTHENTICATED_USERS</value><description>Gives the bucket or object owner OWNER permission, and gives all authenticated Google account holders READER and WRITER permissions. All other permissions are removed.</description></allowableValue><allowableValue><displayName>Authenticated Read</displayName><value>AUTHENTICATED_READ</value><description>Gives the bucket or object owner OWNER permission, and gives all authenticated Google account holders READER permission. All other permissions are removed.</description></allowableValue><allowableValue><displayName>Bucket Owner Full Control</displayName><value>BUCKET_OWNER_FULL_CONTROL</value><description>Gives the object and bucket owners OWNER permission. All other permissions are removed.</description></allowableValue><allowableValue><displayName>Bucket Owner Read Only</displayName><value>BUCKET_OWNER_READ</value><description>Gives the object owner OWNER permission, and gives the bucket owner READER permission. All other permissions are removed.</description></allowableValue><allowableValue><displayName>Private</displayName><value>PRIVATE</value><description>Gives the bucket or object owner OWNER permission for a bucket or object, and removes all other access permissions.</description></allowableValue><allowableValue><displayName>Project Private</displayName><value>PROJECT_PRIVATE</value><description>Gives permission to the project team based on their roles. Anyone who is part of the team has READER permission. Project owners and project editors have OWNER permission. This is the default ACL for newly created buckets. This is also the default ACL for newly created objects unless the default object ACL for that bucket has been changed.</description></allowableValue><allowableValue><displayName>Public Read Only</displayName><value>PUBLIC_READ</value><description>Gives the bucket or object owner OWNER permission, and gives all users, both authenticated and anonymous, READER permission. When you apply this to an object, anyone on the Internet can read the object without authenticating.</description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-server-side-encryption-key</name><displayName>Server Side Encryption Key</displayName><description>An AES256 Encryption Key (encoded in base64) for server-side encryption of the object.</description><required>false</required><sensitive>true</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcs-overwrite-object</name><displayName>Overwrite Object</displayName><description>If false, the upload to GCS will succeed only if the object does not exist.</description><defaultValue>true</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></property><property><name>gcs-content-disposition-type</name><displayName>Content Disposition Type</displayName><description>Type of RFC-6266 Content Disposition to be attached to the object</description><allowableValues><allowableValue><displayName>Inline</displayName><value>inline</value><description>Indicates that the object should be loaded and rendered within the browser.</description></allowableValue><allowableValue><displayName>Attachment</displayName><value>attachment</value><description>Indicates that the object should be saved (using a Save As... dialog) rather than opened directly within the browser</description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gzip.content.enabled</name><displayName>GZIP Compression Enabled</displayName><description>Signals to the GCS Blob Writer whether GZIP compression during transfer is desired. False means do not gzip and can boost performance in many cases.</description><defaultValue>true</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>storage-api-url</name><displayName>Storage API URL</displayName><description>Overrides the default storage URL. Configuring an alternative Storage API URL also overrides the HTTP Host header on requests as described in the Google documentation for Private Service Connections.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-retry-count</name><displayName>Number of retries</displayName><description>How many retry attempts should be made before routing to the failure relationship.</description><defaultValue>6</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</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>The name of a User-Defined Metadata field to add to the GCS Object</name><value>The value of a User-Defined Metadata field to add to the GCS Object</value><description>Allows user-defined metadata to be added to the GCS object as key/value pairs</description><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope></dynamicProperty></dynamicProperties><relationships><relationship><name>failure</name><description>FlowFiles are routed to this relationship if the Google Cloud Storage operation fails.</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to this relationship after a successful Google Cloud Storage operation.</description><autoTerminated>false</autoTerminated></relationship></relationships><readsAttributes><readsAttribute><name>filename</name><description>Uses the FlowFile's filename as the filename for the GCS object</description></readsAttribute><readsAttribute><name>mime.type</name><description>Uses the FlowFile's MIME type as the content-type for the GCS object</description></readsAttribute></readsAttributes><writesAttributes><writesAttribute><name>gcs.bucket</name><description>Bucket of the object.</description></writesAttribute><writesAttribute><name>gcs.key</name><description>Name of the object.</description></writesAttribute><writesAttribute><name>gcs.size</name><description>Size of the object.</description></writesAttribute><writesAttribute><name>gcs.cache.control</name><description>Data cache control of the object.</description></writesAttribute><writesAttribute><name>gcs.component.count</name><description>The number of components which make up the object.</description></writesAttribute><writesAttribute><name>gcs.content.disposition</name><description>The data content disposition of the object.</description></writesAttribute><writesAttribute><name>gcs.content.encoding</name><description>The content encoding of the object.</description></writesAttribute><writesAttribute><name>gcs.content.language</name><description>The content language of the object.</description></writesAttribute><writesAttribute><name>mime.type</name><description>The MIME/Content-Type of the object</description></writesAttribute><writesAttribute><name>gcs.crc32c</name><description>The CRC32C checksum of object's data, encoded in base64 in big-endian order.</description></writesAttribute><writesAttribute><name>gcs.create.time</name><description>The creation time of the object (milliseconds)</description></writesAttribute><writesAttribute><name>gcs.update.time</name><description>The last modification time of the object (milliseconds)</description></writesAttribute><writesAttribute><name>gcs.encryption.algorithm</name><description>The algorithm used to encrypt the object.</description></writesAttribute><writesAttribute><name>gcs.encryption.sha256</name><description>The SHA256 hash of the key used to encrypt the object</description></writesAttribute><writesAttribute><name>gcs.etag</name><description>The HTTP 1.1 Entity tag for the object.</description></writesAttribute><writesAttribute><name>gcs.generated.id</name><description>The service-generated for the object</description></writesAttribute><writesAttribute><name>gcs.generation</name><description>The data generation of the object.</description></writesAttribute><writesAttribute><name>gcs.md5</name><description>The MD5 hash of the object's data encoded in base64.</description></writesAttribute><writesAttribute><name>gcs.media.link</name><description>The media download link to the object.</description></writesAttribute><writesAttribute><name>gcs.metageneration</name><description>The metageneration of the object.</description></writesAttribute><writesAttribute><name>gcs.owner</name><description>The owner (uploader) of the object.</description></writesAttribute><writesAttribute><name>gcs.owner.type</name><description>The ACL entity type of the uploader of the object.</description></writesAttribute><writesAttribute><name>gcs.uri</name><description>The URI of the object as a string.</description></writesAttribute></writesAttributes><inputRequirement>INPUT_REQUIRED</inputRequirement><seeAlso><see>org.apache.nifi.processors.gcp.storage.FetchGCSObject</see><see>org.apache.nifi.processors.gcp.storage.DeleteGCSObject</see><see>org.apache.nifi.processors.gcp.storage.ListGCSBucket</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus</name><type>PROCESSOR</type><description>Retrieves the current status of an Google Vision operation.</description><tags><tag>Google</tag><tag>Cloud</tag><tag>Vision</tag><tag>Machine Learning</tag></tags><properties><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>operationKey</name><displayName>GCP Operation Key</displayName><description>The unique identifier of the Vision operation.</description><defaultValue>${operationKey}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>FlowFiles are routed to failure relationship</description><autoTerminated>false</autoTerminated></relationship><relationship><name>original</name><description>Upon successful completion, the original FlowFile will be routed to this relationship.</description><autoTerminated>true</autoTerminated></relationship><relationship><name>running</name><description>The job is currently still being processed</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to success relationship</description><autoTerminated>false</autoTerminated></relationship></relationships><readsAttributes><readsAttribute><name>operationKey</name><description>A unique identifier of the operation designated by the Vision server.</description></readsAttribute></readsAttributes><writesAttributes></writesAttributes><seeAlso><see>org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus</name><type>PROCESSOR</type><description>Retrieves the current status of an Google Vision operation.</description><tags><tag>Google</tag><tag>Cloud</tag><tag>Vision</tag><tag>Machine Learning</tag></tags><properties><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>operationKey</name><displayName>GCP Operation Key</displayName><description>The unique identifier of the Vision operation.</description><defaultValue>${operationKey}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>FlowFiles are routed to failure relationship</description><autoTerminated>false</autoTerminated></relationship><relationship><name>original</name><description>Upon successful completion, the original FlowFile will be routed to this relationship.</description><autoTerminated>true</autoTerminated></relationship><relationship><name>running</name><description>The job is currently still being processed</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to success relationship</description><autoTerminated>false</autoTerminated></relationship></relationships><readsAttributes><readsAttribute><name>operationKey</name><description>A unique identifier of the operation designated by the Vision server.</description></readsAttribute></readsAttributes><writesAttributes></writesAttributes><seeAlso><see>org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation</name><type>PROCESSOR</type><description>Trigger a Vision operation on file input. It should be followed by GetGcpVisionAnnotateFilesOperationStatus processor in order to monitor operation status.</description><tags><tag>Google</tag><tag>Cloud</tag><tag>Machine Learning</tag><tag>Vision</tag></tags><properties><property><name>json-payload</name><displayName>JSON Payload</displayName><description>JSON request for AWS Machine Learning services. The Processor will use FlowFile content for the request when this property is not specified.</description><defaultValue>{
    "requests": [
        {
            "inputConfig": {
                "gcsSource": {
                    "uri": "gs://${gcs.bucket}/${filename}"
                },
                "mimeType": "application/pdf"
            },
            "features": [{
                    "type": "${vision-feature-type}",
                    "maxResults": 4
                }],
            "outputConfig": {
                "gcsDestination": {
                    "uri": "gs://${output-bucket}/${filename}/"
                },
                "batchSize": 2
            }
        }]
}</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>output-bucket</name><displayName>Output Bucket</displayName><description>Name of the GCS bucket where the output of the Vision job will be persisted. The value of this property applies when the JSON Payload property is configured. The JSON Payload property value can use Expression Language to reference the value of ${output-bucket}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>vision-feature-type</name><displayName>Vision Feature Type</displayName><description>Type of GCP Vision Feature. The value of this property applies when the JSON Payload property is configured. The JSON Payload property value can use Expression Language to reference the value of ${vision-feature-type}</description><defaultValue>TEXT_DETECTION</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>FlowFiles are routed to failure relationship</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to success relationship</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>operationKey</name><description>A unique identifier of the operation returned by the Vision server.</description></writesAttribute></writesAttributes><seeAlso><see>org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation</name><type>PROCESSOR</type><description>Trigger a Vision operation on image input. It should be followed by GetGcpVisionAnnotateImagesOperationStatus processor in order to monitor operation status.</description><tags><tag>Google</tag><tag>Cloud</tag><tag>Machine Learning</tag><tag>Vision</tag></tags><properties><property><name>json-payload</name><displayName>JSON Payload</displayName><description>JSON request for AWS Machine Learning services. The Processor will use FlowFile content for the request when this property is not specified.</description><defaultValue>{
    "requests": [{
        "image": {
            "source": {
                "imageUri": "gs://${gcs.bucket}/${filename}"
            }
        },
        "features": [{
            "type": "${vision-feature-type}",
            "maxResults": 4
        }]
    }],
    "outputConfig": {
        "gcsDestination": {
            "uri": "gs://${output-bucket}/${filename}/"
        },
        "batchSize": 2
    }
}</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>output-bucket</name><displayName>Output Bucket</displayName><description>Name of the GCS bucket where the output of the Vision job will be persisted. The value of this property applies when the JSON Payload property is configured. The JSON Payload property value can use Expression Language to reference the value of ${output-bucket}</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>vision-feature-type</name><displayName>Vision Feature Type</displayName><description>Type of GCP Vision Feature. The value of this property applies when the JSON Payload property is configured. The JSON Payload property value can use Expression Language to reference the value of ${vision-feature-type}</description><defaultValue>TEXT_DETECTION</defaultValue><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><relationships><relationship><name>failure</name><description>FlowFiles are routed to failure relationship</description><autoTerminated>false</autoTerminated></relationship><relationship><name>success</name><description>FlowFiles are routed to success relationship</description><autoTerminated>false</autoTerminated></relationship></relationships><writesAttributes><writesAttribute><name>operationKey</name><description>A unique identifier of the operation returned by the Vision server.</description></writesAttribute></writesAttributes><seeAlso><see>org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus</see></seeAlso></extension><extension><name>org.apache.nifi.processors.gcp.credentials.service.GCPCredentialsControllerService</name><type>CONTROLLER_SERVICE</type><description>Defines credentials for Google Cloud Platform processors. Uses Application Default credentials without configuration. Application Default credentials support environmental variable (GOOGLE_APPLICATION_CREDENTIALS) pointing to a credential file, the config generated by `gcloud auth application-default login`, AppEngine/Compute Engine service accounts, etc.</description><tags><tag>gcp</tag><tag>credentials</tag><tag>provider</tag></tags><properties><property><name>application-default-credentials</name><displayName>Use Application Default Credentials</displayName><description>If true, uses Google Application Default Credentials, which checks the GOOGLE_APPLICATION_CREDENTIALS environment variable for a filepath to a service account JSON key, the config generated by the gcloud sdk, the App Engine service account, and the Compute Engine service account.</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>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>compute-engine-credentials</name><displayName>Use Compute Engine Credentials</displayName><description>If true, uses Google Compute Engine Credentials of the Compute Engine VM Instance which NiFi is running on.</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>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>service-account-json-file</name><displayName>Service Account JSON File</displayName><description>Path to a file containing a Service Account key file in JSON format.</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><resourceDefinition><cardinality>SINGLE</cardinality><resourceTypes><resourceType>FILE</resourceType></resourceTypes></resourceDefinition></property><property><name>service-account-json</name><displayName>Service Account JSON</displayName><description>The raw JSON containing a Service Account keyfile.</description><required>false</required><sensitive>true</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>proxy-configuration-service</name><displayName>Proxy Configuration Service</displayName><description>Specifies the Proxy Configuration Controller Service to proxy network requests.</description><controllerServiceDefinition><className>org.apache.nifi.proxy.ProxyConfigurationService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Delegation Strategy</name><displayName>Delegation Strategy</displayName><description>The Delegation Strategy determines which account is used when calls are made with the GCP Credential.</description><defaultValue>Service Account</defaultValue><allowableValues><allowableValue><displayName>Service Account</displayName><value>Service Account</value><description>The service account should access data using it's own identity and permissions.</description></allowableValue><allowableValue><displayName>Delegated Account</displayName><value>Delegated Account</value><description>The service account should access data on behalf of a specified user account. This setting requires domain-wide delgation to be enabled for the service account for the scopes that it will be used in.</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Delegation User</name><displayName>Delegation User</displayName><description>This user will be impersonated by the service account for api calls. API calls made using this credential will appear as if they are coming from delegate user with the delegate user's access. Any scopes supplied from processors to this credential must have domain-wide delegation setup with the service account.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>ENVIRONMENT</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic><dependencies><dependency><propertyName>Delegation Strategy</propertyName><propertyDisplayName>Delegation Strategy</propertyDisplayName><dependentValues><dependentValue>Delegated Account</dependentValue></dependentValues></dependency></dependencies></property></properties><restricted><restrictions><restriction><requiredPermission>access environment credentials</requiredPermission><explanation>The default configuration can read environment variables and system properties for credentials</explanation></restriction></restrictions></restricted><providedServiceAPIs><providedServiceAPI><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></providedServiceAPI></providedServiceAPIs></extension><extension><name>org.apache.nifi.processors.gcp.storage.GCSFileResourceService</name><type>CONTROLLER_SERVICE</type><description>Provides a Google Compute Storage (GCS) file resource for other components.</description><tags><tag>file</tag><tag>resource</tag><tag>gcs</tag></tags><properties><property><name>Bucket</name><displayName>Bucket</displayName><description>Bucket of the object.</description><defaultValue>${gcs.bucket}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Name</name><displayName>Name</displayName><description>Name of the object.</description><defaultValue>${filename}</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>FLOWFILE_ATTRIBUTES</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><useCases><useCase><description>Fetch a specific file from GCS. The service provides higher performance compared to fetch processors when the data should be moved between different storages without any transformation.</description><notes></notes><keywords></keywords><inputRequirement>INPUT_ALLOWED</inputRequirement><configuration>"Bucket" = "${gcs.bucket}"
"Name" = "${filename}"

The "GCP Credentials Provider Service" property should specify an instance of the GCPCredentialsService in order to provide credentials for accessing the bucket.
</configuration></useCase></useCases><seeAlso><see>org.apache.nifi.processors.gcp.storage.FetchGCSObject</see></seeAlso><providedServiceAPIs><providedServiceAPI><className>org.apache.nifi.fileresource.service.api.FileResourceService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>2.5.0</version></providedServiceAPI></providedServiceAPIs></extension><extension><name>org.apache.nifi.parameter.gcp.GcpSecretManagerParameterProvider</name><type>PARAMETER_PROVIDER</type><description>Fetches parameters from GCP Secret Manager.  Each secret becomes a Parameter, which can be mapped to a Parameter Group by adding a GCP label named 'group-name'.</description><tags><tag>gcp</tag><tag>secret</tag><tag>manager</tag></tags><properties><property><name>group-name-pattern</name><displayName>Group Name Pattern</displayName><description>A Regular Expression matching on the 'group-name' label value that identifies Secrets whose parameters should be fetched. Any secrets without a 'group-name' label value that matches this Regex will not be fetched.</description><defaultValue>.*</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-project-id</name><displayName>Project ID</displayName><description>Google Cloud Project ID</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>gcp-credentials-provider-service</name><displayName>GCP Credentials Provider Service</displayName><description>The Controller Service used to obtain Google Cloud Platform credentials.</description><controllerServiceDefinition><className>org.apache.nifi.gcp.credentials.service.GCPCredentialsService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-gcp-services-api-nar</artifactId><version>2.5.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties></extension></extensions></extensionManifest>