You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ex...@apache.org on 2023/11/26 03:54:56 UTC
(nifi-site) branch asf-site updated: NIFI-12361 Updated 2.0.0-M1 documentation directory
This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/nifi-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new a450e9f NIFI-12361 Updated 2.0.0-M1 documentation directory
a450e9f is described below
commit a450e9f72b3a0cdc54c1246c2a3ddfbaeececbd1
Author: exceptionfactory <ex...@apache.org>
AuthorDate: Sat Nov 25 21:54:45 2023 -0600
NIFI-12361 Updated 2.0.0-M1 documentation directory
---
.../additionalDetails.html | 63 +
.../index.html | 1 +
.../additionalDetails.html | 75 +
.../index.html | 1 +
.../additionalDetails.html | 97 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 100 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 62 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 260 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 55 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 39 +
.../index.html | 1 +
.../additionalDetails.html | 68 +
.../index.html | 1 +
.../additionalDetails.html | 37 +
.../index.html | 1 +
.../additionalDetails.html | 144 +
.../index.html | 1 +
.../additionalDetails.html | 42 +
.../index.html | 1 +
.../additionalDetails.html | 113 +
.../index.html | 1 +
.../additionalDetails.html | 40 +
.../index.html | 1 +
.../additionalDetails.html | 75 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 114 +
.../index.html | 1 +
.../additionalDetails.html | 57 +
.../index.html | 3 +
.../index.html | 1 +
.../additionalDetails.html | 70 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 60 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 59 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 44 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 46 +
.../index.html | 1 +
.../additionalDetails.html | 43 +
.../index.html | 1 +
.../additionalDetails.html | 42 +
.../index.html | 1 +
.../additionalDetails.html | 49 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 67 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 144 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 41 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 53 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 105 +
.../index.html | 1 +
.../additionalDetails.html | 64 +
.../index.html | 1 +
.../additionalDetails.html | 53 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 79 +
.../index.html | 1 +
.../additionalDetails.html | 43 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 57 +
.../index.html | 1 +
.../additionalDetails.html | 66 +
.../index.html | 1 +
.../additionalDetails.html | 129 +
.../index.html | 1 +
.../additionalDetails.html | 187 +
.../index.html | 1 +
.../additionalDetails.html | 86 +
.../index.html | 1 +
.../additionalDetails.html | 48 +
.../index.html | 1 +
.../additionalDetails.html | 58 +
.../index.html | 1 +
.../additionalDetails.html | 57 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 2 +
.../index.html | 2 +
.../additionalDetails.html | 91 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 55 +
.../index.html | 1 +
.../additionalDetails.html | 58 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 67 +
.../index.html | 1 +
.../additionalDetails.html | 62 +
.../index.html | 1 +
.../additionalDetails.html | 62 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 4 +
.../index.html | 4 +
.../additionalDetails.html | 144 +
.../index.html | 4 +
.../index.html | 4 +
.../additionalDetails.html | 34 +
.../index.html | 1 +
.../additionalDetails.html | 34 +
.../index.html | 1 +
.../additionalDetails.html | 109 +
.../index.html | 21 +
.../vision-annotate-files.png | Bin 0 -> 297707 bytes
.../additionalDetails.html | 112 +
.../index.html | 19 +
.../vision-annotate-images.png | Bin 0 -> 291842 bytes
.../additionalDetails.html | 55 +
.../index.html | 1 +
.../SQL.gif | Bin 0 -> 30954 bytes
.../SQL2.gif | Bin 0 -> 28716 bytes
.../additionalDetails.html | 219 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 133 +
.../index.html | 1 +
.../additionalDetails.html | 45 +
.../index.html | 1 +
.../additionalDetails.html | 89 +
.../index.html | 1 +
.../additionalDetails.html | 48 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 45 +
.../index.html | 1 +
.../additionalDetails.html | 170 +
.../index.html | 1 +
.../additionalDetails.html | 143 +
.../index.html | 1 +
.../additionalDetails.html | 78 +
.../index.html | 1 +
.../additionalDetails.html | 81 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 387 +
.../index.html | 1 +
.../additionalDetails.html | 260 +
.../index.html | 1 +
.../additionalDetails.html | 1076 +
.../index.html | 1 +
.../additionalDetails.html | 205 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 65 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 179 +
.../index.html | 1 +
.../additionalDetails.html | 41 +
.../index.html | 1 +
.../additionalDetails.html | 59 +
.../index.html | 1 +
.../additionalDetails.html | 59 +
.../index.html | 1 +
.../additionalDetails.html | 77 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 44 +
.../index.html | 1 +
.../additionalDetails.html | 32 +
.../index.html | 1 +
.../additionalDetails.html | 43 +
.../index.html | 1 +
.../additionalDetails.html | 58 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 4 +
.../additionalDetails.html | 32 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 72 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../org.apache.nifi.excel.ExcelReader/index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../org.apache.nifi.avro.AvroReader/index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 199 +
.../org.apache.nifi.cef.CEFReader/index.html | 1 +
.../additionalDetails.html | 427 +
.../org.apache.nifi.csv.CSVReader/index.html | 5 +
.../index.html | 1 +
.../additionalDetails.html | 496 +
.../org.apache.nifi.grok.GrokReader/index.html | 1 +
.../additionalDetails.html | 336 +
.../org.apache.nifi.json.JsonPathReader/index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 418 +
.../org.apache.nifi.json.JsonTreeReader/index.html | 1 +
.../org.apache.nifi.lookup.ReaderLookup/index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 91 +
.../index.html | 1 +
.../additionalDetails.html | 70 +
.../org.apache.nifi.syslog.SyslogReader/index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 93 +
.../index.html | 1 +
.../additionalDetails.html | 962 +
.../org.apache.nifi.xml.XMLReader/index.html | 1 +
.../additionalDetails.html | 211 +
.../index.html | 1 +
.../additionalDetails.html | 454 +
.../org.apache.nifi.yaml.YamlTreeReader/index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 71 +
.../index.html | 1 +
.../additionalDetails.html | 75 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 292 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 210 +
.../index.html | 1 +
.../additionalDetails.html | 166 +
.../index.html | 1 +
.../additionalDetails.html | 450 +
.../index.html | 1 +
.../additionalDetails.html | 244 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 83 +
.../index.html | 1 +
.../additionalDetails.html | 67 +
.../index.html | 1 +
.../additionalDetails.html | 178 +
.../index.html | 1 +
.../additionalDetails.html | 82 +
.../index.html | 1 +
.../additionalDetails.html | 135 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 109 +
.../index.html | 1 +
.../additionalDetails.html | 118 +
.../index.html | 1 +
.../additionalDetails.html | 107 +
.../index.html | 1 +
.../additionalDetails.html | 53 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 66 +
.../index.html | 1 +
.../additionalDetails.html | 55 +
.../index.html | 1 +
.../additionalDetails.html | 45 +
.../index.html | 1 +
.../additionalDetails.html | 42 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 75 +
.../index.html | 1 +
.../additionalDetails.html | 77 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 70 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 214 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 102 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 47 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 64 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 48 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 40 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 149 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 166 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 239 +
.../index.html | 5 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 84 +
.../fork-join-enrichment.png | Bin 0 -> 600998 bytes
.../index.html | 1 +
.../additionalDetails.html | 481 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 69 +
.../index.html | 6 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 56 +
.../index.html | 1 +
.../additionalDetails.html | 44 +
.../index.html | 1 +
.../additionalDetails.html | 81 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 524 +
.../fork-join-enrichment.png | Bin 0 -> 600998 bytes
.../index.html | 4 +
.../additionalDetails.html | 40 +
.../index.html | 1 +
.../index.html | 1 +
.../ListFTP-batch-high-level-flow.png | Bin 0 -> 480307 bytes
.../ListFTP-batch-processing.png | Bin 0 -> 467655 bytes
.../additionalDetails.html | 150 +
.../index.html | 1 +
.../ListFile-batch-high-level-flow.png | Bin 0 -> 469420 bytes
.../ListFile-batch-processing.png | Bin 0 -> 468988 bytes
.../additionalDetails.html | 150 +
.../index.html | 1 +
.../ListSFTP-batch-high-level-flow.png | Bin 0 -> 467641 bytes
.../ListSFTP-batch-processing.png | Bin 0 -> 479184 bytes
.../additionalDetails.html | 150 +
.../index.html | 1 +
.../additionalDetails.html | 82 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 215 +
.../index.html | 1 +
.../additionalDetails.html | 173 +
.../index.html | 1 +
.../additionalDetails.html | 229 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 2 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 190 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 111 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 555 +
.../index.html | 1 +
.../additionalDetails.html | 633 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 46 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 67 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 180 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 390 +
.../index.html | 1 +
.../additionalDetails.html | 109 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 190 +
.../index.html | 1 +
.../additionalDetails.html | 104 +
.../index.html | 1 +
.../additionalDetails.html | 373 +
.../index.html | 1 +
.../additionalDetails.html | 41 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 353 +
.../index.html | 1 +
.../additionalDetails.html | 396 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 48 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../index.html | 1 +
.../additionalDetails.html | 74 +
.../index.html | 1 +
.../additionalDetails.html | 90 +
.../index.html | 1 +
.../additionalDetails.html | 71 +
.../index.html | 1 +
.../nifi-2.0.0-M1/css/component-usage.css | 183 +
documentation/nifi-2.0.0-M1/css/main.css | 217 +
.../nifi-2.0.0-M1/html/administration-guide.html | 10018 ++
.../nifi-2.0.0-M1/html/developer-guide.html | 4007 +
.../html/expression-language-guide.html | 5051 ++
.../nifi-2.0.0-M1/html/getting-started.html | 1600 +
.../nifi-2.0.0-M1/html/images/CopyOnWrite.png | Bin 0 -> 173743 bytes
.../nifi-2.0.0-M1/html/images/DataIngress.png | Bin 0 -> 62849 bytes
.../nifi-2.0.0-M1/html/images/Funnels.png | Bin 0 -> 202859 bytes
.../nifi-2.0.0-M1/html/images/PassByReference.png | Bin 0 -> 318283 bytes
.../html/images/UpdatingAttributes.png | Bin 0 -> 187636 bytes
.../nifi-2.0.0-M1/html/images/WebCrawler.png | Bin 0 -> 243031 bytes
.../html/images/abc-restricted-component-flow.png | Bin 0 -> 179692 bytes
.../html/images/abc-versioned-flow.png | Bin 0 -> 179788 bytes
.../html/images/access-policy-config-start.png | Bin 0 -> 104835 bytes
.../html/images/add-controller-service-window.png | Bin 0 -> 97189 bytes
.../html/images/add-flow-analysis-rule-window.png | Bin 0 -> 83135 bytes
.../html/images/add-input-port-S2S.png | Bin 0 -> 109037 bytes
.../html/images/add-output-port-S2S.png | Bin 0 -> 109298 bytes
...parameter-during-parameter-context-creation.png | Bin 0 -> 72860 bytes
.../html/images/add-parameter-provider-window.png | Bin 0 -> 59304 bytes
.../html/images/add-process-group-import.png | Bin 0 -> 21182 bytes
.../html/images/add-processor-version-example.png | Bin 0 -> 106925 bytes
.../images/add-processor-version-sort-filter.png | Bin 0 -> 101860 bytes
.../html/images/add-processor-with-tag-cloud.png | Bin 0 -> 191726 bytes
.../nifi-2.0.0-M1/html/images/add-processor.png | Bin 0 -> 207847 bytes
.../images/add-property-sensitive-value-dialog.png | Bin 0 -> 15549 bytes
.../html/images/add-registry-client.png | Bin 0 -> 19439 bytes
.../html/images/add-reporting-task-window.png | Bin 0 -> 170339 bytes
.../nifi-2.0.0-M1/html/images/addConnect.png | Bin 0 -> 800 bytes
.../html/images/align-horizontally-after.png | Bin 0 -> 75699 bytes
.../html/images/align-horizontally-before.png | Bin 0 -> 144869 bytes
.../html/images/align-vertically-after.png | Bin 0 -> 141979 bytes
.../html/images/align-vertically-before.png | Bin 0 -> 185600 bytes
.../nifi-2.0.0-M1/html/images/argon2-salt.png | Bin 0 -> 468557 bytes
.../html/images/autocomplete-parameter-example.png | Bin 0 -> 123963 bytes
.../html/images/back_pressure_full.png | Bin 0 -> 12187 bytes
.../html/images/back_pressure_indicator_hover.png | Bin 0 -> 26093 bytes
.../html/images/back_pressure_indicators.png | Bin 0 -> 27643 bytes
.../back_pressure_prediction_model_example.png | Bin 0 -> 20354 bytes
.../nifi-2.0.0-M1/html/images/bcrypt-salt.png | Bin 0 -> 159570 bytes
.../nifi-2.0.0-M1/html/images/buttonDisable.png | Bin 0 -> 755 bytes
.../nifi-2.0.0-M1/html/images/buttonEnable.png | Bin 0 -> 627 bytes
.../nifi-2.0.0-M1/html/images/buttonStart.png | Bin 0 -> 516 bytes
.../nifi-2.0.0-M1/html/images/buttonStop.png | Bin 0 -> 354 bytes
.../html/images/change-version-dialog.png | Bin 0 -> 57722 bytes
.../nifi-2.0.0-M1/html/images/change-version.png | Bin 0 -> 191552 bytes
.../html/images/cluster_connection_summary.png | Bin 0 -> 106868 bytes
.../nifi-2.0.0-M1/html/images/comments-tab.png | Bin 0 -> 26526 bytes
.../html/images/component-linking-processor.png | Bin 0 -> 203625 bytes
.../html/images/component-version-dialog.png | Bin 0 -> 38579 bytes
.../nifi-2.0.0-M1/html/images/components.png | Bin 0 -> 3624 bytes
.../configure-controller-service-properties.png | Bin 0 -> 79361 bytes
.../configure-controller-service-settings.png | Bin 0 -> 69597 bytes
.../configure-flow-analysis-rule-properties.png | Bin 0 -> 81126 bytes
.../configure-flow-analysis-rule-settings.png | Bin 0 -> 79023 bytes
.../html/images/configure-parameter-on-the-fly.png | Bin 0 -> 112424 bytes
.../configure-parameter-provider-properties.png | Bin 0 -> 51577 bytes
.../configure-parameter-provider-settings.png | Bin 0 -> 51665 bytes
...onfigure-processor-with-version-information.png | Bin 0 -> 59869 bytes
.../configure-registry-client-properties.png | Bin 0 -> 29050 bytes
.../images/configure-registry-client-settings.png | Bin 0 -> 33754 bytes
.../html/images/configure-remote-process-group.png | Bin 0 -> 35467 bytes
.../images/configure-reporting-task-properties.png | Bin 0 -> 97484 bytes
.../images/configure-reporting-task-settings.png | Bin 0 -> 70202 bytes
.../html/images/connection-settings.png | Bin 0 -> 73259 bytes
.../html/images/context-menu-parameters-option.png | Bin 0 -> 146871 bytes
.../controller-services-configure-buttons.png | Bin 0 -> 17828 bytes
.../images/controller-services-info-buttons.png | Bin 0 -> 9594 bytes
.../html/images/controller-services-tab.png | Bin 0 -> 93331 bytes
.../html/images/controller-settings-selection.png | Bin 0 -> 142806 bytes
.../html/images/convert-property-to-parameter.png | Bin 0 -> 134652 bytes
.../html/images/create-connection.png | Bin 0 -> 30851 bytes
.../html/images/create-service-ssl-context.png | Bin 0 -> 122359 bytes
.../html/images/disconnect-dialog.png | Bin 0 -> 13168 bytes
.../html/images/disconnected-node-cluster-mgt.png | Bin 0 -> 92532 bytes
.../html/images/edit-parameter-context.png | Bin 0 -> 68513 bytes
.../html/images/edit-property-dropdown.png | Bin 0 -> 46811 bytes
.../html/images/edit-property-textarea.png | Bin 0 -> 39620 bytes
.../html/images/el-param-support-help-text.png | Bin 0 -> 143979 bytes
.../images/enable-controller-service-scope.png | Bin 0 -> 48063 bytes
.../nifi-2.0.0-M1/html/images/event-attributes.png | Bin 0 -> 32912 bytes
.../nifi-2.0.0-M1/html/images/event-content.png | Bin 0 -> 32080 bytes
.../nifi-2.0.0-M1/html/images/event-details.png | Bin 0 -> 36635 bytes
.../html/images/existing-parameter-selected.png | Bin 0 -> 127719 bytes
.../html/images/existing-parameters-example.png | Bin 0 -> 85104 bytes
.../nifi-2.0.0-M1/html/images/expand-event.png | Bin 0 -> 9302 bytes
.../nifi-2.0.0-M1/html/images/expanded-events.png | Bin 0 -> 187395 bytes
.../html/images/failure-port-config.png | Bin 0 -> 76107 bytes
.../html/images/file_expiration_clock.png | Bin 0 -> 19910 bytes
.../nifi-2.0.0-M1/html/images/find-parents.png | Bin 0 -> 9148 bytes
.../flow-analysis-rules-configure-buttons.png | Bin 0 -> 17828 bytes
.../images/flow-analysis-rules-info-buttons.png | Bin 0 -> 13352 bytes
.../html/images/flow-analysis-rules-tab.png | Bin 0 -> 171567 bytes
.../html/images/flow-version-changed.png | Bin 0 -> 150555 bytes
.../html/images/getfile-permissions.png | Bin 0 -> 266410 bytes
.../nifi-2.0.0-M1/html/images/global-menu.png | Bin 0 -> 32770 bytes
.../html/images/group-creation-dialog.png | Bin 0 -> 15997 bytes
.../html/images/iconAccessPolicies.png | Bin 0 -> 780 bytes
.../nifi-2.0.0-M1/html/images/iconAddUser.png | Bin 0 -> 815 bytes
.../nifi-2.0.0-M1/html/images/iconAlert.png | Bin 0 -> 553 bytes
.../nifi-2.0.0-M1/html/images/iconConfigure.png | Bin 0 -> 944 bytes
.../nifi-2.0.0-M1/html/images/iconConnect.png | Bin 0 -> 595 bytes
.../nifi-2.0.0-M1/html/images/iconConnection.png | Bin 0 -> 1160 bytes
.../html/images/iconConvertToParameter.png | Bin 0 -> 548 bytes
.../nifi-2.0.0-M1/html/images/iconDelete.png | Bin 0 -> 574 bytes
.../nifi-2.0.0-M1/html/images/iconDetails.png | Bin 0 -> 704 bytes
.../nifi-2.0.0-M1/html/images/iconDisable.png | Bin 0 -> 533 bytes
.../nifi-2.0.0-M1/html/images/iconDisconnect.png | Bin 0 -> 618 bytes
.../nifi-2.0.0-M1/html/images/iconEdit.png | Bin 0 -> 652 bytes
.../nifi-2.0.0-M1/html/images/iconEnable.png | Bin 0 -> 359 bytes
.../nifi-2.0.0-M1/html/images/iconFetch.png | Bin 0 -> 747 bytes
.../nifi-2.0.0-M1/html/images/iconFunnel.png | Bin 0 -> 1052 bytes
.../nifi-2.0.0-M1/html/images/iconGoTo.png | Bin 0 -> 385 bytes
.../nifi-2.0.0-M1/html/images/iconInfo.png | Bin 0 -> 562 bytes
.../nifi-2.0.0-M1/html/images/iconInputPort.png | Bin 0 -> 623 bytes
.../nifi-2.0.0-M1/html/images/iconLabel.png | Bin 0 -> 788 bytes
.../nifi-2.0.0-M1/html/images/iconLineage.png | Bin 0 -> 472 bytes
.../nifi-2.0.0-M1/html/images/iconLoadBalance.png | Bin 0 -> 792 bytes
.../html/images/iconLocallyModified.png | Bin 0 -> 1247 bytes
.../html/images/iconLocallyModifiedStale.png | Bin 0 -> 1296 bytes
.../nifi-2.0.0-M1/html/images/iconNotSecure.png | Bin 0 -> 406 bytes
.../nifi-2.0.0-M1/html/images/iconOffload.png | Bin 0 -> 589 bytes
.../nifi-2.0.0-M1/html/images/iconOutputPort.png | Bin 0 -> 811 bytes
.../nifi-2.0.0-M1/html/images/iconProcessGroup.png | Bin 0 -> 883 bytes
.../nifi-2.0.0-M1/html/images/iconProcessor.png | Bin 0 -> 1596 bytes
.../html/images/iconRemoteProcessGroup.png | Bin 0 -> 848 bytes
.../nifi-2.0.0-M1/html/images/iconResize.png | Bin 0 -> 136 bytes
.../nifi-2.0.0-M1/html/images/iconRun.png | Bin 0 -> 336 bytes
.../nifi-2.0.0-M1/html/images/iconSecure.png | Bin 0 -> 386 bytes
.../nifi-2.0.0-M1/html/images/iconStale.png | Bin 0 -> 1439 bytes
.../nifi-2.0.0-M1/html/images/iconStart.png | Bin 0 -> 483 bytes
.../nifi-2.0.0-M1/html/images/iconStop.png | Bin 0 -> 206 bytes
.../nifi-2.0.0-M1/html/images/iconSyncFailure.png | Bin 0 -> 973 bytes
.../nifi-2.0.0-M1/html/images/iconTerminate.png | Bin 0 -> 4957 bytes
.../html/images/iconTransmissionActive.png | Bin 0 -> 760 bytes
.../html/images/iconTransmissionInactive.png | Bin 0 -> 837 bytes
.../nifi-2.0.0-M1/html/images/iconUpToDate.png | Bin 0 -> 996 bytes
.../nifi-2.0.0-M1/html/images/iconUserPolicies.png | Bin 0 -> 633 bytes
.../html/images/import-version-dialog.png | Bin 0 -> 107267 bytes
.../html/images/import-xyz-flow-fails.png | Bin 0 -> 111431 bytes
.../individual-parameter-context-polices.png | Bin 0 -> 67042 bytes
.../html/images/install-download-link.png | Bin 0 -> 63965 bytes
.../html/images/invalid-processor.png | Bin 0 -> 24908 bytes
.../html/images/keytabCredentialsService-pg.png | Bin 0 -> 91943 bytes
.../html/images/keytabCredentialsService-rpg.png | Bin 0 -> 92517 bytes
.../keytabcredentialsservice-permissions.png | Bin 0 -> 257318 bytes
.../nifi-2.0.0-M1/html/images/lineage-flowfile.png | Bin 0 -> 809 bytes
.../html/images/lineage-graph-annotated.png | Bin 0 -> 40282 bytes
.../html/images/load_balance_active_connection.png | Bin 0 -> 35045 bytes
.../images/load_balance_compression_options.png | Bin 0 -> 83986 bytes
.../images/load_balance_configured_connection.png | Bin 0 -> 30628 bytes
.../images/load_balance_distributed_connection.png | Bin 0 -> 12577 bytes
.../html/images/local-changes-pg-inside.png | Bin 0 -> 270408 bytes
.../html/images/local-changes-pg-selected.png | Bin 0 -> 198329 bytes
documentation/nifi-2.0.0-M1/html/images/login.png | Bin 0 -> 11684 bytes
documentation/nifi-2.0.0-M1/html/images/ncm.png | Bin 0 -> 89813 bytes
.../html/images/new-parameter-referenced.png | Bin 0 -> 128579 bytes
.../html/images/nifi-app-log-ui-available.png | Bin 0 -> 270149 bytes
.../images/nifi-application-running-browser.png | Bin 0 -> 678902 bytes
.../html/images/nifi-connection-bend-points.png | Bin 0 -> 105840 bytes
.../html/images/nifi-connection-menu.png | Bin 0 -> 26595 bytes
.../nifi-2.0.0-M1/html/images/nifi-connection.png | Bin 0 -> 88506 bytes
.../html/images/nifi-flow-authenticated.png | Bin 0 -> 145051 bytes
.../html/images/nifi-home-dir-listing.png | Bin 0 -> 458278 bytes
.../nifi-2.0.0-M1/html/images/nifi-legacy-salt.png | Bin 0 -> 110571 bytes
.../nifi-2.0.0-M1/html/images/nifi-login.png | Bin 0 -> 61992 bytes
.../nifi-2.0.0-M1/html/images/nifi-navigation.png | Bin 0 -> 173101 bytes
.../html/images/nifi-process-group-menu.png | Bin 0 -> 82534 bytes
.../html/images/nifi-processor-menu.png | Bin 0 -> 71631 bytes
.../nifi-2.0.0-M1/html/images/nifi-rpg-menu.png | Bin 0 -> 91924 bytes
...tls-standalone-external-certificate-diagram.png | Bin 0 -> 110528 bytes
.../html/images/nifi-toolbar-components.png | Bin 0 -> 122427 bytes
.../html/images/nifi-users-dialog.png | Bin 0 -> 36313 bytes
.../html/images/nifi_pc1_parameters.png | Bin 0 -> 79044 bytes
.../html/images/nifi_pc1_parameters_new.png | Bin 0 -> 85571 bytes
.../html/images/offloaded-node-cluster-mgt.png | Bin 0 -> 91953 bytes
.../html/images/offloading-node-cluster-mgt.png | Bin 0 -> 91042 bytes
.../nifi-2.0.0-M1/html/images/openssl-salt.png | Bin 0 -> 119807 bytes
.../html/images/override_policy_copy_empty.png | Bin 0 -> 60314 bytes
.../html/images/parameter-contexts-selection.png | Bin 0 -> 154709 bytes
.../html/images/parameter-contexts-settings.png | Bin 0 -> 67836 bytes
.../images/parameter-provider-edit-buttons.png | Bin 0 -> 15950 bytes
.../parameter-provider-tasks-info-buttons.png | Bin 0 -> 13352 bytes
.../html/images/parameter-providers-tab.png | Bin 0 -> 57406 bytes
.../parameters-validate-affected-components.png | Bin 0 -> 141063 bytes
.../nifi-2.0.0-M1/html/images/parent-found.png | Bin 0 -> 12890 bytes
.../nifi-2.0.0-M1/html/images/pbkdf2-salt.png | Bin 0 -> 143367 bytes
.../nifi-2.0.0-M1/html/images/pc1_parameters.png | Bin 0 -> 85249 bytes
.../html/images/primary-node-cluster-mgt.png | Bin 0 -> 96308 bytes
.../html/images/primary-node-processor.png | Bin 0 -> 235057 bytes
.../images/primary-node-processors-summary.png | Bin 0 -> 319666 bytes
.../html/images/process-group-anatomy.png | Bin 0 -> 72758 bytes
.../images/process-group-configuration-options.png | Bin 0 -> 177225 bytes
.../process-group-configuration-parameters.png | Bin 0 -> 145217 bytes
.../images/process-group-configuration-window.png | Bin 0 -> 279355 bytes
.../process-group-controller-services-scope.png | Bin 0 -> 200791 bytes
.../process-group-modify-policy-add-user2.png | Bin 0 -> 41612 bytes
.../html/images/process-group-modify-policy.png | Bin 0 -> 62122 bytes
.../process-group-parameter-context-menu.png | Bin 0 -> 79032 bytes
.../process-group-version-control-stopped.png | Bin 0 -> 140886 bytes
.../images/process-group-view-policy-add-user2.png | Bin 0 -> 41444 bytes
.../html/images/process-group-view-policy.png | Bin 0 -> 62576 bytes
.../html/images/processor-anatomy.png | Bin 0 -> 59072 bytes
.../html/images/processor-change-version.png | Bin 0 -> 82455 bytes
.../html/images/processor-connection-bubble.png | Bin 0 -> 27301 bytes
.../html/images/processor-cs-version-match.png | Bin 0 -> 40647 bytes
.../processor-cs-version-mismatch-config.png | Bin 0 -> 43638 bytes
.../processor-cs-version-mismatch-warnings.png | Bin 0 -> 89339 bytes
.../images/processor-inherited-modify-policy.png | Bin 0 -> 50459 bytes
.../html/images/processor-modify-policy.png | Bin 0 -> 73421 bytes
.../images/processor-replacement-modify-policy.png | Bin 0 -> 43220 bytes
.../images/processor-replacement-view-policy.png | Bin 0 -> 42975 bytes
.../processor-version-information-example.png | Bin 0 -> 31717 bytes
.../html/images/processor-view-policy.png | Bin 0 -> 73720 bytes
.../nifi-2.0.0-M1/html/images/properties-tab.png | Bin 0 -> 33388 bytes
.../html/images/provenance-annotated.png | Bin 0 -> 111369 bytes
.../nifi-2.0.0-M1/html/images/provenance-table.png | Bin 0 -> 286522 bytes
.../html/images/puthdfs-no-kerberosCS.png | Bin 0 -> 159180 bytes
.../html/images/puthdfs-permissions.png | Bin 0 -> 238283 bytes
.../html/images/puthdfs-properties.png | Bin 0 -> 164244 bytes
.../html/images/puthdfs-properties_2.png | Bin 0 -> 162869 bytes
.../reference-parameter-available-parameters.png | Bin 0 -> 60376 bytes
.../html/images/reference-parameter-option.png | Bin 0 -> 54408 bytes
.../html/images/registry-client-added.png | Bin 0 -> 54903 bytes
.../html/images/registry-clients-tab.png | Bin 0 -> 57563 bytes
.../html/images/relationships-tab.png | Bin 0 -> 43445 bytes
.../html/images/remote-group-anatomy.png | Bin 0 -> 51949 bytes
.../html/images/remote-group-ports-dialog.png | Bin 0 -> 95111 bytes
.../html/images/remote-port-connection-status.png | Bin 0 -> 106748 bytes
.../html/images/replacetext-processor-added.png | Bin 0 -> 131342 bytes
.../html/images/reporting-tasks-edit-buttons.png | Bin 0 -> 18756 bytes
.../html/images/reporting-tasks-info-buttons.png | Bin 0 -> 13815 bytes
.../html/images/reporting-tasks-tab.png | Bin 0 -> 70152 bytes
.../nifi-2.0.0-M1/html/images/restricted.png | Bin 0 -> 603 bytes
.../nifi-2.0.0-M1/html/images/revert-failure.png | Bin 0 -> 144751 bytes
.../html/images/revert-local-changes-dialog.png | Bin 0 -> 71465 bytes
.../nifi-2.0.0-M1/html/images/revert-success.png | Bin 0 -> 135376 bytes
.../nifi-2.0.0-M1/html/images/s2s-rproxy-http.svg | 18 +
.../html/images/s2s-rproxy-portnumber.svg | 18 +
.../html/images/s2s-rproxy-servername.svg | 18 +
.../html/images/save-flow-version-commit.png | Bin 0 -> 70067 bytes
.../html/images/save-flow-version-dialog.png | Bin 0 -> 48948 bytes
.../nifi-2.0.0-M1/html/images/scheduling-tab.png | Bin 0 -> 43830 bytes
.../nifi-2.0.0-M1/html/images/scrypt-salt.png | Bin 0 -> 160684 bytes
.../nifi-2.0.0-M1/html/images/search-events.png | Bin 0 -> 43620 bytes
.../html/images/search-receive-event-abc.png | Bin 0 -> 44965 bytes
.../html/images/settings-general-tab.png | Bin 0 -> 73516 bytes
.../nifi-2.0.0-M1/html/images/settings-tab.png | Bin 0 -> 50039 bytes
.../html/images/show-local-changes-dialog.png | Bin 0 -> 67272 bytes
.../nifi-2.0.0-M1/html/images/simple-flow.png | Bin 0 -> 63663 bytes
.../html/images/start-version-control.png | Bin 0 -> 187732 bytes
.../nifi-2.0.0-M1/html/images/stats-history.png | Bin 0 -> 54293 bytes
.../html/images/stop-version-control-dialog.png | Bin 0 -> 17176 bytes
.../html/images/stop-version-control.png | Bin 0 -> 191915 bytes
.../html/images/summary-annotated.png | Bin 0 -> 102732 bytes
.../nifi-2.0.0-M1/html/images/summary-table.png | Bin 0 -> 87390 bytes
.../html/images/summary_connections.png | Bin 0 -> 113698 bytes
...ys_admin-restricted-component-access-policy.png | Bin 0 -> 64926 bytes
.../html/images/terminated-thread.png | Bin 0 -> 6489 bytes
.../html/images/test_user-import-abc-flow.png | Bin 0 -> 105856 bytes
.../html/images/test_user-import-success.png | Bin 0 -> 147491 bytes
.../html/images/test_user-import-xyz-flow.png | Bin 0 -> 105959 bytes
...t_user-restricted-component-read-filesystem.png | Bin 0 -> 79875 bytes
..._user-restricted-component-write-filesystem.png | Bin 0 -> 77687 bytes
.../images/test_user-revert-local-changes-2.png | Bin 0 -> 109502 bytes
.../html/images/test_user-revert-local-changes.png | Bin 0 -> 109825 bytes
.../html/images/update-parameter-context.png | Bin 0 -> 147201 bytes
.../html/images/user-creation-dialog.png | Bin 0 -> 12866 bytes
.../html/images/user-policies-detail.png | Bin 0 -> 107077 bytes
.../nifi-2.0.0-M1/html/images/user-policies.png | Bin 0 -> 40015 bytes
.../html/images/user1-create-connection.png | Bin 0 -> 114375 bytes
.../html/images/user1-edit-connection.png | Bin 0 -> 135073 bytes
.../html/images/user1-full-access.png | Bin 0 -> 137698 bytes
.../html/images/user2-can-connect.png | Bin 0 -> 123437 bytes
.../html/images/user2-connected-processors.png | Bin 0 -> 126709 bytes
.../html/images/user2-edit-connection.png | Bin 0 -> 136740 bytes
.../html/images/user2-edit-processor.png | Bin 0 -> 137442 bytes
.../html/images/user2-moved-processor.png | Bin 0 -> 131055 bytes
.../html/images/user2-no-connection.png | Bin 0 -> 119358 bytes
.../html/images/user2-no-edit-connection.png | Bin 0 -> 145520 bytes
.../html/images/user2-restricted-access.png | Bin 0 -> 136429 bytes
.../nifi-2.0.0-M1/html/images/valid-processor.png | Bin 0 -> 24664 bytes
.../images/verify-release-gpg-and-checksums.png | Bin 0 -> 547141 bytes
.../html/images/version-state-summary-page.png | Bin 0 -> 162722 bytes
.../html/images/version-states-display.png | Bin 0 -> 184878 bytes
.../html/images/versioned-flow-imported.png | Bin 0 -> 145972 bytes
.../html/images/versioned-process-group.png | Bin 0 -> 142275 bytes
.../nifi-2.0.0-M1/html/images/xyz-flow.png | Bin 0 -> 180851 bytes
.../html/images/xyz-process-group.png | Bin 0 -> 147684 bytes
.../images/zero-leader-cluster-http-access.png | Bin 0 -> 77567 bytes
.../html/images/zero-leader-cluster.png | Bin 0 -> 67158 bytes
.../nifi-2.0.0-M1/html/images/zero-leader-node.png | Bin 0 -> 44667 bytes
.../nifi-2.0.0-M1/html/misc/WebCrawler.json | 1 +
.../nifi-2.0.0-M1/html/nifi-in-depth.html | 887 +
documentation/nifi-2.0.0-M1/html/overview.html | 897 +
.../nifi-2.0.0-M1/html/python-developer-guide.html | 1260 +
.../nifi-2.0.0-M1/html/record-path-guide.html | 2429 +
.../nifi-2.0.0-M1/html/toolkit-guide.html | 1784 +
documentation/nifi-2.0.0-M1/html/user-guide.html | 5758 ++
documentation/nifi-2.0.0-M1/html/walkthroughs.html | 2078 +
.../nifi-2.0.0-M1/images/bgBannerFoot.png | Bin 0 -> 189 bytes
documentation/nifi-2.0.0-M1/images/bgHeader.png | Bin 0 -> 1455 bytes
documentation/nifi-2.0.0-M1/index.html | 7371 ++
documentation/nifi-2.0.0-M1/js/application.js | 404 +
.../nifi/assets/jquery/dist/jquery.min.js | 2 +
documentation/nifi-2.0.0-M1/nifi/images/nifi16.ico | Bin 0 -> 1150 bytes
.../nifi-2.0.0-M1/rest-api/images/bgNifiLogo.png | Bin 0 -> 5931 bytes
.../nifi-2.0.0-M1/rest-api/images/nifi16.ico | Bin 0 -> 1150 bytes
documentation/nifi-2.0.0-M1/rest-api/index.html | 90858 +++++++++++++++++++
.../nifi/assets/jquery/dist/jquery.min.js | 2 +
documentation/nifi/images/nifi16.ico | Bin 0 -> 1150 bytes
899 files changed, 157412 insertions(+)
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-airtable-nar/2.0.0-M1/org.apache.nifi.processors.airtable.QueryAirtableTable/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-airtable-nar/2.0.0-M1/org.apache.nifi.processors.airtable.QueryAirtableTable/additionalDetails.html
new file mode 100644
index 0000000..50086b5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-airtable-nar/2.0.0-M1/org.apache.nifi.processors.airtable.QueryAirtableTable/additionalDetails.html
@@ -0,0 +1,63 @@
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<head>
+ <meta charset="utf-8"/>
+ <title>QueryAirtableTable</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+ <style>
+h2 {margin-top: 4em}
+h3 {margin-top: 3em}
+td {text-align: left}
+ </style>
+</head>
+
+<body>
+
+<h1>QueryAirtableTable</h1>
+
+<h3>Description</h3>
+<p>
+ Airtable is a spreadsheet-database hybrid. In Airtable an application is called base and each base can have multiple tables.
+ A table consists of records (rows) and each record can have multiple fields (columns).
+ The QueryAirtableTable processor can query records from a single base and table via Airtable's REST API.
+ The processor utilizes streams to be able to handle a large number of records.
+ It can also split large record sets to multiple FlowFiles just like a database processor.
+</p>
+
+<h3>API Key</h3>
+<p>
+ Airtable REST API calls requires an API Key that needs to be passed in a request. An Airtable account is required to generate an API Key.
+</p>
+
+<h3>API rate limit</h3>
+<p>
+ The Airtable REST API limits the number of requests that can be sent on a per-base basis to avoid bottlenecks. Currently, this limit is 5 requests per second per base.
+ If this limit is exceeded you can't make another request for 30 seconds.
+ It's your responsibility to handle this rate limit via configuring Yield Duration and Run Schedule properly.
+ It is recommended to start off with the default settings and to increase both parameters when rate limit issues occur.
+</p>
+
+<h3>Metadata API</h3>
+<p>
+ Currently the Metadata API of Airtable is unstable, and we don't provide a way to use it.
+ Until it becomes stable you can set up a ConvertRecord or MergeRecord processor with a JsonTreeReader to read the content and convert it into a Record with schema.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-airtable-nar/2.0.0-M1/org.apache.nifi.processors.airtable.QueryAirtableTable/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-airtable-nar/2.0.0-M1/org.apache.nifi.processors.airtable.QueryAirtableTable/index.html
new file mode 100644
index 0000000..0e66cf9
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-airtable-nar/2.0.0-M1/org.apache.nifi.processors.airtable.QueryAirtableTable/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryAirtableTable</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryAirtableTable</h1><h2>Description: </h2><p>Query records from an Airtable table. Records [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html
new file mode 100644
index 0000000..0659552
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.ConsumeAMQP/additionalDetails.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>ConsumeAMQP</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+ This processor consumes messages from AMQP messaging queue and converts them to a FlowFile to be routed to the next component in the flow.
+ At the time of writing this document the supported AMQP protocol version is v0.9.1.
+</p>
+<p>
+ The component is based on <a href="https://www.rabbitmq.com/api-guide.html">RabbitMQ Client API</a>
+ <a href="https://www.rabbitmq.com/getstarted.html">The following guide and tutorial</a> may also help you to brush up on some of the AMQP basics.
+</p>
+<p>
+ This processor does two things. It constructs FlwFile by extracting information from the consumed AMQP message (both body and attributes).
+ Once message is consumed a FlowFile is constructed. The message body is written to a FlowFile and its <i>com.rabbitmq.client.AMQP.BasicProperties</i>
+ are transfered into the FlowFile as attributes. AMQP attribute names are prefixed with <i>amqp$</i> prefix.
+</p>
+<h2>AMQP Properties</h2>
+<p>
+ The following is the list of available standard AMQP properties which may come with the message: <i>("amqp$contentType", "amqp$contentEncoding",
+ "amqp$headers", "amqp$deliveryMode", "amqp$priority", "amqp$correlationId", "amqp$replyTo",
+ "amqp$expiration", "amqp$messageId", "amqp$timestamp", "amqp$type", "amqp$userId", "amqp$appId",
+ "amqp$clusterId", "amqp$routingKey")</i>
+</p>
+<h2>Configuration Details</h2>
+<p>
+ At the time of writing this document it only defines the essential configuration properties which are suitable for most cases.
+ Other properties will be defined later as this component progresses.
+ Configuring PublishAMQP:
+</p>
+<ol>
+ <li><b>Queue</b> - [REQUIRED] the name of AMQP queue the messages will retrieved from. Usually provided by administrator (e.g., 'amq.direct')
+ </li>
+ <li><b>Host Name</b> - [REQUIRED] the name of the host where AMQP broker is running.
+ Usually provided by administrator (e.g., 'myhost.com'). Defaults to 'localhost'.
+ </li>
+ <li><b>Port</b> - [REQUIRED] the port number where AMQP broker is running.
+ Usually provided by the administrator (e.g., '2453'). Defaults to '5672'.
+ </li>
+ <li><b>User Name</b> - [REQUIRED] user name to connect to AMQP broker.
+ Usually provided by the administrator (e.g., 'me'). Defaults to 'guest'.
+ </li>
+ <li><b>Password</b> - [REQUIRED] password to use with user name to connect to AMQP broker.
+ Usually provided by the administrator. Defaults to 'guest'.
+ </li>
+ <li><b>Use Certificate Authentication</b> - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password.
+ This can only be used in conjunction with SSL. Defaults to 'false'.
+ </li>
+ <li><b>Virtual Host</b> - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security.
+ Please refer to <a href="http://blog.dtzq.com/2012/06/rabbitmq-users-and-virtual-hosts.html">this blog</a> for more details on Virtual Host.
+ </li>
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.ConsumeAMQP/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.ConsumeAMQP/index.html
new file mode 100644
index 0000000..0b60628
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.ConsumeAMQP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeAMQP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeAMQP</h1><h2>Description: </h2><p>Consumes AMQP Messages from an AMQP Broker using the AMQP 0. [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html
new file mode 100644
index 0000000..7391b39
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.PublishAMQP/additionalDetails.html
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PublishAMQP</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+ This processor publishes the contents of the incoming FlowFile to an AMQP-based messaging system.
+ At the time of writing this document the supported AMQP protocol version is v0.9.1.
+</p>
+<p>
+ The component is based on <a href="https://www.rabbitmq.com/api-guide.html">RabbitMQ Client API</a>
+ <a href="https://www.rabbitmq.com/getstarted.html">The following guide and tutorial</a> may also help you to brush up on some of the AMQP basics.
+</p>
+<p>
+ This processor does two things. It constructs AMQP Message by extracting FlowFile contents (both body and attributes).
+ Once message is constructed it is sent to an AMQP Exchange.
+ AMQP Properties will be extracted from the FlowFile and converted to <i>com.rabbitmq.client.AMQP.BasicProperties</i> to be sent
+ along with the message. Upon success the incoming FlowFile is transfered to <i>success</i> Relationship and upon failure FlowFile is
+ penalized and transfered to the <i>failure</i> Relationship.
+</p>
+<h2>Where did my message go?</h2>
+<p>
+ In a typical AMQP exchange model, the message that is sent to an AMQP Exchange will be routed based on the <i>Routing Key</i>
+ to its final destination in the <i>Queue</i>. It's called <b>Binding</b>. If due to some misconfiguration the binding between the <i>Exchange, Routing Key
+ and the Queue</i> is not set up, the message will have no final destination and will return (i.e., the data will not make it to the queue).
+ If that happens you will see a log in both app-log and bulletin stating to that effect. Fixing the binding (normally done by AMQP administrator)
+ will resolve the issue.
+</p>
+<h2>AMQP Properties</h2>
+<p>
+ Attributes extracted from the FlowFile are considered candidates for AMQP
+ properties if their names are prefixed with <i>amqp$</i> (e.g., amqp$contentType=text/xml). To enrich message with additional AMQP properties
+ you may use <b>UpdateAttribute</b> processor between the source processor and PublishAMQP processor.
+ The following is the list of available standard AMQP properties: <i>("amqp$contentType", "amqp$contentEncoding",
+ "amqp$headers", "amqp$deliveryMode", "amqp$priority", "amqp$correlationId", "amqp$replyTo",
+ "amqp$expiration", "amqp$messageId", "amqp$timestamp", "amqp$type", "amqp$userId", "amqp$appId",
+ "amqp$clusterId")</i>
+</p>
+<h2>Configuration Details</h2>
+<p>
+ At the time of writing this document it only defines the essential configuration properties which are suitable for most cases.
+ Other properties will be defined later as this component progresses.
+ Configuring PublishAMQP:
+</p>
+<ol>
+ <li><b>Exchange Name</b> - [OPTIONAL] the name of AMQP exchange the messages will be sent to. Usually provided by the administrator (e.g., 'amq.direct')
+ It is an optional property. If kept empty the messages will be sent to a default AMQP exchange. More on AMQP Exchanges could be found
+ <a href="https://www.rabbitmq.com/tutorials/amqp-concepts.html">here</a>.
+ </li>
+ <li><b>Routing Key</b> - [REQUIRED] the name of the routing key that will be used by AMQP to route messages from the exchange to destination queue(s).
+ Usually provided by administrator (e.g., 'myKey')
+ In the event when messages are sent to a default exchange this property corresponds to a destination queue name, otherwise a binding from the Exchange to a Queue via
+ Routing Key must be set (usually by the AMQP administrator). More on AMQP Exchanges and Bindings could be found
+ <a href="https://www.rabbitmq.com/tutorials/amqp-concepts.html">here</a>.
+ </li>
+ <li><b>Host Name</b> - [REQUIRED] the name of the host where AMQP broker is running.
+ Usually provided by administrator (e.g., 'myhost.com'). Defaults to 'localhost'.
+ </li>
+ <li><b>Port</b> - [REQUIRED] the port number where AMQP broker is running.
+ Usually provided by the administrator (e.g., '2453'). Defaults to '5672'.
+ </li>
+ <li><b>User Name</b> - [REQUIRED] user name to connect to AMQP broker.
+ Usually provided by the administrator (e.g., 'me'). Defaults to 'guest'.
+ </li>
+ <li><b>Password</b> - [REQUIRED] password to use with user name to connect to AMQP broker.
+ Usually provided by the administrator. Defaults to 'guest'.
+ </li>
+ <li><b>Use Certificate Authentication</b> - [OPTIONAL] whether or not to use the SSL certificate common name for authentication rather than user name/password.
+ This can only be used in conjunction with SSL. Defaults to 'false'.
+ </li>
+ <li><b>Virtual Host</b> - [OPTIONAL] Virtual Host name which segregates AMQP system for enhanced security.
+ Please refer to <a href="http://blog.dtzq.com/2012/06/rabbitmq-users-and-virtual-hosts.html">this blog</a> for more details on Virtual Host.
+ </li>
+
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.PublishAMQP/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.PublishAMQP/index.html
new file mode 100644
index 0000000..695dd41
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-amqp-nar/2.0.0-M1/org.apache.nifi.amqp.processors.PublishAMQP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishAMQP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishAMQP</h1><h2>Description: </h2><p>Creates an AMQP Message from the contents of a FlowFile and [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-apicurio-nar/2.0.0-M1/org.apache.nifi.apicurio.schemaregistry.ApicurioSchemaRegistry/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-apicurio-nar/2.0.0-M1/org.apache.nifi.apicurio.schemaregistry.ApicurioSchemaRegistry/index.html
new file mode 100644
index 0000000..6715be8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-apicurio-nar/2.0.0-M1/org.apache.nifi.apicurio.schemaregistry.ApicurioSchemaRegistry/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ApicurioSchemaRegistry</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ApicurioSchemaRegistry</h1><h2>Description: </h2><p>Provides a Schema Registry that intera [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-processors-nar/2.0.0-M1/org.apache.nifi.processors.asana.GetAsanaObject/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-processors-nar/2.0.0-M1/org.apache.nifi.processors.asana.GetAsanaObject/additionalDetails.html
new file mode 100644
index 0000000..e4886d2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-processors-nar/2.0.0-M1/org.apache.nifi.processors.asana.GetAsanaObject/additionalDetails.html
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>GetAsanaObject</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+ <style>
+ h2 {margin-top: 4em}
+ h3 {margin-top: 3em}
+ td {text-align: left}
+ </style>
+</head>
+
+<body>
+
+<h1>GetAsanaObject</h1>
+
+<h3>Description</h3>
+<p>
+ This processor collects various objects (eg. tasks, comments, etc...) from Asana via the specified
+ <code>AsanaClientService</code>. When the processor started for the first time with a given configuration
+ it collects each of the objects matching the user specified criteria, and emits <code>FlowFile</code>s
+ of each on the <code>NEW</code> relationship. Then, it polls Asana in the frequency of the configured <em>Run Schedule</em>
+ and detects changes by comparing the object fingerprints. When there are updates, it emits them through
+ the <code>UPDATED</code> and <code>REMOVED</code> relationships, respectively.
+</p>
+
+<h3>FlowFile contents & attributes</h3>
+<p>
+ Each emitted <code>FlowFile</code> contains the Json representation of the fetched Asana object. These can be
+ processed further via the respective processors, that accept text data in this format. The <code>FlowFile</code>s
+ emitted from the <code>REMOVED</code> relationship have no content, because the actual data is not stored in the
+ processor, and so there is no way to retrieve the deleted content.<br />
+ <br />
+ Each <code>FlowFile</code>, regardless to which relationship they were emitted from, have an <code>asana.gid</code>
+ attribute set, which contain the ID of the object in Asana. These IDs are globally unique within the Asana instance,
+ regardless of what type of object they were assigned to. In case of <em>Events</em>, these IDs are generated by the
+ client, because Asana does not keep track of these objects.
+</p>
+
+<h3>Object fingerprints</h3>
+<p>
+ These are used only for content change detection.<br />
+ <br />
+ Fingerprints are generally calculated by applying an <code>SHA-512</code> algorithm on the retrieved object. In case
+ of immutable objects, like <em>Attachments</em>, these fingerprints are static, so <em>update</em>s (which is impossible
+ anyway) are not detected. In case of <em>Projects</em> and <em>Tasks</em>, where the last modification time is available,
+ these timestamps are stored as fingerprints.
+</p>
+
+<h3>Batch size</h3>
+<p>
+ By default, this processor emits each fetched object from Asana in a separate <code>FlowFile</code>. This is usually OK
+ for a workspace having low traffic, and thus generating data in low rate. For workspaces with high volume of traffic,
+ it is advisable to set the batch size to a reasonably high value, to have better performance. With this value set to
+ something other than the default (1), the processor will emit <code>FlowFile</code>s that have multiple items batched
+ together in a Json array, but in exchange, without having the <code>asana.gid</code> attribute set.
+</p>
+
+<h3>Configuring filters, filtering by name</h3>
+<p>
+ In case of collecting some objects, like <em>Project Events</em>, <em>Tasks</em>, and <em>Team Members</em>, the processor
+ requires/allows defining filters. In example: if you would like to collect <em>Tasks</em>, then you need to define the project
+ from where the tasks you would like to collect.<br />
+ <br />
+ In these cases, when the filters refer to some parent object, you need to provide its name in the configuration, in
+ case-sensitive manner. Another important note to keep in mind, Asana lets the users create multiple objects with the
+ same name. In example: you can create two projects with name 'My project'. But when you need to refer to this project
+ by its name, it is impossible to figure out which 'My project' you intended to refer to, therefore these situations
+ should be avoided. In such cases, this processor picks the first one returned by Asana when listing them. This is not
+ random, but the ordering is not guaranteed.
+</p>
+
+<h3>Further reading about Asana</h3>
+<p>
+<ul>
+ <li><a href="https://academy.asana.com">Asana Academy</a></li>
+ <li><a href="https://asana.com/guide">Asana Guide</a></li>
+ <li><a href="https://developers.asana.com/docs">Asana Developer Documentation</a></li>
+ <li><a href="https://github.com/Asana/java-asana/">Java client library for the Asana API</a></li>
+</ul>
+</p>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-processors-nar/2.0.0-M1/org.apache.nifi.processors.asana.GetAsanaObject/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-processors-nar/2.0.0-M1/org.apache.nifi.processors.asana.GetAsanaObject/index.html
new file mode 100644
index 0000000..8f04f4d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-processors-nar/2.0.0-M1/org.apache.nifi.processors.asana.GetAsanaObject/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAsanaObject</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAsanaObject</h1><h2>Description: </h2><p>This processor collects data from Asana</p><p><a href= [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-services-nar/2.0.0-M1/org.apache.nifi.controller.asana.StandardAsanaClientProviderService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-services-nar/2.0.0-M1/org.apache.nifi.controller.asana.StandardAsanaClientProviderService/index.html
new file mode 100644
index 0000000..0eabb96
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-asana-services-nar/2.0.0-M1/org.apache.nifi.controller.asana.StandardAsanaClientProviderService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardAsanaClientProviderService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardAsanaClientProviderService</h1><h2>Description: </h2><p>Common service [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.ConvertAvroToJSON/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.ConvertAvroToJSON/index.html
new file mode 100644
index 0000000..2490384
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.ConvertAvroToJSON/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConvertAvroToJSON</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConvertAvroToJSON</h1><h2>Description: </h2><p>Converts a Binary Avro record into a JSON object [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.ExtractAvroMetadata/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.ExtractAvroMetadata/index.html
new file mode 100644
index 0000000..da4c84f
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.ExtractAvroMetadata/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractAvroMetadata</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractAvroMetadata</h1><h2>Description: </h2><p>Extracts metadata from the header of an Avro [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.SplitAvro/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.SplitAvro/index.html
new file mode 100644
index 0000000..cb60a6b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-avro-nar/2.0.0-M1/org.apache.nifi.processors.avro.SplitAvro/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SplitAvro</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SplitAvro</h1><h2>Description: </h2><p>Splits a binary encoded Avro datafile into smaller files based o [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.aws.schemaregistry.AmazonGlueSchemaRegistry/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.aws.schemaregistry.AmazonGlueSchemaRegistry/index.html
new file mode 100644
index 0000000..5b4d611
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.aws.schemaregistry.AmazonGlueSchemaRegistry/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AmazonGlueSchemaRegistry</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AmazonGlueSchemaRegistry</h1><h2>Description: </h2><p>Provides a Schema Registry that in [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.parameter.aws.AwsSecretsManagerParameterProvider/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.parameter.aws.AwsSecretsManagerParameterProvider/additionalDetails.html
new file mode 100644
index 0000000..5974197
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.parameter.aws.AwsSecretsManagerParameterProvider/additionalDetails.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>AWSSecretsManagerParameterProvider</title>
+
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <h3>Mapping AWS Secrets to Parameter Contexts</h3>
+
+ <p>
+ The AwsSecretsManagerParameterProvider maps a Secret to a Parameter Context, with key/value pairs in the Secret
+ mapping to parameters. To create a compatible secret from the AWS Console:
+ </p>
+
+ <ol>
+ <li>From the Secrets Manager service, click the "Store a new Secret" button</li>
+ <li>Select "Other type of secret"</li>
+ <li>Under "Key/value", enter your parameters, with the parameter names being the keys and the parameter values
+ being the values. Click Next.</li>
+ <li>Enter the Secret name. This will determine which Parameter Context receives the parameters. Continue
+ through the rest of the wizard and finally click the "Store" button.</li>
+ </ol>
+
+ <p>
+ Alternatively, from the command line, run a command like the following:
+ </p>
+
+ <pre>
+aws secretsmanager create-secret --name "[Context]" --secret-string '{ "[Param]": "[secretValue]", "[Param2]": "[secretValue2]" }'
+ </pre>
+
+ <p>In this example, [Context] should be the intended name of the Parameter Context, [Param] and [Param2] should be
+ parameter names, and [secretValue] and [secretValue2] should be the values of each respective parameter.</p>
+
+ <h3>Configuring the Parameter Provider</h3>
+
+ <p>
+ AWS Secrets must be explicitly matched in the "Secret Name Pattern" property in order for them to be fetched. This
+ prevents more than the intended Secrets from being pulled into NiFi.
+ </p>
+
+ <p>
+
+ </p>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.parameter.aws.AwsSecretsManagerParameterProvider/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.parameter.aws.AwsSecretsManagerParameterProvider/index.html
new file mode 100644
index 0000000..dbdd925
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.parameter.aws.AwsSecretsManagerParameterProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AwsSecretsManagerParameterProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AwsSecretsManagerParameterProvider</h1><h2>Description: </h2><p>Fetches parame [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.cloudwatch.PutCloudWatchMetric/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.cloudwatch.PutCloudWatchMetric/index.html
new file mode 100644
index 0000000..ffa7394
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.cloudwatch.PutCloudWatchMetric/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCloudWatchMetric</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCloudWatchMetric</h1><h2>Description: </h2><p>Publishes metrics to Amazon CloudWatch. Metr [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService/index.html
new file mode 100644
index 0000000..b877377
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.credentials.provider.service.AWSCredentialsProviderControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AWSCredentialsProviderControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AWSCredentialsProviderControllerService</h1><h2>Description: </h2><p>Defi [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.DeleteDynamoDB/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.DeleteDynamoDB/index.html
new file mode 100644
index 0000000..af7a638
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.DeleteDynamoDB/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteDynamoDB</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteDynamoDB</h1><h2>Description: </h2><p>Deletes a document from DynamoDB based on hash and ran [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.GetDynamoDB/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.GetDynamoDB/index.html
new file mode 100644
index 0000000..9cccb5e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.GetDynamoDB/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetDynamoDB</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetDynamoDB</h1><h2>Description: </h2><p>Retrieves a document from DynamoDB based on hash and range k [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDB/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDB/index.html
new file mode 100644
index 0000000..00599d2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDB/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutDynamoDB</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutDynamoDB</h1><h2>Description: </h2><p>Puts a document from DynamoDB based on hash and range key. [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/additionalDetails.html
new file mode 100644
index 0000000..690864a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/additionalDetails.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PutDynamoDBRecord</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <h2>Description</h2>
+
+ <p>
+ <i>PutDynamoDBRecord</i> intends to provide the capability to insert multiple Items into a DynamoDB table from a record-oriented FlowFile.
+ Compared to the <i>PutDynamoDB</i>, this processor is capable to process data based other than JSON format too and prepared to add multiple fields for a given Item.
+ Also, <i>PutDynamoDBRecord</i> is designed to insert bigger batches of data into the database.
+ </p>
+
+ <h2>Data types</h2>
+
+ <p>
+ The list data types supported by DynamoDB does not fully overlaps with the capabilities of the Record data structure.
+ Some conversions and simplifications are necessary during inserting the data. These are:
+ </p>
+
+ <ul>
+ <li>Numeric values are stored using a floating-point data structure within Items. In some cases this representation might cause issues with the accuracy.</li>
+ <li>Char is not a supported type within DynamoDB, these fields are converted into String values.</li>
+ <li>Enum types are stored as String fields, using the name of the given enum.</li>
+ <li>DynamoDB stores time and date related information as Strings.</li>
+ <li>Internal record structures are converted into maps.</li>
+ <li>Choice is not a supported data type, regardless of the actual wrapped data type, values enveloped in Choice are handled as Strings.</li>
+ <li>Unknown data types are handled as stings.</li>
+ </ul>
+
+ <h2>Limitations</h2>
+
+ <p>
+ Working with DynamoDB when batch inserting comes with two inherit limitations. First, the number of inserted Items is limited to 25 in any case.
+ In order to overcome this, during one execution, depending on the number or records in the incoming FlowFile, <i>PutDynamoDBRecord</i> might attempt multiple
+ insert calls towards the database server. Using this approach, the flow does not have to work with this limitation in most cases.
+ </p>
+
+ <p>
+ Having multiple external actions comes with the risk of having an unforeseen result at one of the steps.
+ For example when the incoming FlowFile is consists of 70 records, it will be split into 3 chunks, with a single insert operation for every chunk.
+ The first two chunks contains 25 Items to insert per chunk, and the third contains the remaining 20. In some cases it might occur that the first two insert operation succeeds but the third one fails.
+ In these cases we consider the FlowFile "partially processed" and we will transfer it to the "failure" or "unprocessed" Relationship according to the nature of the issue.
+ In order to keep the information about the successfully processed chunks the processor assigns the <i>"dynamodb.chunks.processed"</i> attribute to the FlowFile, which has the number of successfully processed chunks as value.
+ </p>
+
+ <p>
+ The most common reason for this behaviour comes from the other limitation the inserts have with DynamoDB: the database has a build in supervision over the amount of inserted data.
+ When a client reaches the "throughput limit", the server refuses to process the insert request until a certain amount of time. More information on this might be find <a href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html">here</a>.
+ From the perspective of the <i>PutDynamoDBRecord</i> we consider these cases as temporary issues and the FlowFile will be transferred to the "unprocessed" Relationship after which the processor will yield in order to avoid further throughput issues.
+ (Other kinds of failures will result transfer to the "failure" Relationship)
+ </p>
+
+ <h2>Retry</h2>
+
+ <p>
+ It is suggested to loop back the "unprocessed" Relationship to the <i>PutDynamoDBRecord</i> in some way. FlowFiles transferred to that relationship considered as healthy ones might be successfully processed in a later point.
+ It is possible that the FlowFile contains such a high number of records, what needs more than two attempts to fully insert.
+ The attribute "dynamodb.chunks.processed" is "rolled" through the attempts, which means, after each trigger it will contain the sum number of inserted chunks making it possible for the later attempts to continue from the right point without duplicated inserts.
+ </p>
+
+ <h2>Partition and sort keys</h2>
+
+ <p>
+ The processor supports multiple strategies for assigning partition key and sort key to the inserted Items. These are:
+ </p>
+
+ <h3>Partition Key Strategies</h3>
+
+ <h4>Partition By Field</h4>
+
+ <p>
+ The processors assigns one of the record fields as partition key. The name of the record field is specified by the "Partition Key Field" property and the value will be the value of the record field with the same name.
+ </p>
+
+ <h4>Partition By Attribute</h4>
+
+ <p>
+ The processor assigns the value of a FlowFile attribute as partition key. With this strategy all the Items within a FlowFile will share the same partition key value and it is suggested to use for tables also having a sort key in order to meet the primary key requirements of the DynamoDB.
+ The property "Partition Key Field" defines the name of the Item field and the property "Partition Key Attribute" will specify which attribute's value will be assigned to the partition key.
+ With this strategy the "Partition Key Field" must be different from the fields consisted by the incoming records.
+ </p>
+
+ <h4>Generated UUID</h4>
+
+ <p>
+ By using this strategy the processor will generate a UUID identifier for every single Item. This identifier will be used as value for the partition key.
+ The name of the field used as partition key is defined by the property "Partition Key Field".
+ With this strategy the "Partition Key Field" must be different from the fields consisted by the incoming records.
+ When using this strategy, the partition key in the DynamoDB table must have String data type.
+ </p>
+
+ <h3>Sort Key Strategies</h3>
+
+ <h4>None</h4>
+
+ <p>
+ No sort key will be assigned to the Item. In case of the table definition expects it, using this strategy will result unsuccessful inserts.
+ </p>
+
+ <h4>Sort By Field</h4>
+
+ <p>
+ The processors assigns one of the record fields as sort key. The name of the record field is specified by the "Sort Key Field" property and the value will be the value of the record field with the same name.
+ With this strategy the "Sort Key Field" must be different from the fields consisted by the incoming records.
+ </p>
+
+ <h4>Generate Sequence</h4>
+
+ <p>
+ The processor assigns a generated value to every Item based on the original record's position in the incoming FlowFile (regardless of the chunks).
+ The first Item will have the sort key 1, the second will have sort key 2 and so on. The generated keys are unique within a given FlowFile.
+ The name of the record field is specified by the "Sort Key Field" attribute.
+ With this strategy the "Sort Key Field" must be different from the fields consisted by the incoming records.
+ When using this strategy, the sort key in the DynamoDB table must have Number data type.
+
+ </p>
+
+ <h2>Examples</h2>
+
+ <h3>Using fields as partition and sort key</h3>
+
+ <h4>Setup</h4>
+
+ <ul>
+ <li>Partition Key Strategy: Partition By Field</li>
+ <li>Partition Key Field: class</li>
+ <li>Sort Key Strategy: Sort By Field</li>
+ <li>Sort Key Field: size</li>
+ </ul>
+
+ <p>
+ Note: both fields have to exist in the incoming records!
+ </p>
+
+ <h4>Result</h4>
+
+ <p>
+ Using this pair of strategies will result Items identical to the incoming record (not counting the representational changes from the conversion).
+ The field specified by the properties are added to the Items normally with the only difference of flagged as (primary) key items.
+ </p>
+
+ <h4>Input</h4>
+
+ <code>
+[{"type": "A", "subtype": 4, "class" : "t", "size": 1}]
+ </code>
+
+ <h4>Output (stylized)</h4>
+
+ <ul>
+ <li>type: String field with value "A"</li>
+ <li>subtype: Number field with value 4</li>
+ <li>class: String field with value "t" and serving as partition key</li>
+ <li>size: Number field with value 1 and serving as sort key</li>
+ </ul>
+
+ <h3>Using FlowFile filename as partition key with generated sort key</h3>
+
+ <h4>Setup</h4>
+
+ <ul>
+ <li>Partition Key Strategy: Partition By Attribute</li>
+ <li>Partition Key Field: source</li>
+ <li>Partition Key Attribute: filename</li>
+ <li>Sort Key Strategy: Generate Sequence</li>
+ <li>Sort Key Field: sort</li>
+ </ul>
+
+ <h4>Result</h4>
+
+ <p>
+ The FlowFile's filename attribute will be used as partition key. In this case all the records within the same FlowFile will share the same partition key.
+ In order to avoid collusion, if FlowFiles contain multiple records, using sort key is suggested.
+ In this case a generated sequence is used which is guaranteed to be unique within a given FlowFile.
+ </p>
+
+ <h4>Input</h4>
+
+ <code>
+[
+ {"type": "A", "subtype": 4, "class" : "t", "size": 1},
+ {"type": "B", "subtype": 5, "class" : "m", "size": 2}
+]
+ </code>
+
+ <h4>Output (stylized)</h4>
+
+ <h5>First Item</h5>
+
+ <ul>
+ <li>source: String field with value "data46362.json" and serving as partition key</li>
+ <li>type: String field with value "A"</li>
+ <li>subtype: Number field with value 4</li>
+ <li>class: String field with value "t"</li>
+ <li>size: Number field with value 1</li>
+ <li>sort: Number field with value 1 and serving as sort key</li>
+ </ul>
+
+ <h5>Second Item</h5>
+
+ <ul>
+ <li>source: String field with value "data46362.json" and serving as partition key</li>
+ <li>type: String field with value "B"</li>
+ <li>subtype: Number field with value 5</li>
+ <li>class: String field with value "m"</li>
+ <li>size: Number field with value 2</li>
+ <li>sort: Number field with value 2 and serving as sort key</li>
+ </ul>
+
+ <h3>Using generated partition key</h3>
+
+ <h4>Setup</h4>
+
+ <ul>
+ <li>Partition Key Strategy: Generated UUID</li>
+ <li>Partition Key Field: identifier</li>
+ <li>Sort Key Strategy: None</li>
+ </ul>
+
+ <h4>Result</h4>
+
+ <p>
+ A generated UUID will be used as partition key. A different UUID will be generated for every Item.
+ </p>
+
+ <h4>Input</h4>
+
+ <code>
+ [{"type": "A", "subtype": 4, "class" : "t", "size": 1}]
+ </code>
+
+ <h4>Output (stylized)</h4>
+
+ <ul>
+ <li>identifier: String field with value "872ab776-ed73-4d37-a04a-807f0297e06e" and serving as partition key</li>
+ <li>type: String field with value "A"</li>
+ <li>subtype: Number field with value 4</li>
+ <li>class: String field with value "t"</li>
+ <li>size: Number field with value 1</li>
+ </ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/index.html
new file mode 100644
index 0000000..a27fae9
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.dynamodb.PutDynamoDBRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutDynamoDBRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutDynamoDBRecord</h1><h2>Description: </h2><p>Inserts items into DynamoDB based on record-orie [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.firehose.PutKinesisFirehose/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.firehose.PutKinesisFirehose/index.html
new file mode 100644
index 0000000..03fffb3
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.firehose.PutKinesisFirehose/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutKinesisFirehose</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutKinesisFirehose</h1><h2>Description: </h2><p>Sends the contents to a specified Amazon Kines [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/additionalDetails.html
new file mode 100644
index 0000000..d03c463
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/additionalDetails.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>ConsumeKinesisStream</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Streaming Versus Batch Processing</h1>
+<p>
+ ConsumeKinesisStream retrieves all Kinesis Records that it encounters in the configured Kinesis Stream.
+ There are two common, broadly defined use cases.
+</p>
+
+<h3>Per-Message Use Case</h3>
+<p>
+ By default, the Processor will create a separate FlowFile for each Kinesis Record (message) in the Stream
+ and add attributes for shard id, sequence number, etc.
+</p>
+
+<h3>Per-Batch Use Case</h3>
+<p>
+ Another common use case is the desire to process all Kinesis Records retrieved from the Stream in a batch as a single FlowFile.
+</p>
+
+<p>
+ The ConsumeKinesisStream Processor can optionally be configured with a Record Reader and Record Writer.
+ When a Record Reader and Record Writer are configured, a single FlowFile will be created that will contain a Record
+ for each Record within the batch of Kinesis Records (messages), instead of a separate FlowFile per Kinesis Record.
+</p>
+
+<p>
+ The FlowFiles emitted in this mode will include the standard <code>record.*</code> attributes along with the same
+ Kinesis Shard ID, Sequence Number and Approximate Arrival Timestamp; but the values will relate to the <b>last</b>
+ Kinesis Record that was processed in the batch of messages constituting the content of the FlowFile.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/index.html
new file mode 100644
index 0000000..6455fd1
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.ConsumeKinesisStream/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKinesisStream</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKinesisStream</h1><h2>Description: </h2><p>Reads data from the specified AWS Kinesis [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.PutKinesisStream/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.PutKinesisStream/index.html
new file mode 100644
index 0000000..2eabecd
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.kinesis.stream.PutKinesisStream/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutKinesisStream</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutKinesisStream</h1><h2>Description: </h2><p>Sends the contents to a specified Amazon Kinesis. [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.lambda.PutLambda/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.lambda.PutLambda/index.html
new file mode 100644
index 0000000..8fa82bc
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.lambda.PutLambda/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutLambda</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutLambda</h1><h2>Description: </h2><p>Sends the contents to a specified Amazon Lambda Function. The AW [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.GetAwsPollyJobStatus/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.GetAwsPollyJobStatus/additionalDetails.html
new file mode 100644
index 0000000..5e842f0
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.GetAwsPollyJobStatus/additionalDetails.html
@@ -0,0 +1,39 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Polly</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>GetAwsPollyJobStatus</h1>
+<p>
+ Amazon Polly is a service that turns text into lifelike speech, allowing you to create applications that talk, and build entirely new categories of speech-enabled products.
+ Polly's Text-to-Speech (TTS) service uses advanced deep learning technologies to synthesize natural sounding human speech.
+ With dozens of lifelike voices across a broad set of languages, you can build speech-enabled applications that work in many different countries.
+</p>
+
+<h3>Usage</h3>
+<p>
+ GetAwsPollyJobStatus Processor is designed to periodically check polly job status. This processor should be used in pair with StartAwsPollyJob Processor.
+ If the job successfully finished it will populate <code>outputLocation</code> attribute of the flow file where you can find the output of the Polly job.
+ In case of an error <code>failure.reason</code> attribute will be populated with the details.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.GetAwsPollyJobStatus/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.GetAwsPollyJobStatus/index.html
new file mode 100644
index 0000000..7d44933
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.GetAwsPollyJobStatus/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAwsPollyJobStatus</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAwsPollyJobStatus</h1><h2>Description: </h2><p>Retrieves the current status of an AWS Pol [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.StartAwsPollyJob/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.StartAwsPollyJob/additionalDetails.html
new file mode 100644
index 0000000..a3ed042
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.StartAwsPollyJob/additionalDetails.html
@@ -0,0 +1,68 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Polly</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>StartAwsPollyJob</h1>
+<p>
+ Amazon Polly is a service that turns text into lifelike speech, allowing you to create applications that talk, and build entirely new categories of speech-enabled products.
+ Polly's Text-to-Speech (TTS) service uses advanced deep learning technologies to synthesize natural sounding human speech.
+ With dozens of lifelike voices across a broad set of languages, you can build speech-enabled applications that work in many different countries.
+</p>
+
+<h3>Usage</h3>
+<p>
+ Amazon ML Processors are implemented to utilize ML services based on the official AWS API Reference.
+ You can find example json payload in the documentation at the Request Syntax sections.
+ For more details please check the official <a target="blank" href="https://docs.aws.amazon.com/polly/latest/dg/API_Reference.html">Polly API reference</a>
+ With this processor you will trigger a startSpeechSynthesisTask async call to Polly Service.
+
+ You can define json payload as property or provide as a flow file content. Property has higher precedence.
+
+ After the job is triggered the serialized json response will be written to the output flow file.
+ The <code>awsTaskId</code> attribute will be populated, so it makes it easier to query job status by the corresponding get job status processor.
+</p>
+
+<p>
+ JSON payload template - note that it can be simplified with the optional fields, check <a href="https://docs.aws.amazon.com/polly/latest/dg/API_StartSpeechSynthesisTask.html" target="_blank">AWS documentation for more details</a> - example:
+</p>
+
+<code>
+ <pre>
+{
+ "Engine": "string",
+ "LanguageCode": "string",
+ "LexiconNames": [ "string" ],
+ "OutputFormat": "string",
+ "OutputS3BucketName": "string",
+ "OutputS3KeyPrefix": "string",
+ "SampleRate": "string",
+ "SnsTopicArn": "string",
+ "SpeechMarkTypes": [ "string" ],
+ "Text": "string",
+ "TextType": "string",
+ "VoiceId": "string"
+}
+ </pre>
+</code>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.StartAwsPollyJob/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.StartAwsPollyJob/index.html
new file mode 100644
index 0000000..3765da4
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.polly.StartAwsPollyJob/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StartAwsPollyJob</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StartAwsPollyJob</h1><h2>Description: </h2><p>Trigger a AWS Polly job. It should be followed by [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.GetAwsTextractJobStatus/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.GetAwsTextractJobStatus/additionalDetails.html
new file mode 100644
index 0000000..9ac7d31
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.GetAwsTextractJobStatus/additionalDetails.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Textract</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>GetAwsTextractJobStatus</h1>
+<p>
+ Amazon Textract is a machine learning (ML) service that automatically extracts text, handwriting, and data from scanned documents.
+ It goes beyond simple optical character recognition (OCR) to identify, understand, and extract data from forms and tables. </p>
+
+<h3>Usage</h3>
+<p>
+ GetAwsTextractJobStatus Processor is designed to periodically check textract job status. This processor should be used in pair with StartAwsTextractJob Processor.
+ FlowFile will contain the serialized Tetract response that contains the result and additional metadata as it is documented in AWS Textract Reference.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.GetAwsTextractJobStatus/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.GetAwsTextractJobStatus/index.html
new file mode 100644
index 0000000..13b0d01
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.GetAwsTextractJobStatus/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAwsTextractJobStatus</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAwsTextractJobStatus</h1><h2>Description: </h2><p>Retrieves the current status of an A [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.StartAwsTextractJob/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.StartAwsTextractJob/additionalDetails.html
new file mode 100644
index 0000000..fe334e5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.StartAwsTextractJob/additionalDetails.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Textract</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>StartAwsTextractJob</h1>
+<p>
+ Amazon Textract is a machine learning (ML) service that automatically extracts text, handwriting, and data from scanned documents.
+ It goes beyond simple optical character recognition (OCR) to identify, understand, and extract data from forms and tables.
+</p>
+
+<h3>Usage</h3>
+<p>
+ Amazon ML Processors are implemented to utilize ML services based on the official AWS API Reference.
+ You can find example json payload in the documentation at the Request Syntax sections.
+ For more details please check the official <a target="blank" href="https://docs.aws.amazon.com/textract/latest/dg/API_Reference.html">Textract API reference</a>
+ With this processor you will trigger a startDocumentAnalysis, startDocumentTextDetection or startExpenseAnalysis async call according to your type of textract settings.
+
+ You can define json payload as property or provide as a flow file content. Property has higher precedence.
+
+ After the job is triggered the serialized json response will be written to the output flow file.
+ The awsTaskId attribute will be populated, so it makes it easier to query job status by the corresponding get job status processor.
+</p>
+<p>
+ Three different type of textract task are supported: Documnet Analysis, Text Detection, Expense Analysis.
+</p>
+<h3>DocumentAnalysis</h3>
+<p>Starts the asynchronous analysis of an input document for relationships between detected items such as key-value pairs, tables, and selection elements.
+ <a href="https://docs.aws.amazon.com/textract/latest/dg/API_StartDocumentAnalysis.html" target="_blank"> API Reference</a>
+</p>
+Example payload:
+<code>
+ <pre>
+{
+ "ClientRequestToken": "string",
+ "DocumentLocation": {
+ "S3Object": {
+ "Bucket": "string",
+ "Name": "string",
+ "Version": "string"
+ }
+ },
+ "FeatureTypes": [ "string" ],
+ "JobTag": "string",
+ "KMSKeyId": "string",
+ "NotificationChannel": {
+ "RoleArn": "string",
+ "SNSTopicArn": "string"
+ },
+ "OutputConfig": {
+ "S3Bucket": "string",
+ "S3Prefix": "string"
+ },
+ "QueriesConfig": {
+ "Queries": [
+ {
+ "Alias": "string",
+ "Pages": [ "string" ],
+ "Text": "string"
+ }
+ ]
+ }
+}
+ </pre>
+</code>
+<h3>ExpenseAnalysis</h3>
+<p>Starts the asynchronous analysis of invoices or receipts for data like contact information, items purchased, and vendor names.
+ <a href="https://docs.aws.amazon.com/textract/latest/dg/API_StartExpenseAnalysis.html" target="_blank"> API Reference</a>
+</p>
+Example payload:
+ <code>
+ <pre>
+{
+ "ClientRequestToken": "string",
+ "DocumentLocation": {
+ "S3Object": {
+ "Bucket": "string",
+ "Name": "string",
+ "Version": "string"
+ }
+ },
+ "JobTag": "string",
+ "KMSKeyId": "string",
+ "NotificationChannel": {
+ "RoleArn": "string",
+ "SNSTopicArn": "string"
+ },
+ "OutputConfig": {
+ "S3Bucket": "string",
+ "S3Prefix": "string"
+ }
+}
+ </pre>
+ </code>
+<h3>StartDocumentTextDetection</h3>
+<p>Starts the asynchronous detection of text in a document. Amazon Textract can detect lines of text and the words that make up a line of text.
+ <a href="https://docs.aws.amazon.com/textract/latest/dg/API_StartDocumentTextDetection.html" target="_blank"> API Reference</a>
+</p>
+Example payload:
+<code>
+ <pre>
+{
+ "ClientRequestToken": "string",
+ "DocumentLocation": {
+ "S3Object": {
+ "Bucket": "string",
+ "Name": "string",
+ "Version": "string"
+ }
+ },
+ "JobTag": "string",
+ "KMSKeyId": "string",
+ "NotificationChannel": {
+ "RoleArn": "string",
+ "SNSTopicArn": "string"
+ },
+ "OutputConfig": {
+ "S3Bucket": "string",
+ "S3Prefix": "string"
+ }
+}
+ </pre>
+ </code>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.StartAwsTextractJob/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.StartAwsTextractJob/index.html
new file mode 100644
index 0000000..c56b32e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.textract.StartAwsTextractJob/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StartAwsTextractJob</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StartAwsTextractJob</h1><h2>Description: </h2><p>Trigger a AWS Textract job. It should be fol [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.GetAwsTranscribeJobStatus/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.GetAwsTranscribeJobStatus/additionalDetails.html
new file mode 100644
index 0000000..25e4f35
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.GetAwsTranscribeJobStatus/additionalDetails.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Transcribe</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Amazon Transcribe</h1>
+<p>
+ Automatically convert speech to text
+ <ul>
+ <li>Extract key business insights from customer calls, video files, clinical conversations, and more.</li>
+ <li>Improve business outcomes with state of the art speech recognition models that are fully managed and continuously trained.</li>
+ <li>Ensure customer privacy and safety by masking sensitive information.</li>
+</ul>
+</p>
+
+<h3>Usage</h3>
+<p>
+ GetAwsTranscribeJobStatus Processor is designed to periodically check Transcribe job status. This processor should be used in pair with Transcribe Processor.
+ FlowFile will contain the serialized Transcribe response and it will populate the path of the output in the <code>outputLocation</code> attribute.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.GetAwsTranscribeJobStatus/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.GetAwsTranscribeJobStatus/index.html
new file mode 100644
index 0000000..0a48aa8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.GetAwsTranscribeJobStatus/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAwsTranscribeJobStatus</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAwsTranscribeJobStatus</h1><h2>Description: </h2><p>Retrieves the current status of [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.StartAwsTranscribeJob/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.StartAwsTranscribeJob/additionalDetails.html
new file mode 100644
index 0000000..8068383
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.StartAwsTranscribeJob/additionalDetails.html
@@ -0,0 +1,113 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Transcribe</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Amazon Transcribe</h1>
+<p>
+ Automatically convert speech to text
+ <ul>
+ <li>Extract key business insights from customer calls, video files, clinical conversations, and more.</li>
+ <li>Improve business outcomes with state of the art speech recognition models that are fully managed and continuously trained.</li>
+ <li>Ensure customer privacy and safety by masking sensitive information.</li>
+ </ul>
+</p>
+
+<h3>Usage</h3>
+<p>
+ Amazon ML Processors are implemented to utilize ML services based on the official AWS API Reference.
+ You can find example json payload in the documentation at the Request Syntax sections.
+ For more details please check the official <a target="blank" href="https://docs.aws.amazon.com/transcribe/latest/APIReference/Welcome.html" >Transcribe API reference</a>
+ With this processor you will trigger a startTranscriptionJob async call to AWS Transcribe Service.
+
+ You can define json payload as property or provide as a flow file content. Property has higher precedence.
+
+ After the job is triggered the serialized json response will be written to the output flow file.
+ The awsTaskId attribute will be populated, so it makes it easier to query job status by the corresponding get job status processor.
+</p>
+<p>
+ JSON payload template - note that these can be simplified with the optional fields, check <a href="https://docs.aws.amazon.com/transcribe/latest/APIReference/API_StartTranscriptionJob.html" target="_blank">AWS documentation for more details</a> - examples:
+</p>
+
+<code>
+ <pre>
+{
+ "ContentRedaction": {
+ "PiiEntityTypes": [ "string" ],
+ "RedactionOutput": "string",
+ "RedactionType": "string"
+ },
+ "IdentifyLanguage": boolean,
+ "IdentifyMultipleLanguages": boolean,
+ "JobExecutionSettings": {
+ "AllowDeferredExecution": boolean,
+ "DataAccessRoleArn": "string"
+ },
+ "KMSEncryptionContext": {
+ "string" : "string"
+ },
+ "LanguageCode": "string",
+ "LanguageIdSettings": {
+ "string" : {
+ "LanguageModelName": "string",
+ "VocabularyFilterName": "string",
+ "VocabularyName": "string"
+ }
+ },
+ "LanguageOptions": [ "string" ],
+ "Media": {
+ "MediaFileUri": "string",
+ "RedactedMediaFileUri": "string"
+ },
+ "MediaFormat": "string",
+ "MediaSampleRateHertz": number,
+ "ModelSettings": {
+ "LanguageModelName": "string"
+ },
+ "OutputBucketName": "string",
+ "OutputEncryptionKMSKeyId": "string",
+ "OutputKey": "string",
+ "Settings": {
+ "ChannelIdentification": boolean,
+ "MaxAlternatives": number,
+ "MaxSpeakerLabels": number,
+ "ShowAlternatives": boolean,
+ "ShowSpeakerLabels": boolean,
+ "VocabularyFilterMethod": "string",
+ "VocabularyFilterName": "string",
+ "VocabularyName": "string"
+ },
+ "Subtitles": {
+ "Formats": [ "string" ],
+ "OutputStartIndex": number
+ },
+ "Tags": [
+ {
+ "Key": "string",
+ "Value": "string"
+ }
+ ],
+ "TranscriptionJobName": "string"
+}
+ </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.StartAwsTranscribeJob/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.StartAwsTranscribeJob/index.html
new file mode 100644
index 0000000..119149d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.transcribe.StartAwsTranscribeJob/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StartAwsTranscribeJob</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StartAwsTranscribeJob</h1><h2>Description: </h2><p>Trigger a AWS Transcribe job. It should [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.GetAwsTranslateJobStatus/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.GetAwsTranslateJobStatus/additionalDetails.html
new file mode 100644
index 0000000..d12d376
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.GetAwsTranslateJobStatus/additionalDetails.html
@@ -0,0 +1,40 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Translate</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>GetAwsTranslateJobStatus</h1>
+<p>
+ Amazon Translate is a neural machine translation service for translating text to and from English across a breadth of supported languages.
+ Powered by deep-learning technologies, Amazon Translate delivers fast, high-quality, and affordable language translation.
+ It provides a managed, continually trained solution so you can easily translate company and user-authored content or build applications that require support across multiple languages.
+ The machine translation engine has been trained on a wide variety of content across different domains to produce quality translations that serve any industry need.
+</p>
+
+<h3>Usage</h3>
+<p>
+ GetAwsTranslateJobStatus Processor is designed to periodically check translate job status. This processor should be used in pair with Translate Processor.
+ If the job successfully finished it will populate outputLocation attribute of the flow file where you can find the output of the Translation job.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.GetAwsTranslateJobStatus/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.GetAwsTranslateJobStatus/index.html
new file mode 100644
index 0000000..355bdbe
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.GetAwsTranslateJobStatus/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAwsTranslateJobStatus</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAwsTranslateJobStatus</h1><h2>Description: </h2><p>Retrieves the current status of an [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.StartAwsTranslateJob/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.StartAwsTranslateJob/additionalDetails.html
new file mode 100644
index 0000000..ae02e9a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.StartAwsTranslateJob/additionalDetails.html
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Amazon Translate</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>StartAwsTranslateJob</h1>
+<p>
+ Amazon Translate is a neural machine translation service for translating text to and from English across a breadth of supported languages.
+ Powered by deep-learning technologies, Amazon Translate delivers fast, high-quality, and affordable language translation.
+ It provides a managed, continually trained solution so you can easily translate company and user-authored content or build applications that require support across multiple languages.
+ The machine translation engine has been trained on a wide variety of content across different domains to produce quality translations that serve any industry need.
+</p>
+
+<h3>Usage</h3>
+<p>
+ Amazon ML Processors are implemented to utilize ML services based on the official AWS API Reference.
+ You can find example json payload in the documentation at the Request Syntax sections.
+ For more details please check the official <a target="blank" href="https://docs.aws.amazon.com/translate/latest/APIReference/welcome.html">Translate API reference</a>
+ With this processor you will trigger a startTextTranslationJob async call to Translate Service
+
+ You can define json payload as property or provide as a flow file content. Property has higher precedence.
+</p>
+<p>
+ JSON payload template - note that it can be simplified with the optional fields, check <a href="https://docs.aws.amazon.com/translate/latest/APIReference/API_StartTextTranslationJob.html" target="_blank">AWS documentation for more details</a> - example:
+</p>
+
+<code>
+ <pre>
+{
+ "ClientToken": "string",
+ "DataAccessRoleArn": "string",
+ "InputDataConfig": {
+ "ContentType": "string",
+ "S3Uri": "string"
+ },
+ "JobName": "string",
+ "OutputDataConfig": {
+ "EncryptionKey": {
+ "Id": "string",
+ "Type": "string"
+ },
+ "S3Uri": "string"
+ },
+ "ParallelDataNames": [ "string" ],
+ "Settings": {
+ "Formality": "string",
+ "Profanity": "string"
+ },
+ "SourceLanguageCode": "string",
+ "TargetLanguageCodes": [ "string" ],
+ "TerminologyNames": [ "string" ]
+}
+ </pre>
+</code>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.StartAwsTranslateJob/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.StartAwsTranslateJob/index.html
new file mode 100644
index 0000000..4800aa4
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.ml.translate.StartAwsTranslateJob/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StartAwsTranslateJob</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StartAwsTranslateJob</h1><h2>Description: </h2><p>Trigger a AWS Translate job. It should be [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.DeleteS3Object/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.DeleteS3Object/index.html
new file mode 100644
index 0000000..cbdf722
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.DeleteS3Object/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteS3Object</h1><h2>Description: </h2><p>Deletes a file from an Amazon S3 Bucket. If attempting [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.FetchS3Object/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.FetchS3Object/index.html
new file mode 100644
index 0000000..768fe3f
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.FetchS3Object/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchS3Object</h1><h2>Description: </h2><p>Retrieves the contents of an S3 Object and writes it to [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.ListS3/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.ListS3/additionalDetails.html
new file mode 100644
index 0000000..c717e98
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.ListS3/additionalDetails.html
@@ -0,0 +1,114 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>ListS3</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Streaming Versus Batch Processing</h1>
+
+<p>
+ ListS3 performs a listing of all S3 Objects that it encounters in the configured S3 bucket.
+ There are two common, broadly defined use cases.
+</p>
+
+<h3>Streaming Use Case</h3>
+
+<p>
+ By default, the Processor will create a separate FlowFile for each object in the bucket and add attributes for filename, bucket, etc.
+ A common use case is to connect ListS3 to the FetchS3 processor. These two processors used in conjunction with one another provide the ability to
+ easily monitor a bucket and fetch the contents of any new object as it lands in S3 in an efficient streaming fashion.
+</p>
+
+<h3>Batch Use Case</h3>
+<p>
+ Another common use case is the desire to process all newly arriving objects in a given bucket, and to then perform some action
+ only when all objects have completed their processing. The above approach of streaming the data makes this difficult, because NiFi is inherently
+ a streaming platform in that there is no "job" that has a beginning and an end. Data is simply picked up as it becomes available.
+</p>
+
+<p>
+ To solve this, the ListS3 Processor can optionally be configured with a Record Writer. When a Record Writer is configured, a single
+ FlowFile will be created that will contain a Record for each object in the bucket, instead of a separate FlowFile per object.
+ See the documentation for ListFile for an example of how to build a dataflow that allows for processing all of the objects before proceeding
+ with any other step.
+</p>
+
+<p>
+ One important difference between the data produced by ListFile and ListS3, though, is the structure of the Records that are emitted. The Records
+ emitted by ListFile have a different schema than those emitted by ListS3. ListS3 emits records that follow the following schema (in Avro format):
+</p>
+
+<code>
+ <pre>
+{
+ "type": "record",
+ "name": "nifiRecord",
+ "namespace": "org.apache.nifi",
+ "fields": [{
+ "name": "key",
+ "type": "string"
+ }, {
+ "name": "bucket",
+ "type": "string"
+ }, {
+ "name": "owner",
+ "type": ["null", "string"]
+ }, {
+ "name": "etag",
+ "type": "string"
+ }, {
+ "name": "lastModified",
+ "type": {
+ "type": "long",
+ "logicalType": "timestamp-millis"
+ }
+ }, {
+ "name": "size",
+ "type": "long"
+ }, {
+ "name": "storageClass",
+ "type": "string"
+ }, {
+ "name": "latest",
+ "type": "boolean"
+ }, {
+ "name": "versionId",
+ "type": ["null", "string"]
+ }, {
+ "name": "tags",
+ "type": ["null", {
+ "type": "map",
+ "values": "string"
+ }]
+ }, {
+ "name": "userMetadata",
+ "type": ["null", {
+ "type": "map",
+ "values": "string"
+ }]
+ }]
+}
+ </pre>
+</code>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.ListS3/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.ListS3/index.html
new file mode 100644
index 0000000..2572c2d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.ListS3/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListS3</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListS3</h1><h2>Description: </h2><p>Retrieves a listing of objects from an S3 bucket. For each object that [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.PutS3Object/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.PutS3Object/additionalDetails.html
new file mode 100644
index 0000000..df2f86e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.PutS3Object/additionalDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PutS3Object</title>
+
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <h2>Multi-part Upload Details</h2>
+ <p>
+ The upload uses either the PutS3Object method or the PutS3MultipartUpload method. The PutS3Object method sends the file in a single synchronous call,
+ but it has a 5GB size limit. Larger files are sent using the PutS3MultipartUpload method. This multipart process saves state after each step so that
+ a large upload can be resumed with minimal loss if the processor or cluster is stopped and restarted.
+ A multipart upload consists of three steps:
+ </p>
+
+ <ol>
+ <li>Initiate upload</li>
+ <li>Upload the parts</li>
+ <li>Complete the upload</li>
+ </ol>
+
+ <p>
+ For multipart uploads, the processor saves state locally tracking the upload ID and parts uploaded, which must both be provided to complete the upload.
+ The AWS libraries select an endpoint URL based on the AWS region, but this can be overridden with the 'Endpoint Override URL' property for use with other
+ S3-compatible endpoints. The S3 API specifies that the maximum file size for a PutS3Object upload is 5GB. It also requires that parts in a multipart upload
+ must be at least 5MB in size, except for the last part. These limits establish the bounds for the Multipart Upload Threshold and Part Size properties.
+ </p>
+ <h2>Configuration Details</h2>
+ <h3>Object Key</h3>
+ <p>The Object Key property value should not start with "/".</p>
+ <h3>Credentials File</h3>
+ <p>The Credentials File property allows the user to specify the path to a file containing the AWS access key and secret key. The contents of the file should be in the following format:</p>
+ <pre>
+ [default]
+ accessKey=<access key>
+ secretKey=<security key>
+ </pre>
+ <p>Make sure the credentials file is readable by the NiFi service user.</p>
+ <p>When using the Credential File property, ensure that there are no values for the Access Key and Secret Key properties. The Value column should read "No value set" for both. <b>Note:</b> Do not check "Set empty string" for either as the empty string is considered a set value.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.PutS3Object/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.PutS3Object/index.html
new file mode 100644
index 0000000..055a0f8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.PutS3Object/index.html
@@ -0,0 +1,3 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutS3Object</h1><h2>Description: </h2><p>Writes the contents of a FlowFile as an S3 Object to an Amaz [...]
+AWS S3 Java client will attempt to determine the correct content type if one hasn't been set yet. Users are responsible for ensuring a suitable content type is set when uploading streams. If no content type is provided and cannot be determined by the filename, the default content type "application/octet-stream" will be used.<br/><strong>Supports Expression Language: true (will be evaluated using flow file attributes and Environment variables)</strong></td></tr><tr><td id="name">Content D [...]
+ Possible values are 'inline' or 'attachment'. If this property is not specified, object's content-disposition will be set to filename. When 'attachment' is selected, '; filename=' plus object key are automatically appended to form final value 'attachment; filename="filename.jpg"'.</td></tr><tr><td id="name">Cache Control</td><td>Cache Control</td><td></td><td id="allowable-values"></td><td id="description">Sets the Cache-Control HTTP header indicating the caching directives of the assoc [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.TagS3Object/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.TagS3Object/index.html
new file mode 100644
index 0000000..9875360
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.TagS3Object/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>TagS3Object</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">TagS3Object</h1><h2>Description: </h2><p>Adds or updates a tag on an Amazon S3 Object.</p><h3>Tags: < [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/additionalDetails.html
new file mode 100644
index 0000000..b53cffe
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/additionalDetails.html
@@ -0,0 +1,70 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>S3EncryptionService</title>
+
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+<h2>Description</h2>
+<div>
+ The <code>StandardS3EncryptionService</code> manages an encryption strategy and applies that strategy to various S3 operations.
+
+ <br>
+
+ <b>Note:</b> This service has no effect when a processor has the <code>Server Side Encryption</code> property set. To use
+ this service with processors so configured, first create a service instance, set the <code>Encryption Strategy</code> to <code>Server-side S3</code>,
+ disable the <code>Server Side Encryption</code> processor setting, and finally, associate the processor with the service.
+</div>
+
+
+<h2>Configuration Details</h2>
+<h3>Encryption Strategy</h3>
+
+<div>
+ The name of the specific encryption strategy for this service to use when encrypting and decrypting S3 operations.
+
+ <ul>
+ <li><code>None</code> - no encryption is configured or applied.</li>
+ <li><code>Server-side S3</code> - encryption and decryption is managed by S3; no keys are required.</li>
+ <li><code>Server-side KMS</code> - encryption and decryption are performed by S3 using the configured KMS key.</li>
+ <li><code>Server-side Customer Key</code> - encryption and decryption are performed by S3 using the supplied customer key.</li>
+ <li><code>Client-side KMS</code> - like the Server-side KMS strategy, with the encryption and decryption performed by the client.</li>
+ <li><code>Client-side Customer Key</code> - like the Server-side Customer Key strategy, with the encryption and decryption performed by the client.</li>
+ </ul>
+</div>
+
+<h3>Key ID or Key Material</h3>
+<p>
+ When configured for either the Server-side or Client-side KMS strategies, this field should contain the KMS Key ID.
+</p>
+<p>
+ When configured for either the Server-side or Client-side Customer Key strategies, this field should contain the key
+ material, and that material must be base64 encoded.
+</p>
+<p>
+ All other encryption strategies ignore this field.
+</p>
+
+<h3>KMS Region</h3>
+<div>
+ KMS key region, if any. This value must match the actual region of the KMS key if supplied.
+</div>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/index.html
new file mode 100644
index 0000000..90c0932
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.s3.encryption.StandardS3EncryptionService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardS3EncryptionService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardS3EncryptionService</h1><h2>Description: </h2><p>Adds configurable encryption [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sns.PutSNS/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sns.PutSNS/index.html
new file mode 100644
index 0000000..e239fde
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sns.PutSNS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutSNS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutSNS</h1><h2>Description: </h2><p>Sends the content of a FlowFile as a notification to the Amazon Simple [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.DeleteSQS/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.DeleteSQS/index.html
new file mode 100644
index 0000000..349e9f7
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.DeleteSQS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteSQS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteSQS</h1><h2>Description: </h2><p>Deletes a message from an Amazon Simple Queuing Service Queue</p [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.GetSQS/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.GetSQS/index.html
new file mode 100644
index 0000000..655c36f
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.GetSQS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetSQS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetSQS</h1><h2>Description: </h2><p>Fetches messages from an Amazon Simple Queuing Service Queue</p><h3>Ta [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.PutSQS/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.PutSQS/index.html
new file mode 100644
index 0000000..915a77d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.sqs.PutSQS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutSQS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutSQS</h1><h2>Description: </h2><p>Publishes a message to an Amazon Simple Queuing Service Queue</p><h3>T [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.wag.InvokeAWSGatewayApi/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.wag.InvokeAWSGatewayApi/index.html
new file mode 100644
index 0000000..ae209d2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-aws-nar/2.0.0-M1/org.apache.nifi.processors.aws.wag.InvokeAWSGatewayApi/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>InvokeAWSGatewayApi</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">InvokeAWSGatewayApi</h1><h2>Description: </h2><p>Client for AWS Gateway API endpoint</p><h3>T [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.parameter.azure.AzureKeyVaultSecretsParameterProvider/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.parameter.azure.AzureKeyVaultSecretsParameterProvider/additionalDetails.html
new file mode 100644
index 0000000..489d244
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.parameter.azure.AzureKeyVaultSecretsParameterProvider/additionalDetails.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>AzureKeyVaultSecretsParameterProvider</title>
+
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <h3>Mapping Azure Key Vault Secrets to Parameter Contexts</h3>
+
+ <p>
+ The AzureKeyVaultSecretsParameterProvider maps a Secret to a Parameter, which can be grouped by adding a "group-name" tag.
+ To create a compatible secret from the Azure Portal:
+ </p>
+
+ <ol>
+ <li>Go to the "Key Vault" service</li>
+ <li>Create your own Key Vault</li>
+ <li>In your own Key Vault, navigate to "Secrets"</li>
+ <li>
+ Create a secret with the name corresponding to the parameter name, and the value corresponding to the parameter value.
+ Under "Tags", add a tag with a Key of "group-name" and a value of the intended Parameter Group name.
+ </li>
+ </ol>
+
+ <p>
+ Alternatively, from the command line, run a command like the following once you have a Key Vault:
+ </p>
+
+ <pre>
+ az keyvault secret set --vault-name [Vault Name] --name [Parameter Name] --value [Parameter Value] --tags group-name=[Parameter Group Name]
+ </pre>
+
+ <p>In this example, [Parameter Group Name] should be the intended name of the Parameter Group, [Parameter Name] should be
+ the parameter name, and [Parameter Value] should be the value of the parameter. [Vault Name] should be the name you chose for
+ your Key Vault in Azure</p>
+
+ <h3>Configuring the Parameter Provider</h3>
+
+ <p>
+ Azure Key Vault Secrets must be explicitly matched in the "Group Name Pattern" property in order for them to be fetched. This
+ prevents more than the intended Secrets from being pulled into NiFi.
+ </p>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.parameter.azure.AzureKeyVaultSecretsParameterProvider/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.parameter.azure.AzureKeyVaultSecretsParameterProvider/index.html
new file mode 100644
index 0000000..d3cf310
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.parameter.azure.AzureKeyVaultSecretsParameterProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureKeyVaultSecretsParameterProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureKeyVaultSecretsParameterProvider</h1><h2>Description: </h2><p>Fetches [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.cosmos.document.PutAzureCosmosDBRecord/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.cosmos.document.PutAzureCosmosDBRecord/index.html
new file mode 100644
index 0000000..c4bc3f9
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.cosmos.document.PutAzureCosmosDBRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureCosmosDBRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureCosmosDBRecord</h1><h2>Description: </h2><p>This processor is a record-aware proce [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.data.explorer.QueryAzureDataExplorer/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.data.explorer.QueryAzureDataExplorer/index.html
new file mode 100644
index 0000000..2332a5e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.data.explorer.QueryAzureDataExplorer/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryAzureDataExplorer</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryAzureDataExplorer</h1><h2>Description: </h2><p>Query Azure Data Explorer and stream J [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.ConsumeAzureEventHub/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.ConsumeAzureEventHub/index.html
new file mode 100644
index 0000000..16589d5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.ConsumeAzureEventHub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeAzureEventHub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeAzureEventHub</h1><h2>Description: </h2><p>Receives messages from Microsoft Azure Eve [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.GetAzureEventHub/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.GetAzureEventHub/index.html
new file mode 100644
index 0000000..970db0f
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.GetAzureEventHub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAzureEventHub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAzureEventHub</h1><h2>Description: </h2><p>Receives messages from Microsoft Azure Event Hubs [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.PutAzureEventHub/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.PutAzureEventHub/index.html
new file mode 100644
index 0000000..4a1b407
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.eventhub.PutAzureEventHub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureEventHub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureEventHub</h1><h2>Description: </h2><p>Send FlowFile contents to Azure Event Hubs</p><h3> [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.CopyAzureBlobStorage_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.CopyAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..f9c2aa2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.CopyAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CopyAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CopyAzureBlobStorage_v12</h1><h2>Description: </h2><p>Copies a blob in Azure Blob Storag [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..54702ee
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.DeleteAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteAzureBlobStorage_v12</h1><h2>Description: </h2><p>Deletes the specified blob fro [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.DeleteAzureDataLakeStorage/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.DeleteAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..6619a7b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.DeleteAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteAzureDataLakeStorage</h1><h2>Description: </h2><p>Deletes the provided file from [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..24f2617
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.FetchAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchAzureBlobStorage_v12</h1><h2>Description: </h2><p>Retrieves the specified blob fro [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.FetchAzureDataLakeStorage/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.FetchAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..c13598e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.FetchAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchAzureDataLakeStorage</h1><h2>Description: </h2><p>Fetch the specified file from Az [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..5f1c3dd
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.ListAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListAzureBlobStorage_v12</h1><h2>Description: </h2><p>Lists blobs in an Azure Blob Stora [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.ListAzureDataLakeStorage/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.ListAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..38f0c4a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.ListAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListAzureDataLakeStorage</h1><h2>Description: </h2><p>Lists directory in an Azure Data L [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.MoveAzureDataLakeStorage/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.MoveAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..fb03d86
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.MoveAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>MoveAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">MoveAzureDataLakeStorage</h1><h2>Description: </h2><p>Moves content within an Azure Data [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage_v12/index.html
new file mode 100644
index 0000000..95cef59
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureBlobStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureBlobStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureBlobStorage_v12</h1><h2>Description: </h2><p>Puts content into a blob on Azure Bl [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/additionalDetails.html
new file mode 100644
index 0000000..2adfee3
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/additionalDetails.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PutAzureDataLakeStorage</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+
+<p>
+ This processor is responsible for uploading files to Azure Data Lake Storage Gen2.
+</p>
+
+<h3>File uploading and cleanup process</h3>
+
+<h4>New file upload</h4>
+
+<ol>
+ <li>A temporary file is created with random prefix under the given path in '_nifitempdirectory'.</li>
+ <li>Content is appended to temp file.</li>
+ <li>Temp file is renamed to its original name, the original file is overwritten.</li>
+ <li>In case of appending or renaming failure the temp file is deleted, the original file remains intact.</li>
+ <li>In case of temporary file deletion failure both temp file and original file remain on the server.</li>
+</ol>
+
+<h4>Existing file upload</h4>
+
+<ul>
+ <li>Processors with "fail" conflict resolution strategy will be directed to "Failure" relationship.</li>
+ <li>Processors with "ignore" conflict resolution strategy will be directed to "Success" relationship.</li>
+ <li>Processors with "replace" conflict resolution strategy:</li>
+
+ <ol>
+ <li>A temporary file is created with random prefix under the given path in '_nifitempdirectory'.</li>
+ <li>Content is appended to temp file.</li>
+ <li>Temp file is renamed to its original name, the original file is overwritten.</li>
+ <li>In case of appending or renaming failure the temp file is deleted, the original file remains intact.</li>
+ <li>In case of temporary file deletion failure both temp file and original file remain on the server.</li>
+ </ol>
+</ul>
+
+</body>
+</html>
+
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/index.html
new file mode 100644
index 0000000..745fac8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.PutAzureDataLakeStorage/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureDataLakeStorage</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureDataLakeStorage</h1><h2>Description: </h2><p>Writes the contents of a FlowFile as [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.queue.GetAzureQueueStorage_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.queue.GetAzureQueueStorage_v12/index.html
new file mode 100644
index 0000000..ba357e7
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.queue.GetAzureQueueStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetAzureQueueStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetAzureQueueStorage_v12</h1><h2>Description: </h2><p>Retrieves the messages from an Azu [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.queue.PutAzureQueueStorage_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.queue.PutAzureQueueStorage_v12/index.html
new file mode 100644
index 0000000..d85b036
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.processors.azure.storage.queue.PutAzureQueueStorage_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutAzureQueueStorage_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutAzureQueueStorage_v12</h1><h2>Description: </h2><p>Writes the content of the incoming [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsProvenanceReportingTask/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsProvenanceReportingTask/index.html
new file mode 100644
index 0000000..281bca2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsProvenanceReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureLogAnalyticsProvenanceReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureLogAnalyticsProvenanceReportingTask</h1><h2>Description: </h2><p>Pu [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsReportingTask/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsReportingTask/index.html
new file mode 100644
index 0000000..4c6414f
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.reporting.azure.loganalytics.AzureLogAnalyticsReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureLogAnalyticsReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureLogAnalyticsReportingTask</h1><h2>Description: </h2><p>Sends JVM-metrics as w [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.StandardAzureCredentialsControllerService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.StandardAzureCredentialsControllerService/index.html
new file mode 100644
index 0000000..017c500
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.StandardAzureCredentialsControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardAzureCredentialsControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardAzureCredentialsControllerService</h1><h2>Description: </h2><p> [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.cosmos.document.AzureCosmosDBClientService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.cosmos.document.AzureCosmosDBClientService/index.html
new file mode 100644
index 0000000..63b9ef0
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.cosmos.document.AzureCosmosDBClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureCosmosDBClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureCosmosDBClientService</h1><h2>Description: </h2><p>Provides a controller service [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.data.explorer.StandardKustoQueryService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.data.explorer.StandardKustoQueryService/index.html
new file mode 100644
index 0000000..18bdbc6
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.data.explorer.StandardKustoQueryService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardKustoQueryService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardKustoQueryService</h1><h2>Description: </h2><p>Standard implementation of Kusto [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.eventhub.AzureEventHubRecordSink/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.eventhub.AzureEventHubRecordSink/index.html
new file mode 100644
index 0000000..3bed68d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.eventhub.AzureEventHubRecordSink/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureEventHubRecordSink</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureEventHubRecordSink</h1><h2>Description: </h2><p>Format and send Records to Azure Eve [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/additionalDetails.html
new file mode 100644
index 0000000..760b215
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/additionalDetails.html
@@ -0,0 +1,44 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>ADLSCredentialsControllerService</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+
+<h3>Security considerations of using Expression Language for sensitive properties</h3>
+
+<p>
+ Allowing Expression Language for a property has the advantage of configuring the property dynamically via FlowFile attributes
+ or Variable Registry entries. In case of sensitive properties, it also has a drawback of exposing sensitive information like
+ passwords, security keys or tokens. When the value of a sensitive property comes from a FlowFile attribute, it travels by the
+ FlowFile in clear text form and is also saved in the provenance repository. Variable Registry does not support the encryption of
+ sensitive information either. Due to these, the sensitive credential data can be exposed to unauthorized parties.
+<p>
+ Best practices for using Expression Language for sensitive properties:
+ <ul>
+ <li>use it only if necessary</li>
+ <li>control access to the flow and to provenance repository</li>
+ <li>encrypt disks storing FlowFiles and provenance data</li>
+ <li>if the sensitive data is a temporary token (like the SAS token), use a shorter lifetime and refresh the token periodically</li>
+ </ul>
+
+</body>
+</html>
+
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/index.html
new file mode 100644
index 0000000..628db8d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ADLSCredentialsControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ADLSCredentialsControllerService</h1><h2>Description: </h2><p>Defines credential [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerServiceLookup/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerServiceLookup/index.html
new file mode 100644
index 0000000..175aa2c
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.ADLSCredentialsControllerServiceLookup/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ADLSCredentialsControllerServiceLookup</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ADLSCredentialsControllerServiceLookup</h1><h2>Description: </h2><p>Provid [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerServiceLookup_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerServiceLookup_v12/index.html
new file mode 100644
index 0000000..14e122a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerServiceLookup_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureStorageCredentialsControllerServiceLookup_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureStorageCredentialsControllerServiceLookup_v12</h1><h2>Des [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService_v12/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService_v12/index.html
new file mode 100644
index 0000000..2b4a4d5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-azure-nar/2.0.0-M1/org.apache.nifi.services.azure.storage.AzureStorageCredentialsControllerService_v12/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>AzureStorageCredentialsControllerService_v12</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">AzureStorageCredentialsControllerService_v12</h1><h2>Description: </ [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.FetchBoxFile/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.FetchBoxFile/additionalDetails.html
new file mode 100644
index 0000000..1b6c691
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.FetchBoxFile/additionalDetails.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>FetchBoxFile</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Fetch Box files in NiFi</h1>
+
+<ol>
+ <li><b>Find File ID</b>
+ </br>
+ Usually FetchBoxFile is used with ListBoxFile and 'box.id' is set.</br></br>
+ In case 'box.id' is not available, you can find the ID of the file in the following way:
+ </br>
+ <ul>
+ <li>Click on the file.</li>
+ <li>The URL in the browser will include the File ID.
+ </br>For example, if the URL were <code>https://app.box.com/file/1012106094023?s=ldiqjwuor2vwdxeeap2rtcz66dql89h3</code>,</br>
+ the File ID would be <code>1012106094023</code>
+ </li>
+ </ul>
+ </li>
+ <li><b>Set File ID in 'File ID' property</b>
+ </li>
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.FetchBoxFile/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.FetchBoxFile/index.html
new file mode 100644
index 0000000..b48ddf4
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.FetchBoxFile/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchBoxFile</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchBoxFile</h1><h2>Description: </h2><p>Fetches files from a Box Folder. Designed to be used in ta [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.ListBoxFile/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.ListBoxFile/additionalDetails.html
new file mode 100644
index 0000000..ae29849
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.ListBoxFile/additionalDetails.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>ListBoxFile</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>List Box folders in NiFi</h1>
+
+
+<ol>
+ <li><b>Find Folder ID</b>
+ <ul>
+ <li>Navigate to the folder to be listed in Box and enter it. The URL in your browser will include the ID at the end of
+ the URL.
+ For example, if the URL were <code>https://app.box.com/folder/191632099757</code>, the
+ Folder ID would be <code>191632099757</code>
+ </li>
+ </ul>
+ </li>
+ <li><b>Set Folder ID in 'Folder ID' property</b>
+ </li>
+</ol>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.ListBoxFile/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.ListBoxFile/index.html
new file mode 100644
index 0000000..29e2e35
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.ListBoxFile/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListBoxFile</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListBoxFile</h1><h2>Description: </h2><p>Lists files in a Box folder. Each listed file may result in [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.PutBoxFile/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.PutBoxFile/additionalDetails.html
new file mode 100644
index 0000000..32035e3
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.PutBoxFile/additionalDetails.html
@@ -0,0 +1,42 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>PutBoxFile</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Upload files to Box from NiFi</h1>
+
+<ol>
+ <li><b>Find Folder ID</b>
+ <ul>
+ <li>Navigate to the folder in Box and enter it. The URL in your browser will include the ID at the end of
+ the URL.
+ For example, if the URL were <code>https://app.box.com/folder/191632099757</code>, the
+ Folder ID would be <code>191632099757</code>
+ </li>
+ </ul>
+ </li>
+ <li><b>Set Folder ID in 'Folder ID' property</b>
+ </li>
+</ol>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.PutBoxFile/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.PutBoxFile/index.html
new file mode 100644
index 0000000..c4525ba
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-nar/2.0.0-M1/org.apache.nifi.processors.box.PutBoxFile/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutBoxFile</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutBoxFile</h1><h2>Description: </h2><p>Puts content to a Box folder.</p><p><a href="additionalDetails [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-services-nar/2.0.0-M1/org.apache.nifi.box.controllerservices.JsonConfigBasedBoxClientService/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-services-nar/2.0.0-M1/org.apache.nifi.box.controllerservices.JsonConfigBasedBoxClientService/additionalDetails.html
new file mode 100644
index 0000000..e66f9eb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-services-nar/2.0.0-M1/org.apache.nifi.box.controllerservices.JsonConfigBasedBoxClientService/additionalDetails.html
@@ -0,0 +1,49 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>JsonConfigBasedBoxClientService</title>
+
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+
+<h1>Setting up a Box App</h1>
+
+<p>This processor requires a pre-configured App under the Account owning the resources being accessed (https://app.box.com/developers/console).</p>
+<p>The App should have the following configuration:</p>
+<ul>
+ <li>
+ If you create a new App, select 'Server Authentication (with JWT)' authentication method.
+ <br/>If you want to use an existing App, choose one with 'OAuth 2.0 with JSON Web Tokens (Server Authentication)' as Authentication method.
+ </li>
+ <li>Should have a 'Client ID' and 'Client Secret'.</li>
+ <li>'App Access Level' should be 'App + Enterprise Access'.</li>
+ <li>'Application Scopes' should have 'Write all files and folders in Box' enabled.</li>
+ <li>'Advanced Features' should have 'Generate user access tokens' and 'Make API calls using the as-user header' enabled.</li>
+ <li>
+ Under 'Add and Manage Public Keys' generate a Public/Private Keypair and download the configuration JSON file (under App Settings). The full path of this file should be set in the 'Box Config File' property.
+ <br/>Note that you can only download the configuration JSON with the keypair details only once, when you generate the keypair. Also this is the only time Box will show you the private key.
+ <br/>If you want to download the configuration JSON file later (under 'App Settings') - or if you want to use your own keypair - after you download it you need to edit the file and add the keypair details manually.
+ </li>
+ <li>
+ After all settings are done, the App needs to be reauthorized on the admin page. ('Reauthorize App' at https://app.box.com/master/custom-apps.)
+ <br/>If the app is configured for the first time it needs to be added ('Add App') before it can be authorized.
+ </li>
+</ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-services-nar/2.0.0-M1/org.apache.nifi.box.controllerservices.JsonConfigBasedBoxClientService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-services-nar/2.0.0-M1/org.apache.nifi.box.controllerservices.JsonConfigBasedBoxClientService/index.html
new file mode 100644
index 0000000..a0259ed
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-box-services-nar/2.0.0-M1/org.apache.nifi.box.controllerservices.JsonConfigBasedBoxClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JsonConfigBasedBoxClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JsonConfigBasedBoxClientService</h1><h2>Description: </h2><p>Provides Box client [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.PutCassandraQL/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.PutCassandraQL/index.html
new file mode 100644
index 0000000..aa355c8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.PutCassandraQL/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCassandraQL</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCassandraQL</h1><h2>Description: </h2><p>Execute provided Cassandra Query Language (CQL) statem [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.PutCassandraRecord/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.PutCassandraRecord/index.html
new file mode 100644
index 0000000..089cdb3
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.PutCassandraRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCassandraRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCassandraRecord</h1><h2>Description: </h2><p>This is a record aware processor that reads th [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.QueryCassandra/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.QueryCassandra/index.html
new file mode 100644
index 0000000..00854b3
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-nar/2.0.0-M1/org.apache.nifi.processors.cassandra.QueryCassandra/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryCassandra</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryCassandra</h1><h2>Description: </h2><p>Execute provided Cassandra Query Language (CQL) select [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-services-nar/2.0.0-M1/org.apache.nifi.controller.cassandra.CassandraDistributedMapCache/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-services-nar/2.0.0-M1/org.apache.nifi.controller.cassandra.CassandraDistributedMapCache/index.html
new file mode 100644
index 0000000..9641675
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-services-nar/2.0.0-M1/org.apache.nifi.controller.cassandra.CassandraDistributedMapCache/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CassandraDistributedMapCache</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CassandraDistributedMapCache</h1><h2>Description: </h2><p>Provides a DistributedMapC [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-services-nar/2.0.0-M1/org.apache.nifi.service.CassandraSessionProvider/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-services-nar/2.0.0-M1/org.apache.nifi.service.CassandraSessionProvider/index.html
new file mode 100644
index 0000000..b5315bd
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cassandra-services-nar/2.0.0-M1/org.apache.nifi.service.CassandraSessionProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CassandraSessionProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CassandraSessionProvider</h1><h2>Description: </h2><p>Provides connection session for Ca [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cdc-mysql-nar/2.0.0-M1/org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cdc-mysql-nar/2.0.0-M1/org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL/index.html
new file mode 100644
index 0000000..2778c3e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cdc-mysql-nar/2.0.0-M1/org.apache.nifi.cdc.mysql.processors.CaptureChangeMySQL/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CaptureChangeMySQL</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CaptureChangeMySQL</h1><h2>Description: </h2><p>Retrieves Change Data Capture (CDC) events fro [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContent/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContent/additionalDetails.html
new file mode 100644
index 0000000..11c1a26
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContent/additionalDetails.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <head>
+ <meta charset="UTF-8">
+ <title>DecryptContent</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+ <body>
+ <h2>Summary</h2>
+ <p>
+ This Processor supports decryption using the Advanced Encryption Standard algorithm with modern key derivation
+ functions and formats defined in the EncryptContent Processor.
+ Decryption processing is capable of selecting the necessary key derivation function based on reading the header
+ bytes of input files. The Processor supports password-based decryption or key-based decryption depending on
+ configured properties.
+ </p>
+ <h2>Configuration</h2>
+ <p>
+ This Processor can be configured to decrypt information encrypted using the EncryptContent Processor. Successful
+ decryption requires selecting matching algorithm and password properties.
+ </p>
+ <h3>Cipher Algorithm Property Values</h3>
+ <table>
+ <tbody>
+ <tr>
+ <th>Cipher Algorithm Mode</th>
+ <th>Cipher Algorithm Padding</th>
+ <th>EncryptContent Encryption Algorithm</th>
+ </tr>
+ <tr>
+ <td>CBC</td>
+ <td>NoPadding</td>
+ <td>AES_CBC_NO_PADDING</td>
+ </tr>
+ <tr>
+ <td>CBC</td>
+ <td>PKCS5Padding</td>
+ <td>AES_CBC</td>
+ </tr>
+ <tr>
+ <td>CTR</td>
+ <td>NoPadding</td>
+ <td>AES_CTR</td>
+ </tr>
+ <tr>
+ <td>GCM</td>
+ <td>NoPadding</td>
+ <td>AES_GCM</td>
+ </tr>
+ </tbody>
+ </table>
+ </body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContent/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContent/index.html
new file mode 100644
index 0000000..e316e29
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContent/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DecryptContent</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DecryptContent</h1><h2>Description: </h2><p>Decrypt content encrypted with AES and encoded accordi [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentAge/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentAge/index.html
new file mode 100644
index 0000000..54409f2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentAge/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DecryptContentAge</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DecryptContentAge</h1><h2>Description: </h2><p>Decrypt content using the age-encryption.org/v1 [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentCompatibility/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentCompatibility/additionalDetails.html
new file mode 100644
index 0000000..962b8ee
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentCompatibility/additionalDetails.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="en">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <head>
+ <meta charset="UTF-8">
+ <title>DecryptContentCompatibility</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+ <body>
+ <h2>Summary</h2>
+ <p>
+ This Processor supports decryption using legacy formats and Password-Based Encryption Algorithms.
+ <a href="https://www.rfc-editor.org/rfc/rfc8018" target="_blank">RFC 8018</a> defines the Password-Based Cryptography
+ Specification Version 2.1, including several of the supported encryption schemes described in Section 6.1
+ as PBES1. According to the specification, PBES1 is not recommended for new applications, and this Processor
+ exists for the purpose of providing compatibility with historical information. The supported key derivation
+ strategies align with implementations in OpenSSL and the Java Simplified Encryption library.
+ </p>
+ <h2>Configuration</h2>
+ <p>
+ This Processor can be configured to decrypt information encrypted using the EncryptContent Processor. Successful
+ decryption requires selecting matching algorithm and password properties.
+ </p>
+ <h3>Key Derivation Property Values</h3>
+ <table>
+ <tbody>
+ <tr>
+ <th>DecryptContentCompatibility</th>
+ <th>EncryptContent</th>
+ </tr>
+ <tr>
+ <td>JASYPT_STANDARD</td>
+ <td>NiFi Legacy KDF</td>
+ </tr>
+ <tr>
+ <td>OPENSSL_EVP_BYTES_TO_KEY</td>
+ <td>OpenSSL EVP_BytesToKey</td>
+ </tr>
+ </tbody>
+ </table>
+ <h3>Encryption Scheme Property Values</h3>
+ <table>
+ <tbody>
+ <tr>
+ <th>DecryptContentCompatibility</th>
+ <th>EncryptContent</th>
+ </tr>
+ <tr>
+ <td>PBE_WITH_MD5_AND_AES_CBC_128</td>
+ <td>MD5_128AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_MD5_AND_AES_CBC_192</td>
+ <td>MD5_192AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_MD5_AND_AES_CBC_256</td>
+ <td>MD5_256AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_MD5_AND_DES</td>
+ <td>MD5_DES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_MD5_AND_RC2</td>
+ <td>MD5_RC2</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_AES_CBC_128</td>
+ <td>SHA_128AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_AES_CBC_192</td>
+ <td>SHA_192AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_AES_CBC_256</td>
+ <td>SHA_256AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_DES</td>
+ <td>SHA1_DES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_DESEDE_128</td>
+ <td>SHA_2KEYTRIPLEDES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_DESEDE_192</td>
+ <td>SHA_3KEYTRIPLEDES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_RC2</td>
+ <td>SHA1_RC2</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_RC2_40</td>
+ <td>SHA_40RC2</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_RC2_128</td>
+ <td>SHA_128RC2</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_RC4_40</td>
+ <td>SHA_40RC4</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_RC4_128</td>
+ <td>SHA_128RC4</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA1_AND_TWOFISH</td>
+ <td>SHA_TWOFISH</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA256_AND_AES_CBC_128</td>
+ <td>SHA256_128AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA256_AND_AES_CBC_192</td>
+ <td>SHA256_192AES</td>
+ </tr>
+ <tr>
+ <td>PBE_WITH_SHA256_AND_AES_CBC_256</td>
+ <td>SHA256_256AES</td>
+ </tr>
+ </tbody>
+ </table>
+ </body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentCompatibility/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentCompatibility/index.html
new file mode 100644
index 0000000..84c040c
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.DecryptContentCompatibility/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DecryptContentCompatibility</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DecryptContentCompatibility</h1><h2>Description: </h2><p>Decrypt content using passwo [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.EncryptContentAge/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.EncryptContentAge/index.html
new file mode 100644
index 0000000..70d647a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.EncryptContentAge/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>EncryptContentAge</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">EncryptContentAge</h1><h2>Description: </h2><p>Encrypt content using the age-encryption.org/v1 [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.VerifyContentMAC/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.VerifyContentMAC/index.html
new file mode 100644
index 0000000..1d7a618
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-cipher-nar/2.0.0-M1/org.apache.nifi.processors.cipher.VerifyContentMAC/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>VerifyContentMAC</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">VerifyContentMAC</h1><h2>Description: </h2><p>Calculates a Message Authentication Code using the [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-compress-nar/2.0.0-M1/org.apache.nifi.processors.compress.ModifyCompression/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-compress-nar/2.0.0-M1/org.apache.nifi.processors.compress.ModifyCompression/index.html
new file mode 100644
index 0000000..7e8f5ff
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-compress-nar/2.0.0-M1/org.apache.nifi.processors.compress.ModifyCompression/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ModifyCompression</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ModifyCompression</h1><h2>Description: </h2><p>Changes the compression algorithm used to compre [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentEncodedSchemaReferenceReader/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentEncodedSchemaReferenceReader/index.html
new file mode 100644
index 0000000..06cfb6b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentEncodedSchemaReferenceReader/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConfluentEncodedSchemaReferenceReader</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConfluentEncodedSchemaReferenceReader</h1><h2>Description: </h2><p>Reads Sc [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentEncodedSchemaReferenceWriter/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentEncodedSchemaReferenceWriter/index.html
new file mode 100644
index 0000000..b153efb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentEncodedSchemaReferenceWriter/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConfluentEncodedSchemaReferenceWriter</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConfluentEncodedSchemaReferenceWriter</h1><h2>Description: </h2><p>Writes S [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentSchemaRegistry/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentSchemaRegistry/index.html
new file mode 100644
index 0000000..c016af1
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-confluent-platform-nar/2.0.0-M1/org.apache.nifi.confluent.schemaregistry.ConfluentSchemaRegistry/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConfluentSchemaRegistry</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConfluentSchemaRegistry</h1><h2>Description: </h2><p>Provides a Schema Registry that inte [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseClusterService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseClusterService/index.html
new file mode 100644
index 0000000..885bd11
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseClusterService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseClusterService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseClusterService</h1><h2>Description: </h2><p>Provides a centralized Couchbase con [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseKeyValueLookupService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseKeyValueLookupService/index.html
new file mode 100644
index 0000000..d234399
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseKeyValueLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseKeyValueLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseKeyValueLookupService</h1><h2>Description: </h2><p>Lookup a string value [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseMapCacheClient/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseMapCacheClient/additionalDetails.html
new file mode 100644
index 0000000..376fc4d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseMapCacheClient/additionalDetails.html
@@ -0,0 +1,41 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>CouchbaseMapCacheClient</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>CouchbaseMapCacheClient</h2>
+
+<h3>Requirements</h3>
+
+<h4>Couchbase Server 4.0 or higher is required for some operation using N1QL</h4>
+
+Following cache operations require N1QL query, thus you need to deploy Couchbase Server 4.0 or higher for those operations. However, as of this writing (May 2017) there are only few processors using these operations. Most cache APIs are implemented using document id lookup and should work with older version of Couchbase Server.
+
+<ul>
+ <li>removeByPattern(String regex): This cache API removes entries by regex. Execute query like:
+ <pre>delete from `cache-bucket-name` where REGEX_CONTAINS(meta().id, "^key.*")</pre>
+ </li>
+</ul>
+
+In order to make N1QL work correctly you need to create a <a href="https://developer.couchbase.com/documentation/server/current/n1ql/n1ql-language-reference/createprimaryindex.html">Primary index</a> or an index covering N1QL queries performed by CouchbaseMapCacheClient. Please refer Couchbase Server documentations for how to create those.
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseMapCacheClient/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseMapCacheClient/index.html
new file mode 100644
index 0000000..2bf7c11
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseMapCacheClient/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseMapCacheClient</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseMapCacheClient</h1><h2>Description: </h2><p>Provides the ability to communicate [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseRecordLookupService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseRecordLookupService/index.html
new file mode 100644
index 0000000..c7f8beb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.couchbase.CouchbaseRecordLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CouchbaseRecordLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CouchbaseRecordLookupService</h1><h2>Description: </h2><p>Lookup a record from Couch [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.processors.couchbase.GetCouchbaseKey/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.processors.couchbase.GetCouchbaseKey/index.html
new file mode 100644
index 0000000..b83bf65
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.processors.couchbase.GetCouchbaseKey/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetCouchbaseKey</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetCouchbaseKey</h1><h2>Description: </h2><p>Get a document from Couchbase Server via Key/Value a [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.processors.couchbase.PutCouchbaseKey/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.processors.couchbase.PutCouchbaseKey/index.html
new file mode 100644
index 0000000..79b65f2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-couchbase-nar/2.0.0-M1/org.apache.nifi.processors.couchbase.PutCouchbaseKey/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutCouchbaseKey</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutCouchbaseKey</h1><h2>Description: </h2><p>Put a document to Couchbase Server via Key/Value acc [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-datadog-nar/2.0.0-M1/org.apache.nifi.reporting.datadog.DataDogReportingTask/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-datadog-nar/2.0.0-M1/org.apache.nifi.reporting.datadog.DataDogReportingTask/additionalDetails.html
new file mode 100644
index 0000000..0672a88
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-datadog-nar/2.0.0-M1/org.apache.nifi.reporting.datadog.DataDogReportingTask/additionalDetails.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+ <head>
+ <meta charset="utf-8" />
+ <title>DataDogReportingTask</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+
+ <body>
+ <h2>DataDogReportingTask</h2>
+
+ <p>This ReportingTask sends the following metrics to DataDog:</p>
+ <ul>
+ <li>FlowFilesReceivedLast5Minutes</li>
+ <li>BytesReceivedLast5Minutes</li>
+ <li>FlowFilesSentLast5Minutes</li>
+ <li>BytesSentLast5Minutes</li>
+ <li>FlowFilesQueued</li>
+ <li>BytesQueued</li>
+ <li>BytesReadLast5Minutes</li>
+ <li>BytesWrittenLast5Minutes</li>
+ <li>ActiveThreads</li>
+ <li>TotalTaskDurationSeconds</li>
+ <li>jvm.uptime</li>
+ <li>jvm.heap_used</li>
+ <li>jvm.heap_usage</li>
+ <li>jvm.non_heap_usage</li>
+ <li>jvm.thread_states.runnable</li>
+ <li>jvm.thread_states.blocked</li>
+ <li>jvm.thread_states.timed_waiting</li>
+ <li>jvm.thread_states.terminated</li>
+ <li>jvm.thread_count</li>
+ <li>jvm.daemon_thread_count</li>
+ <li>jvm.file_descriptor_usage</li>
+ <li>jvm.gc.runs</li>
+ <li>jvm.gc.time</li>
+ </ul>
+ </body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-datadog-nar/2.0.0-M1/org.apache.nifi.reporting.datadog.DataDogReportingTask/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-datadog-nar/2.0.0-M1/org.apache.nifi.reporting.datadog.DataDogReportingTask/index.html
new file mode 100644
index 0000000..bc2d943
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-datadog-nar/2.0.0-M1/org.apache.nifi.reporting.datadog.DataDogReportingTask/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DataDogReportingTask</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DataDogReportingTask</h1><h2>Description: </h2><p>Publishes metrics from NiFi to datadog. Fo [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.DBCPConnectionPool/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.DBCPConnectionPool/index.html
new file mode 100644
index 0000000..1b2fa70
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.DBCPConnectionPool/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DBCPConnectionPool</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DBCPConnectionPool</h1><h2>Description: </h2><p>Provides Database Connection Pooling Service. [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.DBCPConnectionPoolLookup/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.DBCPConnectionPoolLookup/index.html
new file mode 100644
index 0000000..248c644
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.DBCPConnectionPoolLookup/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DBCPConnectionPoolLookup</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DBCPConnectionPoolLookup</h1><h2>Description: </h2><p>Provides a DBCPService that can be [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.HikariCPConnectionPool/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.HikariCPConnectionPool/index.html
new file mode 100644
index 0000000..47f525b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.HikariCPConnectionPool/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HikariCPConnectionPool</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HikariCPConnectionPool</h1><h2>Description: </h2><p>Provides Database Connection Pooling S [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.record.sink.db.DatabaseRecordSink/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.record.sink.db.DatabaseRecordSink/index.html
new file mode 100644
index 0000000..08f37f6
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dbcp-service-nar/2.0.0-M1/org.apache.nifi.record.sink.db.DatabaseRecordSink/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DatabaseRecordSink</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DatabaseRecordSink</h1><h2>Description: </h2><p>Provides a service to write records using a co [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService/index.html
new file mode 100644
index 0000000..f3b4556
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.client.DistributedMapCacheClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedMapCacheClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedMapCacheClientService</h1><h2>Description: </h2><p>Provides the abili [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.client.DistributedSetCacheClientService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.client.DistributedSetCacheClientService/index.html
new file mode 100644
index 0000000..739bbfd
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.client.DistributedSetCacheClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedSetCacheClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedSetCacheClientService</h1><h2>Description: </h2><p>Provides the abili [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.server.DistributedSetCacheServer/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.server.DistributedSetCacheServer/index.html
new file mode 100644
index 0000000..ba2dcaf
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.server.DistributedSetCacheServer/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedSetCacheServer</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedSetCacheServer</h1><h2>Description: </h2><p>Provides a set (collection of un [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer/index.html
new file mode 100644
index 0000000..990df04
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-distributed-cache-services-nar/2.0.0-M1/org.apache.nifi.distributed.cache.server.map.DistributedMapCacheServer/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedMapCacheServer</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedMapCacheServer</h1><h2>Description: </h2><p>Provides a map (key/value) cache [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.FetchDropbox/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.FetchDropbox/index.html
new file mode 100644
index 0000000..7ca1853
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.FetchDropbox/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchDropbox</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchDropbox</h1><h2>Description: </h2><p>Fetches files from Dropbox. Designed to be used in tandem [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.ListDropbox/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.ListDropbox/index.html
new file mode 100644
index 0000000..e167b42
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.ListDropbox/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListDropbox</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListDropbox</h1><h2>Description: </h2><p>Retrieves a listing of files from Dropbox (shortcuts are ign [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.PutDropbox/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.PutDropbox/index.html
new file mode 100644
index 0000000..0595e5d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-processors-nar/2.0.0-M1/org.apache.nifi.processors.dropbox.PutDropbox/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutDropbox</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutDropbox</h1><h2>Description: </h2><p>Puts content to a Dropbox folder.</p><h3>Tags: </h3><p>dropbox [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-services-nar/2.0.0-M1/org.apache.nifi.services.dropbox.StandardDropboxCredentialService/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-services-nar/2.0.0-M1/org.apache.nifi.services.dropbox.StandardDropboxCredentialService/additionalDetails.html
new file mode 100644
index 0000000..4c4cb92
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-services-nar/2.0.0-M1/org.apache.nifi.services.dropbox.StandardDropboxCredentialService/additionalDetails.html
@@ -0,0 +1,105 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>StandardDropboxCredentialService</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Generating credentials for Dropbox authentication</h1>
+
+<p>
+ StandardDropboxCredentialService requires "App Key", "App Secret", "Access Token" and "Refresh Token". <br><br>
+ This document describes how to generate these credentials using an existing Dropbox account.
+</p>
+
+<h3>Generate App Key and App Secret</h3>
+
+<p>
+<ul>
+ <li> Login with your Dropbox account.</li>
+ <li>If you already have an app created, go to <a href="https://www.dropbox.com/developers">Dropbox Developers</a> page,
+ click on "App Console" button and select your app. On the app's info page you will find the "App key" and "App secret".<br>
+ (See also <a href="https://www.dropbox.com/developers/reference/getting-started"> Dropbox Getting Started</a>, App Console tab, "Navigating the App Console" chapter)</li>
+
+ <li> If you don't have any apps, go to <a href="https://www.dropbox.com/developers">Dropbox Developers</a> page and
+ click on "Create app" button. (See also <a href="https://www.dropbox.com/developers/reference/getting-started"> Dropbox Getting Started</a>, App Console tab,
+ "Creating a Dropbox app" chapter.)
+ <ul>
+ <li> On the next page select "Scoped access" and "Full Dropbox" as access type.</li>
+ <li> Provide a name for your app.</li>
+ <li>On the app's info page you will find the "App key" and "App secret".
+ (See also <a href="https://www.dropbox.com/developers/reference/getting-started">
+ Dropbox Getting Started</a>, App Console tab, "Navigating the App Console" chapter.)
+ </li>
+ </ul>
+ </li>
+</ul>
+</p>
+
+<h3>Set required permissions for your app</h3>
+<p>The "files.content.read" permission has to be enabled for the application to be able to read the files in Dropbox.<br><br>
+You can set permissions in <a href="https://www.dropbox.com/developers">Dropbox Developers</a> page.
+<li> Click on "App Console" button and select your app.</li>
+<li> Go to "Permissions" tab and enable the "files.content.read" permission.</li>
+<li> Click "Submit" button.</li>
+<li> NOTE: In case you already have an Access Token and Refresh Token, those tokens have to be regenerated after the permission change.
+See "Generate Access Token and Refresh Token" chapter about token generation.</li>
+</p>
+
+<h3>Generate Access Token and Refresh Token</h3>
+<p>
+ <ul>
+ <li>Go to the following web page:
+
+ <pre>https://www.dropbox.com/oauth2/authorize?token_access_type=offline&response_type=code&client_id=<i>your_app_key</i></pre></li>
+
+ <li>Click "Next" and click on "Allow" button on the next page.</li>
+ <li>An access code will be generated for you, it will be displayed on the next page:</li>
+ <pre>
+ "Access Code Generated
+ Enter this code into your_app_name to finish the process
+ <i>your_generated_access_code</i>"
+ </pre>
+ <li>Execute the following command from terminal to fetch the access and refresh tokens. <br><br>
+ Make sure you execute the curl command right after the access code generation, since the code expires very quickly.<br>
+ In case the curl command returns "invalid grant" error, please generate a new access code (see previous step)<br>
+
+ <pre>curl https://api.dropbox.com/oauth2/token -d code=<i>your_generated_access_code</i> -d grant_type=authorization_code -u <i>your_app_key</i>:<i>your_app_secret</i></pre>
+ <br><br>
+ </li>
+ <li>The curl command results a json file which contains the "access_token" and "refresh_token":</li>
+ <code>
+ <pre>
+ {
+ "access_token": "sl.xxxxxxxxxxx"
+ "expires_in": 14400,
+ "refresh_token": "xxxxxx",
+ "scope": "files.content.read files.metadata.read",
+ "uid": "xxxxxx",
+ "account_id": "dbid:xxxx"
+ }
+ </pre>
+</code>
+</ul>
+</p>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-services-nar/2.0.0-M1/org.apache.nifi.services.dropbox.StandardDropboxCredentialService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-services-nar/2.0.0-M1/org.apache.nifi.services.dropbox.StandardDropboxCredentialService/index.html
new file mode 100644
index 0000000..4a09401
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-dropbox-services-nar/2.0.0-M1/org.apache.nifi.services.dropbox.StandardDropboxCredentialService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardDropboxCredentialService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardDropboxCredentialService</h1><h2>Description: </h2><p>Defines credential [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/additionalDetails.html
new file mode 100644
index 0000000..5a563e7
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/additionalDetails.html
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>ElasticSearchClientServiceImpl</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+
+<h2>Sniffing</h2>
+<p>
+ The Elasticsearch Sniffer can be used to locate Elasticsearch Nodes within a Cluster to which you are connecting.
+ This can be beneficial if your cluster dynamically changes over time, e.g. new Nodes are added to maintain performance during heavy load.
+</p>
+<p>
+ Sniffing can also be used to update the list of Hosts within the Cluster if a connection Failure is encountered during operation.
+ In order to "Sniff on Failure", you <b>must</b> also enable "Sniff Cluster Nodes".
+</p>
+<p>
+ Not all situations make sense to use Sniffing, for example if:
+ <ul>
+ <li>Elasticsearch is situated behind a load balancer, which dynamically routes connections from NiFi</li>
+ <li>Elasticsearch is on a different network to NiFi</li>
+ </ul>
+</p>
+<p>
+ There may also be need to set some of the <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html">
+ Elasticsearch Networking Advanced Settings</a>, such as <code>network.publish_host</code> to ensure that
+ the HTTP Hosts found by the Sniffer are accessible by NiFi. For example, Elasticsearch may use a network internal
+ <code>publish_host</code> that is inaccessible to NiFi, but instead should use an address/IP that NiFi understands.
+ It may also be necessary to add this same address to Elasticsearch's <code>network.bind_host</code> list.
+</p>
+<p>
+ See <a href="https://www.elastic.co/blog/elasticsearch-sniffing-best-practices-what-when-why-how">
+ Elasticsearch sniffing best practices: What, when, why, how</a> for more details of the best practices.
+</p>
+
+<h2>Resources Usage Consideration</h2>
+
+<p>
+ This Elasticsearch client relies on a <code>RestClient</code> using the Apache HTTP Async Client. By default, it will start one
+ dispatcher thread, and a number of worker threads used by the connection manager. There will be as many worker thread as the number
+ of locally detected processors/cores on the NiFi host. Consequently, it is highly recommended to have only one instance of this
+ controller service per remote Elasticsearch destination and have this controller service shared across all of the Elasticsearch
+ processors of the NiFi flows. Having a very high number of instances could lead to resource starvation and result in OOM errors.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/index.html
new file mode 100644
index 0000000..7e1e08a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchClientServiceImpl/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ElasticSearchClientServiceImpl</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ElasticSearchClientServiceImpl</h1><h2>Description: </h2><p>A controller service f [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchLookupService/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchLookupService/additionalDetails.html
new file mode 100644
index 0000000..3b95430
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchLookupService/additionalDetails.html
@@ -0,0 +1,53 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>ElasticSearchLookupService</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<!-- Processor Documentation ================================================== -->
+<h2>Description:</h2>
+<p>
+ This lookup service uses ElasticSearch as its data source. Mappings in LookupRecord map record paths to paths within
+ an ElasticSearch document. Example:
+</p>
+<p>
+ <em>/user/name</em> => <em>user.contact.name</em>
+</p>
+<p>
+ That would map the record path <em>/user/name</em> to an embedded document named <em>contact</em> with a field named
+ <em>name</em>.
+</p>
+<p>
+ The query that is assembled from these is a boolean query where all of the criteria are under the <em>must</em> list.
+ In addition, wildcards are not supported right now and all criteria are translated into literal <em>match</em> queries.
+</p>
+<h2>Post-Processing</h2>
+<p>
+ Because an ElasticSearch result might be structured differently than the record which will be enriched by this service,
+ users can specify an additional set of mappings on this lookup service that map JsonPath operations to record paths. Example:
+</p>
+<p>
+ <em>$.user.contact.email</em> => <em>/user/email_address</em>
+</p>
+<p>
+ Would copy the field <em>email</em> from the embedded document <em>contact</em> into the record at that path.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchLookupService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchLookupService/index.html
new file mode 100644
index 0000000..fec66ac
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ElasticSearchLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ElasticSearchLookupService</h1><h2>Description: </h2><p>Lookup a record from Elasticse [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchStringLookupService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchStringLookupService/index.html
new file mode 100644
index 0000000..10302c1
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-client-service-nar/2.0.0-M1/org.apache.nifi.elasticsearch.ElasticSearchStringLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ElasticSearchStringLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ElasticSearchStringLookupService</h1><h2>Description: </h2><p>Lookup a string va [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..23ed422
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch/additionalDetails.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>SearchElasticsearch</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <p>This processor is intended for use with the Elasticsearch JSON DSL and Elasticsearch 5.X and newer. It is designed
+ to be able to create a JSON query using input properties and execute it against an Elasticsearch cluster in a paginated manner.
+ Like all processors in the "restapi" bundle, it uses the official Elastic client APIs, so it supports leader detection.</p>
+ <p>The query is paginated in Elasticsearch using one of the available methods - "Scroll" or "Search After" (optionally
+ with a "Point in Time" for Elasticsearch 7.10+ with XPack enabled). The number of results per page can be controlled using
+ the <em>size</em> property.</p>
+ <p>Results will be sorted on the field that is to be tracked, with the <em>sort order</em> set as a property.</p>
+ <p>Search results and aggregation results can be split up into multiple flowfiles. Aggregation results
+ will only be split at the top level because nested aggregations lose their context (and thus lose their value) if
+ separated from their parent aggregation. Additionally, the results from all pages can be combined into a single
+ flowfile (but the processor will only load each page of data into memory at any one time).</p>
+ <p>The following is an example query that would be created for tracking an "@timestamp" field:</p>
+ <pre>
+ {
+ "query": {
+ "size": 10000,
+ "sort": {"@timestamp": "desc"},
+ "bool": {
+ "filter": [
+ {"range": {"@timestamp": {"gt": "2023-09-01"}}}
+ ]
+ }
+ }
+ }
+ </pre>
+ <p>Additional "filter" entries can be added as a JSON string in the <em>query filter</em> property, for example:</p>
+ <pre>
+ [
+ {"term": {"department": "accounts"}},
+ {"term": {"title.keyword": "Annual Report"}}
+ ]
+ </pre>
+
+ <h2>Query Pagination Across Processor Executions</h2>
+ <p>This processor runs on a schedule in order to execute the same query repeatedly. Once a paginated query has been
+ initiated within Elasticsearch, this processor will continue to retrieve results for that same query until no
+ further results are available. After that point, a new paginated query will be initiated using the same Query JSON,
+ but with the "range" filter query's "gt" field set to the last value obtained from previous results.</p>
+ <p>If the results are "Combined" from this processor, then the paginated query will run continually within a
+ single invocation until no more results are available (then the processor will start a new paginated query upon its
+ next invocation). If the results are "Split" or "Per Page", then each invocation of this processor will retrieve the
+ next page of results until either there are no more results or the paginated query expires within Elasticsearch.</p>
+
+ <h2>Resetting Queries / Clearing Processor State</h2>
+ <p>Cluster State is used to track the progress of a paginated query within this processor. If there is need to restart
+ the query completely or change the processor configuration after a paginated query has already been started,
+ be sure to "Clear State" of the processor once it has been stopped and before restarting.</p>
+ <p>Note that clearing the processor's state will lose details of where the processor was up to with tracking documents retrieved.
+ Update the "Initial Value" with the appropriate value before restarting the processor to continue with where it was up to.</p>
+
+ <h2>Duplicate Results</h2>
+ <p>This processor does not attempt to de-duplicate results between queries, for example if the same query runs twice
+ and (some or all of) the results are identical, the output will contain these same results for both invocations.
+ This might happen if the NiFi Primary Node changes while a page of data is being retrieved, or if the processor
+ state is cleared, then the processor is restarted.</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch/index.html
new file mode 100644
index 0000000..cb547aa
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.ConsumeElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeElasticsearch</h1><h2>Description: </h2><p>A processor that repeatedly runs a paginat [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..05c19ad
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,43 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>DeleteByQueryElasticsearch</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <p>This processor executes a delete operation against one or more indices using the _delete_by_query handler. The
+ query should be a valid Elasticsearch JSON DSL query (Lucene syntax is not supported). An example query:</p>
+ <pre>
+ {
+ "query": {
+ "match": {
+ "username.keyword": "john.smith"
+ }
+ }
+ }
+ </pre>
+ <p>To delete all of the contents of an index, this could be used:</p>
+ <pre>
+ {
+ "query": {
+ "match_all": {}
+ }
+ }
+ </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/index.html
new file mode 100644
index 0000000..f4fd494
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.DeleteByQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteByQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteByQueryElasticsearch</h1><h2>Description: </h2><p>Delete from an Elasticsearch i [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.GetElasticsearch/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.GetElasticsearch/index.html
new file mode 100644
index 0000000..0bfb38c
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.GetElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetElasticsearch</h1><h2>Description: </h2><p>Elasticsearch get processor that uses the official [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..e9330ea
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>JsonQueryElasticsearch</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <p>This processor is intended for use with the Elasticsearch JSON DSL and Elasticsearch 5.X and newer. It is designed
+ to be able to take a JSON query (e.g. from Kibana) and execute it as-is against an Elasticsearch cluster. Like all processors in the
+ "restapi" bundle, it uses the official Elastic client APIs, so it supports leader detection.</p>
+ <p>The query JSON to execute can be provided either in the Query configuration property or in the content of the flowfile.
+ If the Query Attribute property is configured, the executed query JSON will be placed in the attribute provided by this property.</p>
+ <p>Additionally, search results and aggregation results can be split up into multiple flowfiles. Aggregation results
+ will only be split at the top level because nested aggregations lose their context (and thus lose their value) if
+ separated from their parent aggregation. The following is an example query that would be accepted:</p>
+ <pre>
+ {
+ "query": {
+ "match": {
+ "restaurant.keyword": "Local Pizzaz FTW Inc"
+ }
+ },
+ "aggs": {
+ "weekly_sales": {
+ "date_histogram": {
+ "field": "date",
+ "interval": "week"
+ },
+ "aggs": {
+ "items": {
+ "terms": {
+ "field": "product",
+ "size": 10
+ }
+ }
+ }
+ }
+ }
+ }
+ </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/index.html
new file mode 100644
index 0000000..ade974b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.JsonQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JsonQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JsonQueryElasticsearch</h1><h2>Description: </h2><p>A processor that allows the user to ru [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..944a464
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PaginatedJsonQueryElasticsearch</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <p>This processor is intended for use with the Elasticsearch JSON DSL and Elasticsearch 5.X and newer. It is designed
+ to be able to take a JSON query (e.g. from Kibana) and execute it as-is against an Elasticsearch cluster in a paginated manner.
+ Like all processors in the "restapi" bundle, it uses the official Elastic client APIs, so it supports leader detection.</p>
+ <p>The query JSON to execute can be provided either in the Query configuration property or in the content of the flowfile.
+ If the Query Attribute property is configured, the executed query JSON will be placed in the attribute provided by this property.</p>
+ <p>The query is paginated in Elasticsearch using one of the available methods - "Scroll" or "Search After" (optionally
+ with a "Point in Time" for Elasticsearch 7.10+ with XPack enabled). The number of results per page can be controlled using
+ the <em>size</em> parameter in the Query JSON. For Search After functionality, a <em>sort</em> parameter <strong>must</strong>
+ be present within the Query JSON.</p>
+ <p>Search results and aggregation results can be split up into multiple flowfiles. Aggregation results
+ will only be split at the top level because nested aggregations lose their context (and thus lose their value) if
+ separated from their parent aggregation. Additionally, the results from all pages can be combined into a single
+ flowfile (but the processor will only load each page of data into memory at any one time).</p>
+ <p>The following is an example query that would be accepted:</p>
+ <pre>
+ {
+ "query": {
+ "size": 10000,
+ "sort": {"product": "desc"},
+ "match": {
+ "restaurant.keyword": "Local Pizzaz FTW Inc"
+ }
+ },
+ "aggs": {
+ "weekly_sales": {
+ "date_histogram": {
+ "field": "date",
+ "interval": "week"
+ },
+ "aggs": {
+ "items": {
+ "terms": {
+ "field": "product",
+ "size": 10
+ }
+ }
+ }
+ }
+ }
+ }
+ </pre>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/index.html
new file mode 100644
index 0000000..2d89b2a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PaginatedJsonQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PaginatedJsonQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PaginatedJsonQueryElasticsearch</h1><h2>Description: </h2><p>A processor that all [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/additionalDetails.html
new file mode 100644
index 0000000..649f45b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/additionalDetails.html
@@ -0,0 +1,129 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PutElasticsearchJson</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+<p>
+ This processor is for accessing the Elasticsearch Bulk API. It provides the ability to configure bulk operations on
+ a per-FlowFile basis, which is what separates it from PutElasticsearchRecord.
+</p>
+<p>
+ As part of the Elasticsearch REST API bundle, it uses a controller service to manage connection information and
+ that controller service is built on top of the official Elasticsearch client APIs. That provides features such as
+ automatic master detection against the cluster which is missing in the other bundles.
+</p>
+<p>
+ This processor builds one Elasticsearch Bulk API body per (batch of) FlowFiles. Care should be taken to batch FlowFiles
+ into appropriately-sized chunks so that NiFi does not run out of memory and the requests sent to Elasticsearch are
+ not too large for it to handle. When failures do occur, this processor is capable of attempting to route the FlowFiles
+ that failed to an errors queue so that only failed FlowFiles can be processed downstream or replayed.
+</p>
+<p>
+ The index, operation and (optional) type fields are configured with default values.
+ The ID (optional unless the operation is "index") can be set as an attribute on the FlowFile(s).
+</p>
+
+<h3>Dynamic Templates</h3>
+<p>
+ Index and Create operations can use Dynamic Templates. The Dynamic Templates property must be parsable as a JSON object.
+</p>
+<h4>Example - Index with Dynamic Templates</h4>
+<pre>
+ {
+ "message": "Hello, world"
+ }
+</pre>
+<p>The Dynamic Templates property below would be parsable:</p>
+<pre>{"message": "keyword_lower"}</pre>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "index" : {"_id" : "1", "_index" : "test", "dynamic_templates" : {"message" : "keyword_lower"}} }
+ { "doc" : {"message" : "Hello, world"} }
+</pre>
+
+<h3>Update/Upsert Scripts</h3>
+<p>
+ Update and Upsert operations can use a script. Scripts must contain all the elements required by Elasticsearch, e.g. source and lang.
+ The Script property must be parsable as a JSON object.
+</p>
+<p>
+ If a script is defined for an upset, the Flowfile content will be used as the upsert fields in the Elasticsearch action.
+ If no script is defined, the FlowFile content will be used as the update doc (or doc_as_upsert for upsert operations).
+</p>
+<h4>Example - Update without Script</h4>
+<pre>
+ {
+ "message": "Hello, world",
+ "from": "john.smith"
+ }
+</pre>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "update" : {"_id" : "1", "_index" : "test"} }
+ { "doc" : {"message" : "Hello, world", "from" : "john.smith"} }
+</pre>
+<h4>Example - Upsert with Script</h4>
+<pre>
+ {
+ "counter": 1
+ }
+</pre>
+<p>The script property below would be parsable:</p>
+<pre>{"source": "ctx._source.counter += params.param1", "lang": "painless", "params": {"param1": 1}}</pre>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "update" : {"_id" : "1", "_index" : "test"} }
+ { "script" : { "source": "ctx._source.counter += params.param1", "lang" : "painless", "params" : {"param1" : 1}}, "upsert" : {"counter" : 1}}
+</pre>
+
+<h3>Bulk Action Header Fields</h3>
+<p>
+ Dynamic Properties can be defined on the processor with <i>BULK:</i> prefixes.
+ Users must ensure that only known Bulk action fields are sent to Elasticsearch for the relevant index operation defined for the FlowFile,
+ Elasticsearch will reject invalid combinations of index operation and Bulk action fields.
+</p>
+<h4>Example - Update with Retry on Conflict</h4>
+<pre>
+ {
+ "message": "Hello, world",
+ "from": "john.smith"
+ }
+</pre>
+<p>With the Dynamic Property below:</p>
+<ul>
+ <li>BULK:retry_on_conflict = 3</li>
+</ul>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "update" : {"_id" : "1", "_index" : "test", "retry_on_conflict" : "3"} }
+ { "doc" : {"message" : "Hello, world", "from" : "john.smith"} }
+</pre>
+
+<h3>Index Operations</h3>
+<p>Valid values for "operation" are:</p>
+<ul>
+ <li>create</li>
+ <li>delete</li>
+ <li>index</li>
+ <li>update</li>
+ <li>upsert</li>
+</ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/index.html
new file mode 100644
index 0000000..07b3d03
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchJson/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutElasticsearchJson</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutElasticsearchJson</h1><h2>Description: </h2><p>An Elasticsearch put processor that uses t [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/additionalDetails.html
new file mode 100644
index 0000000..231c939
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/additionalDetails.html
@@ -0,0 +1,187 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PutElasticsearchRecord</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+<p>
+ This processor is for accessing the Elasticsearch Bulk API. It provides the ability to configure bulk operations on
+ a per-record basis which is what separates it from PutElasticsearchJson. For example, it is possible to define
+ multiple commands to index documents, followed by deletes, creates and update operations against the same index or
+ other indices as desired.
+</p>
+<p>
+ As part of the Elasticsearch REST API bundle, it uses a controller service to manage connection information and
+ that controller service is built on top of the official Elasticsearch client APIs. That provides features such as
+ automatic master detection against the cluster which is missing in the other bundles.
+</p>
+<p>
+ This processor builds one Elasticsearch Bulk API body per record set. Care should be taken to split up record sets
+ into appropriately-sized chunks so that NiFi does not run out of memory and the requests sent to Elasticsearch are
+ not too large for it to handle. When failures do occur, this processor is capable of attempting to write the records
+ that failed to an output record writer so that only failed records can be processed downstream or replayed.
+</p>
+
+<h3>Per-Record Actions</h3>
+<p>
+ The index, operation and (optional) type fields are configured with default values that can be overridden using
+ record path operations that find an index or type value in the record set.
+ The ID and operation type (create, index, update, upsert or delete) can also be extracted in a similar fashion from
+ the record set.
+ An "@timestamp" field can be added to the data either using a default or by extracting it from the record set.
+ This is useful if the documents are being indexed into an Elasticsearch Data Stream.
+</p>
+<h4>Example - per-record actions</h4>
+<p>The following is an example of a document exercising all of these features:</p>
+<pre>
+ {
+ "metadata": {
+ "id": "12345",
+ "index": "test",
+ "type": "message",
+ "operation": "index"
+ },
+ "message": "Hello, world",
+ "from": "john.smith",
+ "ts": "2021-12-03'T'14:00:00.000Z"
+ }
+</pre>
+<pre>
+ {
+ "metadata": {
+ "id": "12345",
+ "index": "test",
+ "type": "message",
+ "operation": "delete"
+ }
+ }
+</pre>
+<p>The record path operations below would extract the relevant data:</p>
+<ul>
+ <li>/metadata/id</li>
+ <li>/metadata/index</li>
+ <li>metadata/type</li>
+ <li>metadata/operation</li>
+ <li>/ts</li>
+</ul>
+
+<h3>Dynamic Templates</h3>
+<p>
+ Index and Create operations can use Dynamic Templates from the Record, record path operations can be configured to
+ find the Dynamic Templates from the record set. Dynamic Templates fields in Records must either be a Map,
+ child Record or a string that can be parsable as a JSON object.
+</p>
+<h4>Example - Index with Dynamic Templates</h4>
+<pre>
+ {
+ "message": "Hello, world",
+ "dynamic_templates": "{\"message\": \"keyword_lower\"}"
+ }
+</pre>
+<p>The record path operation below would extract the relevant Dynamic Templates:</p>
+<ul>
+ <li>/dynamic_templates</li>
+</ul>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "index" : {"_id" : "1", "_index" : "test", "dynamic_templates" : {"message" : "keyword_lower"}} }
+ { "doc" : {"message" : "Hello, world"} }
+</pre>
+
+<h3>Update/Upsert Scripts</h3>
+<p>
+ Update and Upsert operations can use a script from the Record, record path operations can be configured to
+ find the script from the record set. Scripts must contain all the elements required by Elasticsearch, e.g. source and lang.
+ Script fields in Records must either be a Map, child Record or a string that can be parsable as a JSON object.
+</p>
+<p>
+ If a script is defined for an upset, any fields remaining in the Record will be used as the upsert fields in the Elasticsearch action.
+ If no script is defined, all Record fields will be used as the update doc (or doc_as_upsert for upsert operations).
+</p>
+<h4>Example - Update without Script</h4>
+<pre>
+ {
+ "message": "Hello, world",
+ "from": "john.smith"
+ }
+</pre>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "update" : {"_id" : "1", "_index" : "test"} }
+ { "doc" : {"message" : "Hello, world", "from" : "john.smith"} }
+</pre>
+<h4>Example - Upsert with Script</h4>
+<pre>
+ {
+ "counter": 1,
+ "script" {
+ "source": "ctx._source.counter += params.param1",
+ "lang": "painless",
+ "params": {
+ "param1": 1
+ }
+ }
+ }
+</pre>
+<p>The record path operation below would extract the relevant script:</p>
+<ul>
+ <li>/script</li>
+</ul>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "update" : {"_id" : "1", "_index" : "test"} }
+ { "script" : { "source": "ctx._source.counter += params.param1", "lang" : "painless", "params" : {"param1" : 1}}, "upsert" : {"counter" : 1}}
+</pre>
+
+<h3>Bulk Action Header Fields</h3>
+<p>
+ Dynamic Properties can be defined on the processor with <i>BULK:</i> prefixes. The value of the Dynamic Property
+ is a record path operation to find the field value from the record set.
+ Users must ensure that only known Bulk action fields are sent to Elasticsearch for the relevant index operation defined for the Record,
+ Elasticsearch will reject invalid combinations of index operation and Bulk action fields.
+</p>
+<h4>Example - Update with Retry on Conflict</h4>
+<pre>
+ {
+ "message": "Hello, world",
+ "from": "john.smith",
+ "retry": 3
+ }
+</pre>
+<p>The Dynamic Property and record path operation below would extract the relevant field:</p>
+<ul>
+ <li>BULK:retry_on_conflict = /retry</li>
+</ul>
+<p>Would create Elasticsearch action:</p>
+<pre>
+ { "update" : {"_id" : "1", "_index" : "test", "retry_on_conflict" : 3} }
+ { "doc" : {"message" : "Hello, world", "from" : "john.smith"} }
+</pre>
+
+<h3>Index Operations</h3>
+<p>Valid values for "operation" are:</p>
+<ul>
+ <li>create</li>
+ <li>delete</li>
+ <li>index</li>
+ <li>update</li>
+ <li>upsert</li>
+</ul>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/index.html
new file mode 100644
index 0000000..28b1ff8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.PutElasticsearchRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutElasticsearchRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutElasticsearchRecord</h1><h2>Description: </h2><p>A record-aware Elasticsearch put proce [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..aeb32b5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/additionalDetails.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>SearchElasticsearch</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <p>This processor is intended for use with the Elasticsearch JSON DSL and Elasticsearch 5.X and newer. It is designed
+ to be able to take a JSON query (e.g. from Kibana) and execute it as-is against an Elasticsearch cluster in a paginated manner.
+ Like all processors in the "restapi" bundle, it uses the official Elastic client APIs, so it supports leader detection.</p>
+ <p>The query to execute must be provided in the Query configuration property.</p>
+ <p>The query is paginated in Elasticsearch using one of the available methods - "Scroll" or "Search After" (optionally
+ with a "Point in Time" for Elasticsearch 7.10+ with XPack enabled). The number of results per page can be controlled using
+ the <em>size</em> parameter in the Query JSON. For Search After functionality, a <em>sort</em> parameter <strong>must</strong>
+ be present within the Query JSON.</p>
+ <p>Search results and aggregation results can be split up into multiple flowfiles. Aggregation results
+ will only be split at the top level because nested aggregations lose their context (and thus lose their value) if
+ separated from their parent aggregation. Additionally, the results from all pages can be combined into a single
+ flowfile (but the processor will only load each page of data into memory at any one time).</p>
+ <p>The following is an example query that would be accepted:</p>
+ <pre>
+ {
+ "query": {
+ "size": 10000,
+ "sort": {"product": "desc"},
+ "match": {
+ "restaurant.keyword": "Local Pizzaz FTW Inc"
+ }
+ },
+ "aggs": {
+ "weekly_sales": {
+ "date_histogram": {
+ "field": "date",
+ "interval": "week"
+ },
+ "aggs": {
+ "items": {
+ "terms": {
+ "field": "product",
+ "size": 10
+ }
+ }
+ }
+ }
+ }
+ }
+ </pre>
+
+ <h2>Query Pagination Across Processor Executions</h2>
+ <p>This processor runs on a schedule in order to execute the same query repeatedly. Once a paginated query has been
+ initiated within Elasticsearch, this processor will continue to retrieve results for that same query until no
+ further results are available. After that point, a new paginated query will be initiated using the same Query JSON.</p>
+ <p>If the results are "Combined" from this processor, then the paginated query will run continually within a
+ single invocation until no more results are available (then the processor will start a new paginated query upon its
+ next invocation). If the results are "Split" or "Per Page", then each invocation of this processor will retrieve the
+ next page of results until either there are no more results or the paginated query expires within Elasticsearch.</p>
+
+ <h2>Resetting Queries / Clearing Processor State</h2>
+ <p>Local State is used to track the progress of a paginated query within this processor. If there is need to restart
+ the query completely or change the processor configuration after a paginated query has already been started,
+ be sure to "Clear State" of the processor once it has been stopped and before restarting.</p>
+
+ <h2>Duplicate Results</h2>
+ <p>This processor does not attempt to de-duplicate results between queries, for example if the same query runs twice
+ and (some or all of) the results are identical, the output will contain these same results for both invocations.
+ This might happen if the NiFi Primary Node changes while a page of data is being retrieved, or if the processor
+ state is cleared, then the processor is restarted.</p>
+ <p>This processor will continually run the same query unless the processor properties are updated, so unless
+ the data in Elasticsearch has changed, the same data will be retrieved multiple times.s</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/index.html
new file mode 100644
index 0000000..c463bfe
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.SearchElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>SearchElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">SearchElasticsearch</h1><h2>Description: </h2><p>A processor that allows the user to repeated [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/additionalDetails.html
new file mode 100644
index 0000000..f747a30
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/additionalDetails.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>UpdateByQueryElasticsearch</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <p>This processor executes an update operation against one or more indices using the _update_by_query handler. The
+ query should be a valid Elasticsearch JSON DSL query (Lucene syntax is not supported). An optional Elasticsearch
+ script can be specified to execute against the matched documents. An example query with script:</p>
+ <pre>
+ {
+ "script": {
+ "source": "ctx._source.count++",
+ "lang": "painless"
+ },
+ "query": {
+ "match": {
+ "username.keyword": "john.smith"
+ }
+ }
+ }
+ </pre>
+ <p>To update all of the contents of an index, this could be used:</p>
+ <pre>
+ {
+ "query": {
+ "match_all": {}
+ }
+ }
+ </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/index.html
new file mode 100644
index 0000000..68a9ad7
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-elasticsearch-restapi-nar/2.0.0-M1/org.apache.nifi.processors.elasticsearch.UpdateByQueryElasticsearch/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>UpdateByQueryElasticsearch</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">UpdateByQueryElasticsearch</h1><h2>Description: </h2><p>Update documents in an Elastic [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumeIMAP/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumeIMAP/additionalDetails.html
new file mode 100644
index 0000000..dd51b76
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumeIMAP/additionalDetails.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<head>
+<meta charset="utf-8" />
+<title>ConsumeIMAP</title>
+<link rel="stylesheet" href="../../../../../css/component-usage.css"
+ type="text/css" />
+</head>
+
+<body>
+ <!-- Processor Documentation ================================================== -->
+ <h2>Description:</h2>
+ <p>This Processor consumes email messages via IMAP protocol and sends the content of an email message as content of the Flow File.
+ Content of the incoming email message is written as raw bytes to the content of the outgoing Flow File.
+ </p>
+
+ <p>Different email providers may require additional Java Mail properties which could be provided as dynamic properties.
+ For example, below is a sample configuration for GMail:
+
+ </p>
+ <p>
+ <b>Processor's static properties:</b>
+ <ul>
+ <li><b>Host Name</b> - imap.gmail.com</li>
+ <li><b>Port</b> - 993</li>
+ <li><b>User Name</b> - <i>[your user name]</i></li>
+ <li><b>Password</b> - <i>[your password]</i></li>
+ <li><b>Folder</b> - INBOX</li>
+ </ul>
+ <b>Processor's dynamic properties:</b>
+ <ul>
+ <li><b>mail.imap.socketFactory.class</b> - javax.net.ssl.SSLSocketFactory</li>
+ <li><b>mail.imap.socketFactory.fallback</b> - false</li>
+ <li><b>mail.store.protocol</b> - imaps</li>
+ </ul>
+ </p>
+ <p>
+ Another useful property is <b>mail.debug</b> which allows Java Mail API to print protocol messages to the console helping you to both understand what's going on as well as debug issues.
+ </p>
+ <p>
+ For the full list of available Java Mail properties please refer to <a href="https://javaee.github.io/javamail/docs/api/com/sun/mail/imap/package-summary.html">here</a>
+ </p>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumeIMAP/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumeIMAP/index.html
new file mode 100644
index 0000000..02121fb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumeIMAP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeIMAP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeIMAP</h1><h2>Description: </h2><p>Consumes messages from Email Server using IMAP protocol. The [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumePOP3/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumePOP3/additionalDetails.html
new file mode 100644
index 0000000..40de3ba
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumePOP3/additionalDetails.html
@@ -0,0 +1,57 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<head>
+<meta charset="utf-8" />
+<title>ConsumePOP3</title>
+<link rel="stylesheet" href="../../../../../css/component-usage.css"
+ type="text/css" />
+</head>
+
+<body>
+ <!-- Processor Documentation ================================================== -->
+ <h2>Description:</h2>
+ <p>This Processor consumes email messages via POP3 protocol and sends the content of an email message as content of the Flow File.
+ Content of the incoming email message is written as raw bytes to the content of the outgoing Flow File.
+ </p>
+
+ <p>Since different serves may require different Java Mail
+ properties such properties could be provided via dynamic properties.
+ For example, below is a sample configuration for GMail:
+ </p>
+ <p>
+ <b>Processor's static properties:</b>
+ <ul>
+ <li><b>Host Name</b> - pop.gmail.com</li>
+ <li><b>Port</b> - 995</li>
+ <li><b>User Name</b> - <i>[your user name]</i></li>
+ <li><b>Password</b> - <i>[your password]</i></li>
+ <li><b>Folder</b> - INBOX</li>
+ </ul>
+ <b>Processor's dynamic properties:</b>
+ <ul>
+ <li><b>mail.pop3.socketFactory.class</b> - javax.net.ssl.SSLSocketFactory</li>
+ <li><b>mail.pop3.socketFactory.fallback</b> - false</li>
+ </ul>
+ </p>
+ <p>
+ Another useful property is <b>mail.debug</b> which allows Java Mail API to print protocol messages to the console helping you to both understand what's going on as well as debug issues.
+ </p>
+ <p>
+ For the full list of available Java Mail properties please refer to <a href="https://javaee.github.io/javamail/docs/api/com/sun/mail/pop3/package-summary.html">here</a>
+ </p>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumePOP3/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumePOP3/index.html
new file mode 100644
index 0000000..2862a84
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ConsumePOP3/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumePOP3</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumePOP3</h1><h2>Description: </h2><p>Consumes messages from Email Server using POP3 protocol. The [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractEmailAttachments/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractEmailAttachments/index.html
new file mode 100644
index 0000000..d88be9c
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractEmailAttachments/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractEmailAttachments</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractEmailAttachments</h1><h2>Description: </h2><p>Extract attachments from a mime form [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractEmailHeaders/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractEmailHeaders/index.html
new file mode 100644
index 0000000..934ee6d
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractEmailHeaders/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractEmailHeaders</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractEmailHeaders</h1><h2>Description: </h2><p>Using the flowfile content as source of data [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractTNEFAttachments/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractTNEFAttachments/index.html
new file mode 100644
index 0000000..fd49cac
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ExtractTNEFAttachments/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractTNEFAttachments</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractTNEFAttachments</h1><h2>Description: </h2><p>Extract attachments from a mime format [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ListenSMTP/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ListenSMTP/index.html
new file mode 100644
index 0000000..2826351
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-email-nar/2.0.0-M1/org.apache.nifi.processors.email.ListenSMTP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListenSMTP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListenSMTP</h1><h2>Description: </h2><p>This processor implements a lightweight SMTP server to an arbi [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.GeoEnrichIP/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.GeoEnrichIP/index.html
new file mode 100644
index 0000000..8cc8de0
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.GeoEnrichIP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GeoEnrichIP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GeoEnrichIP</h1><h2>Description: </h2><p>Looks up geolocation information for an IP address and adds [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.GeoEnrichIPRecord/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.GeoEnrichIPRecord/index.html
new file mode 100644
index 0000000..5870c66
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.GeoEnrichIPRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GeoEnrichIPRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GeoEnrichIPRecord</h1><h2>Description: </h2><p>Looks up geolocation information for an IP addre [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.ISPEnrichIP/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.ISPEnrichIP/index.html
new file mode 100644
index 0000000..99da6d7
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.ISPEnrichIP/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ISPEnrichIP</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ISPEnrichIP</h1><h2>Description: </h2><p>Looks up ISP information for an IP address and adds the info [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.enrich.QueryDNS/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.enrich.QueryDNS/index.html
new file mode 100644
index 0000000..0917757
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.enrich.QueryDNS/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryDNS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryDNS</h1><h2>Description: </h2><p>A powerful DNS query processor primary designed to enrich DataFlow [...]
+NOTE: This is a multiline regular expression, therefore, the DFM should decide how to handle trailing new line characters.</td></tr><tr><td id="name"><strong>DNS Query Retries</strong></td><td>DNS_RETRIES</td><td id="default-value">1</td><td id="allowable-values"></td><td id="description">The number of attempts before giving up and moving on</td></tr><tr><td id="name"><strong>DNS Query Timeout</strong></td><td>DNS_TIMEOUT</td><td id="default-value">1500 ms</td><td id="allowable-values">< [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.enrich.QueryWhois/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.enrich.QueryWhois/index.html
new file mode 100644
index 0000000..c2884d5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-enrich-nar/2.0.0-M1/org.apache.nifi.processors.enrich.QueryWhois/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>QueryWhois</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">QueryWhois</h1><h2>Description: </h2><p>A powerful whois query processor primary designed to enrich Da [...]
+NOTE: This is a multiline regular expression, therefore, the DFM should decide how to handle trailing new line characters.</td></tr><tr><td id="name">Key lookup group (multiline / batch)</td><td>KEY_GROUP</td><td></td><td id="allowable-values"></td><td id="description">When performing a batched lookup, the following RegEx numbered capture group or Column number will be used to match the whois server response with the lookup field</td></tr></table><h3>Relationships: </h3><table id="relati [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-evtx-nar/2.0.0-M1/org.apache.nifi.processors.evtx.ParseEvtx/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-evtx-nar/2.0.0-M1/org.apache.nifi.processors.evtx.ParseEvtx/additionalDetails.html
new file mode 100644
index 0000000..454cdb9
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-evtx-nar/2.0.0-M1/org.apache.nifi.processors.evtx.ParseEvtx/additionalDetails.html
@@ -0,0 +1,91 @@
+<!DOCTYPE html>
+<html lang="en">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <head>
+ <meta charset="utf-8" />
+ <title>ParseEvtx</title>
+
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+
+ <body>
+ <!-- Processor Documentation ================================================== -->
+ <h2>Description:</h2>
+ <p>This processor is used to parse Windows event logs in the binary evtx format. The input flow files' content should be evtx files. The processor has 4 outputs:
+ <ul>
+ <li>The original unmodified FlowFile</li>
+ <li>The XML resulting from parsing at the configured granularity</li>
+ <li>Failed parsing with partial output</li>
+ <li>Malformed chunk in binary form</li>
+ </ul>
+ </p>
+ <h2>Output XML Example:</h2>
+ <p>
+ <pre>
+<?xml version="1.0"?>
+<Events>
+ <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
+ <System>
+ <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" Ev
+entSourceName="Service Control Manager"/>
+ <EventID Qualifiers="16384">7036</EventID>
+ <Version>0</Version>
+ <Level>4</Level>
+ <Task>0</Task>
+ <Opcode>0</Opcode>
+ <Keywords>0x8080000000000000</Keywords>
+ <TimeCreated SystemTime="2016-01-08 16:49:47.518"/>
+ <EventRecordID>780</EventRecordID>
+ <Correlation ActivityID="" RelatedActivityID=""/>
+ <Execution ProcessID="480" ThreadID="596"/>
+ <Channel>System</Channel>
+ <Computer>win7-pro-vm</Computer>
+ <Security UserID=""/>
+ </System>
+ <EventData>
+ <Data Name="param1">Workstation</Data>
+ <Data Name="param2">running</Data>
+ <Binary>TABhAG4AbQBhAG4AVwBvAHIAawBzAHQAYQB0AGkAbwBuAC8ANAAAAA==</Binary>
+ </EventData>
+ </Event>
+ <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
+ <System>
+ <Provider Name="Service Control Manager" Guid="{555908d1-a6d7-4695-8e1e-26931d2012f4}" EventSourceName="Service Control Manager"/>
+ <EventID Qualifiers="16384">7036</EventID>
+ <Version>0</Version>
+ <Level>4</Level>
+ <Task>0</Task>
+ <Opcode>0</Opcode>
+ <Keywords>0x8080000000000000</Keywords>
+ <TimeCreated SystemTime="2016-01-08 16:49:47.535"/>
+ <EventRecordID>781</EventRecordID>
+ <Correlation ActivityID="" RelatedActivityID=""/>
+ <Execution ProcessID="480" ThreadID="576"/>
+ <Channel>System</Channel>
+ <Computer>win7-pro-vm</Computer>
+ <Security UserID=""/>
+ </System>
+ <EventData>
+ <Data Name="param1">Cryptographic Services</Data>
+ <Data Name="param2">running</Data>
+ <Binary>QwByAHkAcAB0AFMAdgBjAC8ANAAAAA==</Binary>
+ </EventData>
+ </Event>
+</Events>
+ </pre>
+ </p>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-evtx-nar/2.0.0-M1/org.apache.nifi.processors.evtx.ParseEvtx/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-evtx-nar/2.0.0-M1/org.apache.nifi.processors.evtx.ParseEvtx/index.html
new file mode 100644
index 0000000..c5d80fa
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-evtx-nar/2.0.0-M1/org.apache.nifi.processors.evtx.ParseEvtx/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ParseEvtx</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ParseEvtx</h1><h2>Description: </h2><p>Parses the contents of a Windows Event Log file (evtx) and write [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-file-resource-service-nar/2.0.0-M1/org.apache.nifi.fileresource.service.StandardFileResourceService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-file-resource-service-nar/2.0.0-M1/org.apache.nifi.fileresource.service.StandardFileResourceService/index.html
new file mode 100644
index 0000000..0fa2ea8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-file-resource-service-nar/2.0.0-M1/org.apache.nifi.fileresource.service.StandardFileResourceService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardFileResourceService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardFileResourceService</h1><h2>Description: </h2><p>Provides a file resource for [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.parameter.gcp.GcpSecretManagerParameterProvider/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.parameter.gcp.GcpSecretManagerParameterProvider/additionalDetails.html
new file mode 100644
index 0000000..bc32d72
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.parameter.gcp.GcpSecretManagerParameterProvider/additionalDetails.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>GcpSecretManagerParameterProvider</title>
+
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <h3>Mapping GCP Secrets to Parameter Contexts</h3>
+
+ <p>
+ The GcpSecretManagerParameterProvider maps a Secret to a Parameter, which can be grouped by adding a "group-name" label.
+ To create a compatible secret from the GCP Console:
+ </p>
+
+ <ol>
+ <li>From the Secret Manager service, click the "Create Secret" button</li>
+ <li>Enter the Secret name. This is the name of a parameter. Enter a value.</li>
+ <li>Under "Labels", add a label with a Key of "group-name" and a value of the intended Parameter Group name.</li>
+ </ol>
+
+ <p>
+ Alternatively, from the command line, run a command like the following:
+ </p>
+
+ <pre>
+printf "[Parameter Value]" | gcloud secrets create --labels=group-name="[Parameter Group Name]" "[Parameter Name]" --data-file=-
+ </pre>
+
+ <p>In this example, [Parameter Group Name] should be the intended name of the Parameter Group, [Parameter Name] should be
+ the parameter name, and [Parameter Value] should be the value of the parameter.</p>
+
+ <h3>Configuring the Parameter Provider</h3>
+
+ <p>
+ GCP Secrets must be explicitly matched in the "Group Name Pattern" property in order for them to be fetched. This
+ prevents more than the intended Secrets from being pulled into NiFi.
+ </p>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.parameter.gcp.GcpSecretManagerParameterProvider/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.parameter.gcp.GcpSecretManagerParameterProvider/index.html
new file mode 100644
index 0000000..60628fb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.parameter.gcp.GcpSecretManagerParameterProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GcpSecretManagerParameterProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GcpSecretManagerParameterProvider</h1><h2>Description: </h2><p>Fetches paramete [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.bigquery.PutBigQuery/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.bigquery.PutBigQuery/additionalDetails.html
new file mode 100644
index 0000000..c5b0d13
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.bigquery.PutBigQuery/additionalDetails.html
@@ -0,0 +1,58 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>PutBigQuery</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Streaming Versus Batching Data</h1>
+
+<p>
+ PutBigQuery is record based and is relying on the gRPC based Write API using protocol buffers. The underlying stream supports both streaming and batching approaches.
+</p>
+
+<h3>Streaming</h3>
+<p>
+ With streaming the appended data to the stream is instantly available in BigQuery for reading. It is configurable how many records (rows) should be appended at once.
+ Only one stream is established per flow file so at the conclusion of the FlowFile processing the used stream is closed and a new one is opened for the next FlowFile.
+ Supports exactly once delivery semantics via stream offsets.
+</p>
+
+<h3>Batching</h3>
+<p>
+ Similarly to the streaming approach one stream is opened for each FlowFile and records are appended to the stream. However data is not available in BigQuery until it is
+ committed by the processor at the end of the FlowFile processing.
+</p>
+
+<h1>Improvement opportunities</h1>
+<p>
+ <ul>
+ <li>The table has to exist on BigQuery side it is not created automatically</li>
+ <li>The Write API supports multiple streams for parallel execution and transactionality across streams. This is not utilized at the moment as this would be covered on NiFI framework level.</li>
+ </ul>
+</p>
+
+<p>
+ The official <a href="https://cloud.google.com/bigquery/docs/write-api">Google Write API documentation</a> provides additional details.
+</p>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.bigquery.PutBigQuery/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.bigquery.PutBigQuery/index.html
new file mode 100644
index 0000000..95c0513
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.bigquery.PutBigQuery/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutBigQuery</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutBigQuery</h1><h2>Description: </h2><p>Writes the contents of a FlowFile to a Google BigQuery table [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.credentials.service.GCPCredentialsControllerService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.credentials.service.GCPCredentialsControllerService/index.html
new file mode 100644
index 0000000..1605930
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.credentials.service.GCPCredentialsControllerService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GCPCredentialsControllerService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GCPCredentialsControllerService</h1><h2>Description: </h2><p>Defines credentials [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.FetchGoogleDrive/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.FetchGoogleDrive/additionalDetails.html
new file mode 100644
index 0000000..7b73ebb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.FetchGoogleDrive/additionalDetails.html
@@ -0,0 +1,67 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>FetchGoogleDrive</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Accessing Google Drive from NiFi</h1>
+
+<p>
+ This processor uses Google Cloud credentials for authentication to access Google Drive.
+ The following steps are required to prepare the Google Cloud and Google Drive accounts for the processors:
+</p>
+<ol>
+ <li><b>Enable Google Drive API in Google Cloud</b>
+ <ul>
+ <li>Follow instructions at <a href="https://developers.google.com/workspace/guides/enable-apis">
+ https://developers.google.com/workspace/guides/enable-apis</a> and search for 'Google Drive API'.
+ </li>
+ </ul>
+ </li>
+ <li><b>Grant access to Google Drive folder</b>
+ <ul>
+ <li>In Google Cloud Console navigate to IAM & Admin -> Service Accounts.</li>
+ <li>Take a note of the email of the service account you are going to use.</li>
+ <li>Navigate to the folder to be listed in Google Drive.</li>
+ <li>Right-click on the Folder -> Share.</li>
+ <li>Enter the service account email.</li>
+ </ul>
+ </li>
+ <li><b>Find File ID</b>
+ </br>
+ Usually FetchGoogleDrive is used with ListGoogleDrive and 'drive.id' is set.</br>
+ In case 'drive.id' is not available, you can find the Drive ID of the file in the following way:
+ </br>
+ <ul>
+ <li>Right-click on the file and select "Get Link".</li>
+ <li>In the pop-up window click on "Copy Link".</li>
+ <li>You can obtain the file ID from the URL copied to clipboard.
+ For example, if the URL were <code>https://drive.google.com/file/d/16ALV9KIU_KKeNG557zyctqy2Fmzyqtq/view?usp=share_link</code>,<br>
+ the File ID would be <code>16ALV9KIU_KKeNG557zyctqy2Fmzyqtq</code>
+ </li>
+ </ul>
+ </li>
+ <li><b>Set File ID in 'File ID' property</b>
+ </li>
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.FetchGoogleDrive/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.FetchGoogleDrive/index.html
new file mode 100644
index 0000000..42ebb14
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.FetchGoogleDrive/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchGoogleDrive</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchGoogleDrive</h1><h2>Description: </h2><p>Fetches files from a Google Drive Folder. Designed [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.ListGoogleDrive/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.ListGoogleDrive/additionalDetails.html
new file mode 100644
index 0000000..b089b7e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.ListGoogleDrive/additionalDetails.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>ListGoogleDrive</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Accessing Google Drive from NiFi</h1>
+
+<p>
+ This processor uses Google Cloud credentials for authentication to access Google Drive.
+ The following steps are required to prepare the Google Cloud and Google Drive accounts for the processors:
+</p>
+<ol>
+ <li><b>Enable Google Drive API in Google Cloud</b>
+ <ul>
+ <li>Follow instructions at <a href="https://developers.google.com/workspace/guides/enable-apis">
+ https://developers.google.com/workspace/guides/enable-apis</a> and search for 'Google Drive API'.
+ </li>
+ </ul>
+ </li>
+ <li><b>Grant access to Google Drive folder</b>
+ <ul>
+ <li>In Google Cloud Console navigate to IAM & Admin -> Service Accounts.</li>
+ <li>Take a note of the email of the service account you are going to use.</li>
+ <li>Navigate to the folder to be listed in Google Drive.</li>
+ <li>Right-click on the Folder -> Share.</li>
+ <li>Enter the service account email.</li>
+ </ul>
+ </li>
+ <li><b>Find Folder ID</b>
+ <ul>
+ <li>Navigate to the folder to be listed in Google Drive and enter it. The URL in your browser will include the ID at the end of
+ the URL.
+ For example, if the URL were <code>https://drive.google.com/drive/folders/1trTraPVCnX5_TNwO8d9P_bz278xWOmGm</code>, the
+ Folder ID would be <code>1trTraPVCnX5_TNwO8d9P_bz278xWOmGm</code>
+ </li>
+ </ul>
+ </li>
+ <li><b>Set Folder ID in 'Folder ID' property</b>
+ </li>
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.ListGoogleDrive/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.ListGoogleDrive/index.html
new file mode 100644
index 0000000..28776d9
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.ListGoogleDrive/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListGoogleDrive</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListGoogleDrive</h1><h2>Description: </h2><p>Performs a listing of concrete files (shortcuts are [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.PutGoogleDrive/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.PutGoogleDrive/additionalDetails.html
new file mode 100644
index 0000000..89c4084
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.PutGoogleDrive/additionalDetails.html
@@ -0,0 +1,62 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>PutGoogleDrive</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Accessing Google Drive from NiFi</h1>
+
+<p>
+ This processor uses Google Cloud credentials for authentication to access Google Drive.
+ The following steps are required to prepare the Google Cloud and Google Drive accounts for the processors:
+</p>
+<ol>
+ <li><b>Enable Google Drive API in Google Cloud</b>
+ <ul>
+ <li>Follow instructions at <a href="https://developers.google.com/workspace/guides/enable-apis">
+ https://developers.google.com/workspace/guides/enable-apis</a> and search for 'Google Drive API'.
+ </li>
+ </ul>
+ </li>
+ <li><b>Grant access to Google Drive folder</b>
+ <ul>
+ <li>In Google Cloud Console navigate to IAM & Admin -> Service Accounts.</li>
+ <li>Take a note of the email of the service account you are going to use.</li>
+ <li>Navigate to the folder in Google Drive which will be used as the base folder.</li>
+ <li>Right-click on the Folder -> Share.</li>
+ <li>Enter the service account email.</li>
+ </ul>
+ </li>
+ <li><b>Find Folder ID</b>
+ <ul>
+ <li>Navigate to the folder to be listed in Google Drive and enter it. The URL in your browser will include the ID at the end of
+ the URL.
+ For example, if the URL were <code>https://drive.google.com/drive/folders/1trTraPVCnX5_TNwO8d9P_bz278xWOmGm</code>, the
+ Folder ID would be <code>1trTraPVCnX5_TNwO8d9P_bz278xWOmGm</code>
+ </li>
+ </ul>
+ </li>
+ <li><b>Set Folder ID in 'Folder ID' property</b>
+ </li>
+</ol>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.PutGoogleDrive/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.PutGoogleDrive/index.html
new file mode 100644
index 0000000..663bdf4
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.drive.PutGoogleDrive/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutGoogleDrive</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutGoogleDrive</h1><h2>Description: </h2><p>Writes the contents of a FlowFile as a file in Google [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub/index.html
new file mode 100644
index 0000000..c232704
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.ConsumeGCPubSub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeGCPubSub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeGCPubSub</h1><h2>Description: </h2><p>Consumes message from the configured Google Cloud Pu [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub/index.html
new file mode 100644
index 0000000..60e5895
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.PublishGCPubSub/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishGCPubSub</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishGCPubSub</h1><h2>Description: </h2><p>Publishes the content of the incoming flowfile to th [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.lite.ConsumeGCPubSubLite/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.lite.ConsumeGCPubSubLite/index.html
new file mode 100644
index 0000000..707b5af
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.lite.ConsumeGCPubSubLite/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeGCPubSubLite</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeGCPubSubLite</h1><h2>Description: </h2><p>Consumes message from the configured Google [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.lite.PublishGCPubSubLite/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.lite.PublishGCPubSubLite/index.html
new file mode 100644
index 0000000..f9d5705
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.pubsub.lite.PublishGCPubSubLite/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishGCPubSubLite</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishGCPubSubLite</h1><h2>Description: </h2><p>Publishes the content of the incoming FlowFi [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.DeleteGCSObject/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.DeleteGCSObject/index.html
new file mode 100644
index 0000000..599288a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.DeleteGCSObject/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DeleteGCSObject</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DeleteGCSObject</h1><h2>Description: </h2><p>Deletes objects from a Google Cloud Bucket. If attem [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">Proxy port</td><td>gcp-proxy-port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td>gcp-proxy-user-name</td><td></td> [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.FetchGCSObject/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.FetchGCSObject/index.html
new file mode 100644
index 0000000..c794399
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.FetchGCSObject/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>FetchGCSObject</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">FetchGCSObject</h1><h2>Description: </h2><p>Fetches a file from a Google Cloud Bucket. Designed to [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">Proxy port</td><td>gcp-proxy-port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td>gcp-proxy-user-name</td><td></td> [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.ListGCSBucket/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.ListGCSBucket/additionalDetails.html
new file mode 100644
index 0000000..27aa2af
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.ListGCSBucket/additionalDetails.html
@@ -0,0 +1,144 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>ListGCSBucket</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Streaming Versus Batch Processing</h1>
+
+<p>
+ ListGCSBucket performs a listing of all GCS Objects that it encounters in the configured GCS bucket.
+ There are two common, broadly defined use cases.
+</p>
+
+<h3>Streaming Use Case</h3>
+
+<p>
+ By default, the Processor will create a separate FlowFile for each object in the bucket and add attributes for filename, bucket, etc.
+ A common use case is to connect ListGCSBucket to the FetchGCSObject processor. These two processors used in conjunction with one another provide the ability to
+ easily monitor a bucket and fetch the contents of any new object as it lands in GCS in an efficient streaming fashion.
+</p>
+
+<h3>Batch Use Case</h3>
+<p>
+ Another common use case is the desire to process all newly arriving objects in a given bucket, and to then perform some action
+ only when all objects have completed their processing. The above approach of streaming the data makes this difficult, because NiFi is inherently
+ a streaming platform in that there is no "job" that has a beginning and an end. Data is simply picked up as it becomes available.
+</p>
+
+<p>
+ To solve this, the ListGCSBucket Processor can optionally be configured with a Record Writer. When a Record Writer is configured, a single
+ FlowFile will be created that will contain a Record for each object in the bucket, instead of a separate FlowFile per object.
+ See the documentation for ListFile for an example of how to build a dataflow that allows for processing all of the objects before proceeding
+ with any other step.
+</p>
+
+<p>
+ One important difference between the data produced by ListFile and ListGCSBucket, though, is the structure of the Records that are emitted. The Records
+ emitted by ListFile have a different schema than those emitted by ListGCSBucket. ListGCSBucket emits records that follow the following schema (in Avro format):
+</p>
+
+<code>
+ <pre>
+{
+ "type": "record",
+ "name": "nifiRecord",
+ "namespace": "org.apache.nifi",
+ "fields": [{
+ "name": "bucket",
+ "type": "string"
+ }, {
+ "name": "name",
+ "type": "string"
+ }, {
+ "name": "size",
+ "type": ["null", "long"]
+ }, {
+ "name": "cacheControl",
+ "type": ["null", "string"]
+ }, {
+ "name": "componentCount",
+ "type": ["null", "int"]
+ }, {
+ "name": "contentDisposition",
+ "type": ["null", "long"]
+ }, {
+ "name": "contentEncoding",
+ "type": ["null", "string"]
+ }, {
+ "name": "contentLanguage",
+ "type": ["null", "string"]
+ }, {
+ "name": "crc32c",
+ "type": ["null", "string"]
+ }, {
+ "name": "createTime",
+ "type": ["null", {
+ "type": "long",
+ "logicalType": "timestamp-millis"
+ }]
+ }, {
+ "name": "updateTime",
+ "type": ["null", {
+ "type": "long",
+ "logicalType": "timestamp-millis"
+ }]
+ }, {
+ "name": "encryptionAlgorithm",
+ "type": ["null", "string"]
+ }, {
+ "name": "encryptionKeySha256",
+ "type": ["null", "string"]
+ }, {
+ "name": "etag",
+ "type": ["null", "string"]
+ }, {
+ "name": "generatedId",
+ "type": ["null", "string"]
+ }, {
+ "name": "generation",
+ "type": ["null", "long"]
+ }, {
+ "name": "md5",
+ "type": ["null", "string"]
+ }, {
+ "name": "mediaLink",
+ "type": ["null", "string"]
+ }, {
+ "name": "metageneration",
+ "type": ["null", "long"]
+ }, {
+ "name": "owner",
+ "type": ["null", "string"]
+ }, {
+ "name": "ownerType",
+ "type": ["null", "string"]
+ }, {
+ "name": "uri",
+ "type": ["null", "string"]
+ }]
+}
+ </pre>
+</code>
+
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.ListGCSBucket/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.ListGCSBucket/index.html
new file mode 100644
index 0000000..37384d6
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.ListGCSBucket/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ListGCSBucket</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ListGCSBucket</h1><h2>Description: </h2><p>Retrieves a listing of objects from a GCS bucket. For ea [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">Proxy port</td><td>gcp-proxy-port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td>gcp-proxy-user-name</td><td></td> [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.PutGCSObject/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.PutGCSObject/index.html
new file mode 100644
index 0000000..7d7bcce
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.storage.PutGCSObject/index.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PutGCSObject</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PutGCSObject</h1><h2>Description: </h2><p>Writes the contents of a FlowFile as an object in a Google [...]
+ You might need to set the following properties in bootstrap for https proxy usage:
+-Djdk.http.auth.tunneling.disabledSchemes=
+-Djdk.http.auth.proxying.disabledSchemes=<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">Proxy port</td><td>gcp-proxy-port</td><td></td><td id="allowable-values"></td><td id="description">Proxy port number<br/><strong>Supports Expression Language: true (will be evaluated using Environment variables only)</strong></td></tr><tr><td id="name">HTTP Proxy Username</td><td>gcp-proxy-user-name</td><td></td> [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus/additionalDetails.html
new file mode 100644
index 0000000..f3bd5c1
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus/additionalDetails.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Google Vision</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Google Cloud Vision - Get Annotate Files Status</h1>
+
+<h3>Usage</h3>
+<p>
+ GetGcpVisionAnnotateFilesOperationStatus is designed to periodically check the statuses of file annotation operations. This processor should be used in pair with StartGcpVisionAnnotateFilesOperation Processor.
+ An outgoing FlowFile contains the raw response returned by the Vision server. This response is in JSON json format and contains a google storage reference where the result is located, as well as additional metadata, as written in the <a href="https://cloud.google.com/vision/docs/reference/rest/v1/locations.operations#Operation" target="_blank">Google Vision API Reference document</a>.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus/index.html
new file mode 100644
index 0000000..be462eb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateFilesOperationStatus/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetGcpVisionAnnotateFilesOperationStatus</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetGcpVisionAnnotateFilesOperationStatus</h1><h2>Description: </h2><p>Re [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus/additionalDetails.html
new file mode 100644
index 0000000..1f2654b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus/additionalDetails.html
@@ -0,0 +1,34 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Google Vision</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Google Cloud Vision - Get Annotate Images Status</h1>
+
+<h3>Usage</h3>
+<p>
+ GetGcpVisionAnnotateImagesOperationStatus is designed to periodically check the statuses of image annotation operations. This processor should be used in pair with StartGcpVisionAnnotateImagesOperation Processor.
+ An outgoing FlowFile contains the raw response returned by the Vision server. This response is in JSON json format and contains a google storage reference where the result is located, as well as additional metadata, as written in the <a href="https://cloud.google.com/vision/docs/reference/rest/v1/locations.operations#Operation" target="_blank">Google Vision API Reference document</a>.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus/index.html
new file mode 100644
index 0000000..c410e47
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.GetGcpVisionAnnotateImagesOperationStatus/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetGcpVisionAnnotateImagesOperationStatus</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetGcpVisionAnnotateImagesOperationStatus</h1><h2>Description: </h2><p> [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/additionalDetails.html
new file mode 100644
index 0000000..fded578
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/additionalDetails.html
@@ -0,0 +1,109 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Google Vision</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Google Cloud Vision - Start Annotate Files Operation</h1>
+<p>
+ Prerequisites
+<ul>
+ <li>Make sure Vision API is enabled and the account you are using has the right to use it</li>
+ <li>Make sure the input file(s) are available in a GCS bucket</li>
+</ul>
+</p>
+<h3>Usage</h3>
+<p>
+ StartGcpVisionAnnotateFilesOperation is designed to trigger file annotation operations. This processor should be used in pair with the GetGcpVisionAnnotateFilesOperationStatus Processor.
+ Outgoing FlowFiles contain the raw response to the request returned by the Vision server. The response is in JSON format and contains the result and additional metadata as written in the Google Vision API Reference documents.
+</p>
+
+<h3>Payload</h3>
+<p>
+ The JSON Payload is a request in JSON format as documented in the <a href="https://cloud.google.com/vision/docs/reference/rest/v1/files/asyncBatchAnnotate" target="_blank">Google Vision REST API reference document</a>.
+ Payload can be fed to the processor via the <code>JSON Payload</code> property or as a FlowFile content. The property has higher precedence over FlowFile content.
+ Please make sure to delete the default value of the property if you want to use FlowFile content payload.
+ A JSON payload template example:
+</p>
+<code>
+ <pre>
+{
+ "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
+ }
+ }]
+}
+ </pre>
+</code>
+<h3>Features types</h3>
+<ul>
+ <li>TEXT_DETECTION: Optical character recognition (OCR) for an image; text recognition and conversion to machine-coded text. Identifies and extracts UTF-8 text in an image.</li>
+ <li>DOCUMENT_TEXT_DETECTION: Optical character recognition (OCR) for a file (PDF/TIFF) or dense text image; dense text recognition and conversion to machine-coded text.</li>
+</ul>
+You can find more details at <a href="https://cloud.google.com/vision/docs/features-list" target="_blank">Google Vision Feature List</a>
+
+<h3>Example: How to setup a simple Annotate Image Flow</h3>
+<p>
+ Prerequisites
+</p>
+<p>
+<ul>
+ <li>Input files should be available in a GCS bucket</li>
+ <li>This bucket must not contain anything else but the input files</li>
+</ul>
+</p>
+<p>Create the following flow</p>
+<img src="vision-annotate-files.png" style="height: 50%; width: 50%"/>
+<p>
+ <li>Create an input and output bucket</li>
+ <li>Make sure the input files(s) are available in the input GCS bucket</li>
+ <li>Set the bucket property of ListGCSBucket processor to your input bucket name</li>
+ <li>Keep the default value of JSON PAYLOAD property in StartGcpVisionAnnotateFilesOperation</li>
+ <li>Set the Output Bucket property to your output bucket name in StartGcpVisionAnnotateFilesOperation</li>
+ <li>Setup GCP Credentials Provider Service for all GCP related processor</li>
+</p>
+<p>
+ Execution steps:
+<ul>
+ <li>ListGCSBucket processor will return a list of files in the bucket at the first run.</li>
+ <li>ListGCSBucket will return only new items at subsequent runs.</li>
+ <li>StartGcpVisionAnnotateFilesOperation processor will trigger GCP Vision file annotation jobs based on the JSON payload.</li>
+ <li>StartGcpVisionAnnotateFilesOperation processor will populate the <code>operationKey</code> flow file attribute.</li>
+ <li>GetGcpVisionAnnotateFilesOperationStatus processor will periodically query status of the job.</li>
+</ul>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/index.html
new file mode 100644
index 0000000..79bf9c8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/index.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StartGcpVisionAnnotateFilesOperation</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StartGcpVisionAnnotateFilesOperation</h1><h2>Description: </h2><p>Trigger a [...]
+ "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
+ }
+ }]
+}</td><td id="allowable-values"></td><td id="description">JSON request for AWS Machine Learning services. The Processor will use FlowFile content for the request when this property is not specified.<br/><strong>Supports Expression Language: true (will be evaluated using flow file attributes and Environment variables)</strong></td></tr><tr><td id="name"><strong>GCP Credentials Provider Service</strong></td><td>gcp-credentials-provider-service</td><td></td><td id="allowable-values"><strong [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/vision-annotate-files.png b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/vision-annotate-files.png
new file mode 100644
index 0000000..65635d2
Binary files /dev/null and b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateFilesOperation/vision-annotate-files.png differ
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/additionalDetails.html
new file mode 100644
index 0000000..52a2800
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/additionalDetails.html
@@ -0,0 +1,112 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>Google Vision</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Google Cloud Vision - Start Annotate Images Operation</h1>
+<p>
+ Prerequisites
+<ul>
+ <li>Make sure Vision API is enabled and the account you are using has the right to use it</li>
+ <li>Make sure the input image(s) are available in a GCS bucket under <code>/input</code> folder</li>
+</ul>
+</p>
+<h3>Usage</h3>
+<p>
+ StartGcpVisionAnnotateImagesOperation is designed to trigger image annotation operations. This processor should be used in pair with the GetGcpVisionAnnotateImagesOperationStatus Processor.
+ Outgoing FlowFiles contain the raw response to the request returned by the Vision server. The response is in JSON format and contains the result and additional metadata as written in the Google Vision API Reference documents.
+</p>
+<h3>Payload</h3>
+<p>
+ The JSON Payload is a request in JSON format as documented in the <a href="https://cloud.google.com/vision/docs/reference/rest/v1/images/asyncBatchAnnotate" target="_blank">Google Vision REST API reference document</a>.
+ Payload can be fed to the processor via the <code>JSON Payload</code> property or as a FlowFile content. The property has higher precedence over FlowFile content.
+ Please make sure to delete the default value of the property if you want to use FlowFile content payload.
+ A JSON payload template example:
+</p>
+
+<code>
+ <pre>
+{
+ "requests": [{
+ "image": {
+ "source": {
+ "imageUri": "gs://${gcs.bucket}/${filename}"
+ }
+ },
+ "features": [{
+ "type": "${vision-feature-type}",
+ "maxResults": 4
+ }]
+ }],
+ "outputConfig": {
+ "gcsDestination": {
+ "uri": "gs://${output-bucket}/${filename}/"
+ },
+ "batchSize": 2
+ }
+}
+ </pre>
+</code>
+<h3>Features types</h3>
+<ul>
+ <li>TEXT_DETECTION: Optical character recognition (OCR) for an image; text recognition and conversion to machine-coded text. Identifies and extracts UTF-8 text in an image.</li>
+ <li>DOCUMENT_TEXT_DETECTION: Optical character recognition (OCR) for a file (PDF/TIFF) or dense text image; dense text recognition and conversion to machine-coded text.</li>
+ <li>LANDMARK_DETECTION: Provides the name of the landmark, a confidence score and a bounding box in the image for the landmark.</li>
+ <li>LOGO_DETECTION: Provides a textual description of the entity identified, a confidence score, and a bounding polygon for the logo in the file.</li>
+ <li>LABEL_DETECTION: Provides generalized labels for an image.</li>
+ <li>etc.</li>
+</ul>
+You can find more details at <a href="https://cloud.google.com/vision/docs/features-list" target="_blank">Google Vision Feature List</a>
+<h3>Example: How to setup a simple Annotate Image Flow</h3>
+<p>
+ Prerequisites
+</p>
+<p>
+<ul>
+ <li>Input image files should be available in a GCS bucket</li>
+ <li>This bucket must not contain anything else but the input image files</li>
+</ul>
+</p>
+<p>Create the following flow</p>
+<img src="vision-annotate-images.png" style="height: 50%; width: 50%"/>
+<p>
+ <ul>
+ <li>Create an input and output bucket</li>
+ <li>Make sure the input images(s) are available in the input GCS bucket</li>
+ <li>Set the bucket property of ListGCSBucket processor to your input bucket name</li>
+ <li>Keep the default value of JSON PAYLOAD property in StartGcpVisionAnnotateImagesOperation</li>
+ <li>Set the Output Bucket property to your output bucket name in StartGcpVisionAnnotateImagesOperation</li>
+ <li>Setup GCP Credentials Provider Service for all GCP related processor</li>
+ </ul>
+</p>
+<p>
+ Execution steps:
+<ul>
+ <li>ListGCSBucket processor will return a list of files in the bucket at the first run.</li>
+ <li>ListGCSBucket will return only new items at subsequent runs.</li>
+ <li>StartGcpVisionAnnotateImagesOperation processor will trigger GCP Vision image annotation jobs based on the JSON payload.</li>
+ <li>StartGcpVisionAnnotateImagesOperation processor will populate the <code>operationKey</code> flow file attribute.</li>
+ <li>GetGcpVisionAnnotateImagesOperationStatus processor will periodically query status of the job.</li>
+</ul>
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/index.html
new file mode 100644
index 0000000..4a0e3a5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/index.html
@@ -0,0 +1,19 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StartGcpVisionAnnotateImagesOperation</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StartGcpVisionAnnotateImagesOperation</h1><h2>Description: </h2><p>Trigger [...]
+ "requests": [{
+ "image": {
+ "source": {
+ "imageUri": "gs://${gcs.bucket}/${filename}"
+ }
+ },
+ "features": [{
+ "type": "${vision-feature-type}",
+ "maxResults": 4
+ }]
+ }],
+ "outputConfig": {
+ "gcsDestination": {
+ "uri": "gs://${output-bucket}/${filename}/"
+ },
+ "batchSize": 2
+ }
+}</td><td id="allowable-values"></td><td id="description">JSON request for AWS Machine Learning services. The Processor will use FlowFile content for the request when this property is not specified.<br/><strong>Supports Expression Language: true (will be evaluated using flow file attributes and Environment variables)</strong></td></tr><tr><td id="name"><strong>GCP Credentials Provider Service</strong></td><td>gcp-credentials-provider-service</td><td></td><td id="allowable-values"><strong [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/vision-annotate-images.png b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/vision-annotate-images.png
new file mode 100644
index 0000000..e4ed82c
Binary files /dev/null and b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-gcp-nar/2.0.0-M1/org.apache.nifi.processors.gcp.vision.StartGcpVisionAnnotateImagesOperation/vision-annotate-images.png differ
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-geohash-nar/2.0.0-M1/org.apache.nifi.processors.geohash.GeohashRecord/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-geohash-nar/2.0.0-M1/org.apache.nifi.processors.geohash.GeohashRecord/additionalDetails.html
new file mode 100644
index 0000000..410e7d2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-geohash-nar/2.0.0-M1/org.apache.nifi.processors.geohash.GeohashRecord/additionalDetails.html
@@ -0,0 +1,55 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8"/>
+ <title>GeohashRecord</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+
+<body>
+<h1>Overview</h1>
+<p>
+ A Geohash value corresponds to a specific area with pre-defined granularity and is widely used in identifying,
+ representing and indexing geospatial objects.
+ This GeohashRecord processor provides the ability to encode and decode Geohashes with desired format and precision.
+</p>
+<h3>Formats supported</h3>
+<p>
+<ul>
+ <li>BASE32: The most commonly used alphanumeric version. It is compact and more human-readable by discarding
+ some letters(such as "a" and "o", "i" and "l") that might cause confusion.
+ </li>
+ <li>BINARY: This format is generated by directly interleaving latitude and longitude binary strings.
+ The even bits in the binary strings correspond to the longitude, while the odd digits correspond to the latitude.
+ </li>
+ <li>LONG: Although this 64-bit number format is not human-readable, it can be calculated very fast and is
+ more efficient.
+ </li>
+</ul>
+</p>
+<h3>Precision supported</h3>
+
+<p>
+ In <b>ENCODE</b> mode, users specify the desired precision level, which should be an integer number between 1 and
+ 12. A greater level will generate a longer Geohash with higher precision.
+</p>
+<p>
+ In DECODE mode, users are not asked to provide a precision level because this information is contained in the length
+ of Geohash values given.
+</p>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-geohash-nar/2.0.0-M1/org.apache.nifi.processors.geohash.GeohashRecord/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-geohash-nar/2.0.0-M1/org.apache.nifi.processors.geohash.GeohashRecord/index.html
new file mode 100644
index 0000000..7799ca5
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-geohash-nar/2.0.0-M1/org.apache.nifi.processors.geohash.GeohashRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GeohashRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GeohashRecord</h1><h2>Description: </h2><p>A record-based processor that encodes and decodes Geohas [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL.gif b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL.gif
new file mode 100644
index 0000000..49e5388
Binary files /dev/null and b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL.gif differ
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL2.gif b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL2.gif
new file mode 100644
index 0000000..602c260
Binary files /dev/null and b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/SQL2.gif differ
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/additionalDetails.html
new file mode 100644
index 0000000..98bd171
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/additionalDetails.html
@@ -0,0 +1,219 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>Groovy</title>
+ <!--link rel="stylesheet" href="../../css/component-usage.css" type="text/css" /-->
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>This is a grooviest groovy script :)</p>
+<h2>Script Bindings:</h2>
+<table>
+<tr><th>variable</th><th>type</th><th>description</th></tr>
+<tr>
+ <td>session</td>
+ <td>org.apache.nifi.processor.ProcessSession</td>
+ <td>the session that is used to get, change, and transfer input files</td>
+</tr>
+<tr>
+ <td>context</td>
+ <td>org.apache.nifi.processor.ProcessContext</td>
+ <td>the context (almost unuseful)</td>
+</tr>
+<tr>
+ <td>log</td>
+ <td>org.apache.nifi.logging.ComponentLog</td>
+ <td>the logger for this processor instance</td>
+</tr>
+<tr>
+ <td>REL_SUCCESS</td>
+ <td>org.apache.nifi.processor.Relationship</td>
+ <td>the success relationship</td>
+</tr>
+<tr>
+ <td>REL_FAILURE</td>
+ <td>org.apache.nifi.processor.Relationship</td>
+ <td>the failure relationship</td>
+</tr>
+<tr>
+ <td>CTL</td>
+ <td>java.util.HashMap<String,<a href="https://github.com/apache/nifi/blob/main/nifi-api/src/main/java/org/apache/nifi/controller/ControllerService.java">ControllerService</a>></td>
+ <td>Map populated with controller services defined with `CTL.*` processor properties.
+ <br/>The `CTL.` prefixed properties could be linked to controller service and provides access to this service from a script without additional code.</td>
+</tr>
+<tr>
+ <td>SQL</td>
+ <td>java.util.HashMap<String, <a href="http://docs.groovy-lang.org/latest/html/api/groovy/sql/Sql.html">groovy.sql.Sql</a>></td>
+ <td>Map populated with `groovy.sql.Sql` objects connected to corresponding database defined with `SQL.*` processor properties.
+ <br/>The `SQL.` prefixed properties could be linked only to DBCPSercice.</td>
+</tr>
+<tr>
+ <td>RecordReader</td>
+ <td>java.util.HashMap<String,<a href="https://github.com/apache/nifi/blob/main/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-service-api/src/main/java/org/apache/nifi/serialization/RecordReaderFactory.java">RecordReaderFactory</a>></td>
+ <td>Map populated with controller services defined with `RecordReader.*` processor properties.
+ <br/>The `RecordReader.` prefixed properties are to be linked to RecordReaderFactory controller service instances.</td>
+</tr>
+<tr>
+ <td>RecordWriter</td>
+ <td>java.util.HashMap<String,<a href="https://github.com/apache/nifi/blob/main/nifi-nar-bundles/nifi-standard-services/nifi-record-serialization-service-api/src/main/java/org/apache/nifi/serialization/RecordSetWriterFactory.java">RecordSetWriterFactory</a>></td>
+ <td>Map populated with controller services defined with `RecordWriter.*` processor properties.
+ <br/>The `RecordWriter.` prefixed properties are to be linked to RecordSetWriterFactory controller service instances.</td>
+</tr>
+<tr>
+ <td>Dynamic processor properties</td>
+ <td>org.apache.nifi.components.PropertyDescriptor</td>
+ <td>All processor properties not started with `CTL.` or `SQL.` are bound to script variables</td>
+</tr>
+</table>
+
+<h2>SQL map details</h2>
+<p>
+<b>Example:</b> if you defined property <code>`SQL.mydb`</code> and linked it to any DBCPService,
+then you can access it from code <code>SQL.mydb.rows('select * from mytable')</code><br/>
+
+<br/>The processor automatically takes connection from dbcp service before executing script and tries to handle transaction:
+<br/> database transactions automatically rolled back on script exception and committed on success.
+<br/>Or you can manage transaction manually.
+<br/>NOTE: Script must not disconnect connection.
+
+<br/><img src="SQL.gif"/>
+<br/><img src="SQL2.gif"/>
+</p>
+
+<h2>SessionFile - flow file extension</h2>
+<p>
+ The (org.apache.nifi.processors.groovyx.flow.SessionFile) is an actual object returned by session in Extended Groovy processor.<br/>
+ This flow file is a container that references session and the real flow file.<br/>
+ This allows to use simplified syntax to work with file attributes and content:
+</p>
+<p><i>set new attribute value</i></p>
+<pre>
+ flowFile.ATTRIBUTE_NAME = ATTRIBUTE_VALUE
+ flowFile.'mime.type' = 'text/xml'
+ flowFile.putAttribute("ATTRIBUTE_NAME", ATTRIBUTE_VALUE)
+ //the same as
+ flowFile = session.putAttribute(flowFile, "ATTRIBUTE_NAME", ATTRIBUTE_VALUE)
+</pre>
+
+<p><i>remove attribute</i></p>
+<pre>
+ flowFile.ATTRIBUTE_NAME = null
+ //equals to
+ flowFile = session.removeAttribute(flowFile, "ATTRIBUTE_NAME")
+</pre>
+
+<p><i>get attribute value</i></p>
+<pre>
+ String a = flowFile.ATTRIBUTE_NAME
+</pre>
+
+<p><i>write content</i></p>
+<pre>
+ flowFile.write("UTF-8", "THE CharSequence to write into flow file replacing current content")
+ flowFile.write("UTF-8"){writer->
+ do something with java.io.Writer...
+ }
+ flowFile.write{outStream->
+ do something with output stream...
+ }
+ flowFile.write{inStream, outStream->
+ do something with input and output streams...
+ }
+</pre>
+
+<p><i>get content</i></p>
+<pre>
+ InputStream i = flowFile.read()
+ def json = new groovy.json.JsonSlurper().parse( flowFile.read() )
+ String text = flowFile.read().getText("UTF-8")
+</pre>
+
+<p><i>transfer flow file to success relation</i></p>
+<pre>
+ REL_SUCCESS << flowFile
+ flowFile.transfer(REL_SUCCESS)
+ //the same as:
+ session.transfer(flowFile, REL_SUCCESS)
+</pre>
+
+<p><i>work with dbcp</i></p>
+<pre>
+ import groovy.sql.Sql
+
+ //define property named `SQL.db` connected to a DBCPConnectionPool controller service
+ //for this case it's an H2 database example
+
+ //read value from the database with prepared statement
+ //and assign into flowfile attribute `db.yesterday`
+ def daysAdd = -1
+ def row = SQL.db.firstRow("select dateadd('DAY', ${daysAdd}, sysdate) as DB_DATE from dual")
+ flowFile.'db.yesterday' = row.DB_DATE
+
+ //to work with BLOBs and CLOBs in the database
+ //use parameter casting using groovy.sql.Sql.BLOB(Stream) and groovy.sql.Sql.CLOB(Reader)
+
+ //write content of the flow file into database blob
+ flowFile.read{ rawIn->
+ def parms = [
+ p_id : flowFile.ID as Long, //get flow file attribute named `ID`
+ p_data : Sql.BLOB( rawIn ), //use input stream as BLOB sql parameter
+ ]
+ SQL.db.executeUpdate(parms, "update mytable set data = :p_data where id = :p_id")
+ }
+</pre>
+
+
+<h2>Handling processor start & stop</h2>
+
+<p>In the extended groovy processor you can catch `start` and `stop` and `unscheduled` events by providing corresponding static methods:</p>
+<pre>
+ import org.apache.nifi.processor.ProcessContext
+ import java.util.concurrent.atomic.AtomicLong
+
+ class Const{
+ static Date startTime = null;
+ static AtomicLong triggerCount = null;
+ }
+
+ static onStart(ProcessContext context){
+ Const.startTime = new Date()
+ Const.triggerCount = new AtomicLong(0)
+ println "onStart $context ${Const.startTime}"
+ }
+
+ static onStop(ProcessContext context){
+ def alive = (System.currentTimeMillis() - Const.startTime.getTime()) / 1000
+ println "onStop $context executed ${ Const.triggerCount } times during ${ alive } seconds"
+ }
+
+ static onUnscheduled(ProcessContext context){
+ def alive = (System.currentTimeMillis() - Const.startTime.getTime()) / 1000
+ println "onUnscheduled $context executed ${ Const.triggerCount } times during ${ alive } seconds"
+ }
+
+ flowFile.'trigger.count' = Const.triggerCount.incrementAndGet()
+ REL_SUCCESS << flowFile
+</pre>
+<br/>
+<br/>
+<br/>
+<br/>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/index.html
new file mode 100644
index 0000000..a047e96
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-groovyx-nar/2.0.0-M1/org.apache.nifi.processors.groovyx.ExecuteGroovyScript/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExecuteGroovyScript</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExecuteGroovyScript</h1><h2>Description: </h2><p>Experimental Extended Groovy script processo [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hadoop-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.HadoopDBCPConnectionPool/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hadoop-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.HadoopDBCPConnectionPool/index.html
new file mode 100644
index 0000000..082a795
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hadoop-dbcp-service-nar/2.0.0-M1/org.apache.nifi.dbcp.HadoopDBCPConnectionPool/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HadoopDBCPConnectionPool</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HadoopDBCPConnectionPool</h1><h2>Description: </h2><p>Provides a Database Connection Poo [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.HashiCorpVaultParameterProvider/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.HashiCorpVaultParameterProvider/index.html
new file mode 100644
index 0000000..5f3a5b2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.HashiCorpVaultParameterProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HashiCorpVaultParameterProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HashiCorpVaultParameterProvider</h1><h2>Description: </h2><p>Provides parameters [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.StandardHashiCorpVaultClientService/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.StandardHashiCorpVaultClientService/additionalDetails.html
new file mode 100644
index 0000000..337ee65
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.StandardHashiCorpVaultClientService/additionalDetails.html
@@ -0,0 +1,133 @@
+<!DOCTYPE html>
+<html lang="en" xmlns="http://www.w3.org/1999/html">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<head>
+ <meta charset="utf-8"/>
+ <title>StandardHashiCorpVaultClientService</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+<body>
+
+<h1>Configuring the Bootstrap HashiCorp Vault Configuration File</h1>
+
+<p>
+ The ./conf/bootstrap-hashicorp-vault.conf file that comes with Apache NiFi is a convenient way to configure this
+ controller service in a manner consistent with the HashiCorpVault sensitive properties provider. Since this file is already used for configuring
+ the Vault client for protecting sensitive properties in the NiFi configuration files
+ (see the <a href="../../../../../html/administration-guide.html#hashicorp-vault-providers">Administrator's Guide</a>),
+ it's a natural starting point for configuring the controller service as well.
+</p>
+
+<p>
+ An example configuration of this properties file is as follows:
+</p>
+
+<code>
+ <pre>
+# HTTP or HTTPS URI for HashiCorp Vault is required to enable the Sensitive Properties Provider
+vault.uri=https://127.0.0.1:8200
+
+# Optional file supports authentication properties described in the Spring Vault Environment Configuration
+# https://docs.spring.io/spring-vault/docs/2.3.x/reference/html/#vault.core.environment-vault-configuration
+#
+# All authentication properties must be included in bootstrap-hashicorp-vault.conf when this property is not specified.
+# Properties in bootstrap-hashicorp-vault.conf take precedence when the same values are defined in both files.
+# Token Authentication is the default when the 'vault.authentication' property is not specified.
+vault.authentication.properties.file=[full/path/to/vault-auth.properties]
+
+# Optional Timeout properties
+vault.connection.timeout=5 secs
+vault.read.timeout=15 secs
+
+# Optional TLS properties
+vault.ssl.enabledCipherSuites=
+vault.ssl.enabledProtocols=TLSv1.3
+vault.ssl.key-store=[path/to/keystore.p12]
+vault.ssl.key-store-type=PKCS12
+vault.ssl.key-store-password=[keystore password]
+vault.ssl.trust-store=[path/to/truststore.p12]
+vault.ssl.trust-store-type=PKCS12
+vault.ssl.trust-store-password=[truststore password]
+ </pre>
+</code>
+
+<p>
+ In order to use this file in the StandardHashiCorpVaultClientService, specify the following properties:
+ <ul>
+ <li><b>Configuration Strategy</b> - Properties Files</li>
+ <li><b>Vault Properties Files</b> - ./conf/bootstrap-hashicorp-vault.conf</li>
+ </ul>
+</p>
+
+<p>
+ If your bootstrap configuration includes the vault.authentication.properties.file containing additional authentication properties, this
+ file will also need to be added to the Vault Properties Files property as a comma-separated value.
+</p>
+
+<h3>Configuring the Client using Direct Properties</h3>
+
+<p>
+ However, if you want to specify or override properties directly in the controller service, you may do this by specifying a Configuration Strategy
+ of 'Direct Properties'. This can be useful if you are reusing an SSLContextService or want to parameterize the Vault configuration properties.
+ Authentication-related properties can also be added as sensitive dynamic properties, as seen in the examples below.
+</p>
+
+<h3>Vault Authentication</h3>
+<p>
+ Under the hood, the controller service uses Spring Vault, and directly supports the property keys specified in
+ <a href="https://docs.spring.io/spring-vault/docs/2.3.x/reference/html/#vault.core.environment-vault-configuration">Spring Vault's documentation</a>.
+ Following are some common examples of authentication with Vault.
+</p>
+
+<h4>Token Authentication</h4>
+<p>
+ The simplest authentication scheme uses a rotating token, which is enabled by default in Vault. To specify this mechanism, select "TOKEN" from the
+ "Vault Authentication" property (the default). However, since the token should rotate by nature, it is a best practice to use the 'Properties Files'
+ Configuration Strategy, and keep the token value in an external properties file, indicating this filename in the 'Vault Properties Files' property.
+ Then an external process can rotate the token in the file without updating NiFi configuration. In order to pick up the changed token, the controller
+ service must be disabled and re-enabled.
+</p>
+
+<p>
+ For testing purposes, however, it may be more convenient to specify the token directly in the controller service. To do so, add a new Sensitive property named
+ 'vault.token' and enter the token as the value.
+</p>
+
+<h4>Certificate Authentication</h4>
+<p>
+ Certificate authentication must be enabled in the Vault server before it can be used from NiFi, but it uses the same TLS settings as the actual
+ client connection, so no additional authentication properties are required. While these TLS settings can be provided in an external properties file,
+ we will demonstrate configuring an SSLContextService instead.
+</p>
+
+<p>
+ First, create an SSLContextService controller service and configure the Filename, Password, and Type for both the Keystore and Truststore.
+ Enable it, and assign it as the SSL Context Service in the Vault controller service. Then, simply specify "CERT" as the "Vault Authentication"
+ property value.
+</p>
+
+<h4>Other Authentication Methods</h4>
+<p>
+ To configure the other authentication methods, see the Spring Vault documentation linked above. All relevant properties should be added either
+ to the external properties files referenced in the "Vault Properties Files" property if using the 'Properties Files' Configuration Strategy,
+ or added as custom properties with the same name if using the 'Direct Properties' Configuration Strategy.
+ For example, for the Azure authentication mechanism, properties will have to be added for 'vault.azure-msi.azure-path',
+ 'vault.azure-msi.role', and 'vault.azure-msi.identity-token-service'.
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.StandardHashiCorpVaultClientService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.StandardHashiCorpVaultClientService/index.html
new file mode 100644
index 0000000..5730fd4
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hashicorp-vault-nar/2.0.0-M1/org.apache.nifi.vault.hashicorp.StandardHashiCorpVaultClientService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardHashiCorpVaultClientService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardHashiCorpVaultClientService</h1><h2>Description: </h2><p>A controller [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/additionalDetails.html
new file mode 100644
index 0000000..11f1c29
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/additionalDetails.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>HazelcastMapCacheClient</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>HazelcastMapCacheClient</h2>
+
+<p>
+ This implementation of distributed map cache is backed by Hazelcast. The Hazelcast connection is provided and maintained
+ by an instance of HazelcastCacheManager. One HazelcastCacheManager might serve multiple cache clients. This implementation
+ uses the IMap data structure. The identifier of the Hazelcast IMap will be the same as the value of the property Hazelcast
+ Cache Name. It is recommended for all HazelcastMapCacheClient instances to use different cache names.
+</p>
+
+<p>
+ The implementation supports the atomic method family defined in AtomicDistributedMapCacheClient. This is achieved by maintaining
+ a revision number for every entry. The revision is a 8 byte long integer. It is increased when the entry is updated. The value is kept
+ during modifications not part of the atomic method family but this is mainly for regular management of the entries. It is not
+ recommended to work with elements by mixing the two method families.
+</p>
+
+<p>
+ The convention for all the entries is to reserve the first 8 bytes for the revision. The rest of the content is the serialized payload.
+</p>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/index.html
new file mode 100644
index 0000000..9e3b731
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cacheclient.HazelcastMapCacheClient/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>HazelcastMapCacheClient</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">HazelcastMapCacheClient</h1><h2>Description: </h2><p>An implementation of DistributedMapC [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/additionalDetails.html
new file mode 100644
index 0000000..5dbdd6b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/additionalDetails.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>EmbeddedHazelcastCacheManager</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>EmbeddedHazelcastCacheManager</h2>
+
+<p>
+ This service starts and manages an embedded Hazelcast instance. The cache manager has direct accesses to the
+ instance - and the data stored in it. However, the instance sill opens a port for potential clients to join and
+ this cannot be prevented. Note that this might leave the instance open for rogue clients to join.
+</p>
+
+<p>
+ It is possible to have multiple independent Hazelcast instances on the same host (whether via EmbeddedHazelcastCacheManager
+ or externally) without any interference by setting the properties accordingly. If there are no other instances, the default
+ cluster name and port number can simply be used.
+</p>
+
+<p>
+ The service supports multiple ways to set up a Hazelcast cluster. This is controlled by the property, named "Hazelcast Clustering
+ Strategy". The following strategies may be used:
+</p>
+
+<h3>None</h3>
+
+<p>
+ This is the default value. Used when sharing data between nodes is not required. With this value, every NiFi node
+ in the cluster (if it is clustered) connects to its local Hazelcast server only. The Hazelcast servers do not form a cluster.
+</p>
+
+<h3>All Nodes</h3>
+
+<p>
+ Can be used only in clustered node. Using this strategy will result a single Hazelcast cluster consisting of the embedded instances
+ of all the NiFi nodes. This strategy requires all Hazelcast servers listening on the same port. Having different port numbers
+ (based on expression for example) would prevent the cluster from forming.
+</p>
+
+<p>
+ The controller service automatically gathers the host list from the NiFi cluster itself when it is enabled. It is
+ not required for all the nodes to have been successfully joined at this point, but the join must have been initiated. When
+ the controller service is enabled at the start of the NiFi instance, the enabling of the service will be prevented until the
+ node is considered clustered.
+</p>
+
+<p>
+ Hazelcast can accept nodes that join at a later time. As the new node has a comprehensive list of the expected instances - including the
+ already existing ones and itself - Hazelcast will be able to reach the expected state. Beware: this may take significant time.
+</p>
+
+<h3>Explicit</h3>
+
+<p>
+ Can be used only in clustered node. Explicit Clustering Strategy allows more control over the Hazelcast cluster members.
+ All Nodes Clustering Strategy, this strategy works with a list of Hazelcast servers, but instance discovery is not automatic.
+</p>
+
+<p>
+ This strategy uses property named "Hazelcast Instances" to determine the members of the Hazelcast clusters. This list of hosts must contain
+ all the instances expected to be part of the cluster. The instance list may contain only hosts which are part of the NiFi cluster. The
+ port specified in the "Hazelcast Port" will be used as Hazelcast server port.
+</p>
+
+<p>
+ In case the current node is not part of the instance list, the service will start a Hazelcast client. The client then will connect
+ to the Hazelcast addresses specified in the instance list. Users of the service should not perceive any difference in functionality.
+</p>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/index.html
new file mode 100644
index 0000000..021933a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.EmbeddedHazelcastCacheManager/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>EmbeddedHazelcastCacheManager</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">EmbeddedHazelcastCacheManager</h1><h2>Description: </h2><p>A service that runs embe [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/additionalDetails.html
new file mode 100644
index 0000000..29140b3
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/additionalDetails.html
@@ -0,0 +1,48 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>ExternalHazelcastCacheManager</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>ExternalHazelcastCacheManager</h2>
+
+<p>
+ This service connects to an external Hazelcast cluster (or standalone instance) as client. Hazelcast 4.0.0 or newer version is required.
+ The connection to the server is kept alive using Hazelcast's built in reconnection capability. This might be fine-tuned
+ by setting the following properties:
+</p>
+
+<ul>
+ <li>Hazelcast Initial Backoff</li>
+ <li>Hazelcast Maximum Backoff</li>
+ <li>Hazelcast Backoff Multiplier</li>
+ <li>Hazelcast Connection Timeout</li>
+</ul>
+
+<p>
+ If the service cannot connect or abruptly disconnected it tries to reconnect after a backoff time. The amount of time waiting
+ before the first attempt is defined by the Initial Backoff. If the connection is still not successful the client waits gradually
+ more between the attempts until the waiting time reaches the value set in the 'Hazelcast Maximum Backoff' property (or the connection timeout,
+ whichever is smaller). The backoff time after the first attempt is always based on the previous amount, multiplied by the Backoff Multiplier.
+ Note: the real backoff time might be slightly differ as some "jitter" is added to the calculation in order to avoid regularity.
+</p>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/index.html
new file mode 100644
index 0000000..8ed2e0e
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hazelcast-services-nar/2.0.0-M1/org.apache.nifi.hazelcast.services.cachemanager.ExternalHazelcastCacheManager/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExternalHazelcastCacheManager</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExternalHazelcastCacheManager</h1><h2>Description: </h2><p>A service that provides [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hl7-nar/2.0.0-M1/org.apache.nifi.processors.hl7.ExtractHL7Attributes/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hl7-nar/2.0.0-M1/org.apache.nifi.processors.hl7.ExtractHL7Attributes/index.html
new file mode 100644
index 0000000..dd6843a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hl7-nar/2.0.0-M1/org.apache.nifi.processors.hl7.ExtractHL7Attributes/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ExtractHL7Attributes</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ExtractHL7Attributes</h1><h2>Description: </h2><p>Extracts information from an HL7 (Health L [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hl7-nar/2.0.0-M1/org.apache.nifi.processors.hl7.RouteHL7/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hl7-nar/2.0.0-M1/org.apache.nifi.processors.hl7.RouteHL7/index.html
new file mode 100644
index 0000000..663defc
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hl7-nar/2.0.0-M1/org.apache.nifi.processors.hl7.RouteHL7/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>RouteHL7</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">RouteHL7</h1><h2>Description: </h2><p>Routes incoming HL7 data according to user-defined queries. To add [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-http-context-map-nar/2.0.0-M1/org.apache.nifi.http.StandardHttpContextMap/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-http-context-map-nar/2.0.0-M1/org.apache.nifi.http.StandardHttpContextMap/index.html
new file mode 100644
index 0000000..0939c30
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-http-context-map-nar/2.0.0-M1/org.apache.nifi.http.StandardHttpContextMap/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardHttpContextMap</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardHttpContextMap</h1><h2>Description: </h2><p>Provides the ability to store and retr [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hubspot-nar/2.0.0-M1/org.apache.nifi.processors.hubspot.GetHubSpot/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hubspot-nar/2.0.0-M1/org.apache.nifi.processors.hubspot.GetHubSpot/additionalDetails.html
new file mode 100644
index 0000000..86bfec9
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hubspot-nar/2.0.0-M1/org.apache.nifi.processors.hubspot.GetHubSpot/additionalDetails.html
@@ -0,0 +1,45 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8"/>
+ <title>GetHubSpot</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+
+<body>
+<h2>Authentication Methods</h2>
+<p>
+ The processor is working with HubSpot private applications. A HubSpot private app must be created (see <a href="https://developers.hubspot.com/docs/api/private-apps">HubSpot Private App Creation</a>)
+ in order to connect to HubSpot and make requests. Private App Access Tokens are the only authentication method that is currently supported.
+</p>
+<h2>Incremental Loading</h2>
+<p>
+ HubSpot objects can be processed incrementally by NiFi. This means that only objects created or modified after the
+ last run time of the processor are processed. The processor state can be reset in the context menu. The incremental loading
+ is based on the objects last modified time.
+</p>
+<h2>Paging</h2>
+<p>
+ GetHubSpot supports both paging and incrementality at the same time. In case the number of results exceeds the 'Result Limit',
+ in the next processor run the remaining objects will be returned.
+</p>
+<p>
+ Due to the page handling mechanism of the HubSpot API, parallel deletions are not supported.
+ Some objects may be omitted if any object is deleted between fetching two pages.
+</p>
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hubspot-nar/2.0.0-M1/org.apache.nifi.processors.hubspot.GetHubSpot/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hubspot-nar/2.0.0-M1/org.apache.nifi.processors.hubspot.GetHubSpot/index.html
new file mode 100644
index 0000000..ae9ee56
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-hubspot-nar/2.0.0-M1/org.apache.nifi.processors.hubspot.GetHubSpot/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>GetHubSpot</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">GetHubSpot</h1><h2>Description: </h2><p>Retrieves JSON data from a private HubSpot application. This p [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/additionalDetails.html
new file mode 100644
index 0000000..bbf5e49
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/additionalDetails.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8"/>
+ <title>JMSConnectionFactoryProvider</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"/>
+</head>
+
+<body>
+<h2>Description</h2>
+<p>
+ This controller service serves as a general factory service to serving vendor specific
+ instances of the <i>javax.jms.ConnectionFactory</i>. It does so by allowing user to
+ configure vendor specific properties as well as point to the location of the vendor
+ provided JMS client libraries so the correct implementation of the <i>javax.jms.ConnectionFactory</i>
+ can be found, loaded, instantiated and served to the dependent processors (see PublishJMS, ConsumeJMS).
+</p>
+<p>
+ All JMS vendors and <i>ConnectionFactory</i> implementations are supported as long as the configuration values can
+ be set through <i>set</i> methods (detailed explanation in the last paragraph). However some helpful accommodation
+ are done for the following JMS vendors:
+</p>
+<ul>
+ <li>Apache ActiveMQ</li>
+ <li>IBM MQ</li>
+ <li>TIBCO EMS</li>
+ <li>Qpid JMS (AMQP 1.0)</li>
+</ul>
+<p>
+ This controller service exposes only a single mandatory static configuration property that are required across all
+ implementations. The rest of the configuration properties are either optional or vendor specific.
+</p>
+<p>
+ The mandatory configuration property is:
+</p>
+<ul>
+ <li><b>JMS Connection Factory Implementation</b> - The fully qualified name of the JMS <i>ConnectionFactory</i>
+ implementation class. For example:
+ <ul>
+ <li>Apache ActiveMQ - <a href="http://activemq.apache.org/maven/5.15.9/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html" target="_blank">org.apache.activemq.ActiveMQConnectionFactory</a></li>
+ <li>IBM MQ - <a href="https://www-01.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/mq/jms/MQQueueConnectionFactory.html" target="_blank">com.ibm.mq.jms.MQQueueConnectionFactory</a></li>
+ <li>TIBCO EMS - <a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsQueueConnectionFactory.html" target="_blank">com.tibco.tibjms.TibjmsQueueConnectionFactory</a></li>
+ <li>Qpid JMS (AMQP 1.0) - <a href="https://github.com/apache/qpid-jms/blob/1.1.0/qpid-jms-client/src/main/java/org/apache/qpid/jms/JmsConnectionFactory.java" target="_blank">org.apache.qpid.jms.JmsConnectionFactory</a></li>
+ </ul>
+ </li>
+</ul>
+<p>
+ The following static configuration properties are optional but required in many cases:
+</p>
+<ul>
+ <li><b>JMS Client Libraries</b> - Path to the directory with additional resources (eg. JARs,
+ configuration files, etc.) to be added to the classpath (defined as a comma separated list of values). Such resources typically represent target JMS client
+ libraries for the <i>ConnectionFactory</i> implementation.
+ </li>
+ <li><b>JMS Broker URI</b> - URI pointing to the network location of the JMS Message broker. For example:
+ <ul>
+ <li>Apache ActiveMQ - <i>tcp://myhost:1234</i> for single broker and
+ <i>failover:(tcp://myhost01:1234,tcp://myhost02:1234)</i> for multiple brokers.
+ </li>
+ <li>IBM MQ - <i>myhost(1234)</i> for single broker. <i>myhost01(1234),myhost02(1234)</i> for multiple
+ brokers.
+ </li>
+ <li>TIBCO EMS - <i>tcp://myhost:1234</i> for single broker and
+ <i>tcp://myhost01:7222,tcp://myhost02:7222</i> for multiple brokers.
+ </li>
+ <li>Qpid JMS (AMQP 1.0) - <i>amqp[s]://myhost:1234</i> for single broker and
+ <i>failover:(amqp[s]://myhost01:1234,amqp[s]://myhost02:1234)</i> for multiple brokers.
+ </li>
+ </ul>
+ </li>
+</ul>
+<p>
+ The rest of the vendor specific configuration are set through dynamic properties utilizing the
+ <a href="http://docstore.mik.ua/orelly/java-ent/jnut/ch06_02.htm" target="_blank">Java Beans</a> convention where a property
+ name is derived from the <i>set</i> method of the vendor specific <i>ConnectionFactory</i>'s implementation. For
+ example, <i>com.ibm.mq.jms.MQConnectionFactory.setChannel(String)</i> would imply 'channel' property and
+ <i>com.ibm.mq.jms.MQConnectionFactory.setTransportType(int)</i> would imply 'transportType' property. For the list
+ of available properties please consult vendor provided documentation. Following is examples of such vendor provided
+ documentation:
+</p>
+<ul>
+ <li><a href="http://activemq.apache.org/maven/5.15.9/apidocs/org/apache/activemq/ActiveMQConnectionFactory.html" target="_blank">Apache
+ ActiveMQ</a></li>
+ <li>
+ <a href="https://www.ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/mq/jms/MQConnectionFactory.html" target="_blank">IBM
+ MQ</a></li>
+ <li>
+ <a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsConnectionFactory.html" target="_blank">TIBCO
+ EMS</a></li>
+ <li>
+ <a href="https://docs.tibco.com/pub/enterprise_message_service/8.1.0/doc/html/tib_ems_api_reference/api/javadoc/com/tibco/tibjms/TibjmsConnectionFactory.html" target="_blank">Qpid
+ JMS (AMQP 1.0)</a> </li>
+</ul>
+<p>
+ Besides the dynamic properties and <i>set</i> methods described in the previous section, some providers also support additional
+ configuration via the Broker URI (as query parameters added to the URI):
+</p>
+<ul>
+ <li>
+ <a href="https://qpid.apache.org/releases/qpid-jms-1.1.0/docs/index.html#connection-uri" target="_blank">Qpid
+ JMS (AMQP 1.0)</a> </li>
+</ul>
+<h2>Sample controller service configuration for IBM MQ</h2>
+<table>
+ <tr>
+ <th>Property</th>
+ <th>Value</th>
+ <th>Static/Dynamic</th>
+ <th>Comments</th>
+ </tr>
+ <tr>
+ <td>JMS Connection Factory Implementation</td>
+ <td>com.ibm.mq.jms.MQQueueConnectionFactory</td>
+ <td>Static</td>
+ <td>Vendor provided implementation of QueueConnectionFactory</td>
+ </tr>
+ <tr>
+ <td>JMS Client Libraries</td>
+ <td>/opt/mqm/java/lib</td>
+ <td>Static</td>
+ <td>Default installation path of client JAR files on Linux systems</td>
+ </tr>
+ <tr>
+ <td>JMS Broker URI</td>
+ <td>mqhost01(1414),mqhost02(1414)</td>
+ <td>Static</td>
+ <td><a href="https://www.ibm.com/support/knowledgecenter/ro/SSAW57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/ucli_pqcfm.html#MQTopicConnectionFactory_enterporthostname" target="_blank">Connection Name List syntax</a>.
+ Colon separated host/port pair(s) is also supported</td>
+ </tr>
+ <tr>
+ <td>JMS SSL Context Service</td>
+ <td></td>
+ <td>Static</td>
+ <td>Only required if using SSL/TLS</td>
+ </tr>
+ <tr>
+ <td>channel</td>
+ <td>TO.BAR</td>
+ <td>Dynamic</td>
+ <td>Required when using the client transport mode</td>
+ </tr>
+ <tr>
+ <td>queueManager</td>
+ <td>PQM1</td>
+ <td>Dynamic</td>
+ <td>Name of queue manager. Always required.</td>
+ </tr>
+ <tr>
+ <td>transportType</td>
+ <td>1</td>
+ <td>Dynamic</td>
+ <td>Constant integer value corresponding to the client transport mode. Default value is <a href="https://www.ibm.com/support/knowledgecenter/en/SSEQTP_9.0.0/com.ibm.websphere.base.doc/ae/umj_pjcfm.html" target="_blank">"Bindings, then client"</a></td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/index.html
new file mode 100644
index 0000000..de6efe4
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JMSConnectionFactoryProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JMSConnectionFactoryProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JMSConnectionFactoryProvider</h1><h2>Description: </h2><p>Provides a generic service [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/additionalDetails.html
new file mode 100644
index 0000000..d29113c
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/additionalDetails.html
@@ -0,0 +1,143 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>JMSConnectionFactoryProvider</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Capabilities</h2>
+<p>
+ This Controller Service allows users to reference a JMS Connection Factory that has already been established and
+ made available via Java Naming and Directory Interface (JNDI) Server. Please see documentation from your JMS Vendor in order
+ to understand the appropriate values to configure for this service.
+</p>
+<p>
+ A Connection Factory in Java is typically obtained via JNDI in code like below. The comments have been added in to explain how
+ this maps to the Controller Service's configuration.
+</p>
+<pre>
+<code>
+Hashtable env = new Hashtable();
+env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_INITIAL_CONTEXT_FACTORY); // Value for this comes from the "JNDI Initial Context Factory Class" property.
+env.put(Context.PROVIDER_URL, JNDI_PROVIDER_URL); // Value for this comes from the "JNDI Provider URL" property.
+env.put("My-Environment-Variable", "Environment-Variable-Value"); // This is accomplished by added a user-defined property with name "My-Environment-Variable" and value "Environment-Variable-Value"
+
+Context initialContext = new InitialContext(env);
+ConnectionFactory connectionFactory = initialContext.lookup(JNDI_CONNECTION_FACTORY_NAME); // Value for this comes from the "JNDI Name of the Connection Factory" property
+</code>
+</pre>
+
+<p>
+ It is also important to note that, in order for this to work, the class named by the "JNDI Initial Context Factory Class" must be available on the classpath.
+ The JMS provider specific client classes (like the class of the Connection Factory object to be retrieved from JNDI) must also be available on the classpath.
+ In NiFi, this is accomplished by setting the "JNDI / JMS Client Libraries" property to point to one or more .jar files or directories (comma-separated values).
+</p>
+
+<p>
+ When the Controller Service is disabled and then re-enabled, it will perform the JNDI lookup again. Once the Connection Factory has been obtained, though,
+ it will not perform another JNDI lookup until the service is disabled.
+</p>
+
+
+<h2>Example Configuration</h2>
+
+<p>
+ As an example, the following configuration may be used to connect to Active MQ's JMS Broker, using the Connection Factory provided via their embedded JNDI server:
+</p>
+
+<table>
+ <thead>
+ <th>Property Name</th>
+ <th>Property Value</th>
+ </thead>
+ <tbody>
+ <tr>
+ <td>JNDI Initial Context Factory Class</td>
+ <td>org.apache.activemq.jndi.ActiveMQInitialContextFactory</td>
+ </tr>
+ <tr>
+ <td>JNDI Provider URL</td>
+ <td>tcp://jms-broker:61616</td>
+ </tr>
+ <tr>
+ <td>JNDI Name of the Connection Factory</td>
+ <td>ConnectionFactory</td>
+ </tr>
+ <tr>
+ <td>JNDI / JMS Client Libraries</td>
+ <td>/opt/apache-activemq-5.15.2/lib/</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>
+ The above example assumes that there exists a host that is accessible with hostname "jms-broker" and that is running Apache ActiveMQ on port 61616 and also that
+ the jar(s) containing the org.apache.activemq.jndi.ActiveMQInitialContextFactory class and the other JMS client classes can be found within the /opt/apache-activemq-5.15.2/lib/ directory.
+</p>
+
+<h2>Property Validation</h2>
+
+<p>
+ The following component properties include additional validation to restrict allowed values:
+</p>
+
+<ul>
+ <li>JNDI Provider URL</li>
+</ul>
+
+<h3>JNDI Provider URL Validation</h3>
+
+<p>
+ The default validation for <code>JNDI Provider URL</code> allows the following URL schemes:
+</p>
+
+<ul>
+ <li>file</li>
+ <li>jgroups</li>
+ <li>ssl</li>
+ <li>t3</li>
+ <li>t3s</li>
+ <li>tcp</li>
+ <li>udp</li>
+ <li>vm</li>
+</ul>
+
+<p>
+ The following Java System property can be configured to override the default allowed URL schemes:
+</p>
+
+<ul>
+ <li>
+ <code>org.apache.nifi.jms.cf.jndi.provider.url.schemes.allowed</code>
+ </li>
+</ul>
+
+<p>
+ The System property must contain a space-separated list of URL schemes. This property can be configured in the application
+ <code>bootstrap.conf</code> as follows:
+</p>
+
+<ul>
+ <li>
+ <code>java.arg.jndiJmsUrlSchemesAllowed=-Dorg.apache.nifi.jms.cf.jndi.provider.url.schemes.allowed=ssl tcp</code>
+ </li>
+</ul>
+
+</body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/index.html
new file mode 100644
index 0000000..6f32560
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.cf.JndiJmsConnectionFactoryProvider/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JndiJmsConnectionFactoryProvider</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JndiJmsConnectionFactoryProvider</h1><h2>Description: </h2><p>Provides a service [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.ConsumeJMS/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.ConsumeJMS/additionalDetails.html
new file mode 100644
index 0000000..e17642b
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.ConsumeJMS/additionalDetails.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>ConsumeJMS</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+ This processor consumes messages from JMS compliant messaging system and converts them to a FlowFile to be routed to the next component in the flow.
+</p>
+<p>
+ This processor does two things. It constructs FlowFile by extracting information from the consumed JMS message including body, standard
+ JMS Headers and Properties.
+ The message body is written to a FlowFile while standard JMS Headers and Properties are set as FlowFile attributes.
+</p>
+
+<h2>Configuration Details</h2>
+<p>
+ At the time of writing this document it only defines the essential configuration properties which are suitable for most cases.
+ Other properties will be defined later as this component progresses.
+ Configuring ConsumeJMS:
+</p>
+<ol>
+ <li><b>User Name</b> - [OPTIONAL] User Name used for authentication and authorization when this processor obtains <i>javax.jms.Connection</i>
+ from the pre-configured <i>javax.jms.ConnectionFactory</i> (see below).
+ </li>
+ <li><b>Password</b> - [OPTIONAL] Password used in conjunction with <b>User Name</b>.
+ </li>
+ <li><b>Destination Name</b> - [REQUIRED] the name of the <i>javax.jms.Destination</i>.
+ Usually provided by administrator (e.g., 'topic://myTopic').
+ </li>
+ <li><b>Destination Type</b> - [REQUIRED] the type of the <i>javax.jms.Destination</i>. Could be one of 'QUEUE' or 'TOPIC'
+ Usually provided by the administrator. Defaults to 'QUEUE'.
+ </li>
+</ol>
+<h3>Connection Factory Configuration</h3>
+There are multiple ways to configure the Connection Factory for the processor:
+<ul>
+ <li><b>Connection Factory Service</b> property - link to a pre-configured controller service (<i>JndiJmsConnectionFactoryProvider</i> or <i>JMSConnectionFactoryProvider</i>)
+ </li>
+ <li><b>JNDI *</b> properties - processor level configuration, the properties are the same as the properties of <i>JndiJmsConnectionFactoryProvider</i> controller service,
+ the dynamic properties can also be used in this case
+ </li>
+ <li><b>JMS *</b> properties - processor level configuration, the properties are the same as the properties of <i>JMSConnectionFactoryProvider</i> controller service,
+ the dynamic properties can also be used in this case
+ </li>
+</ul>
+<p>
+ The preferred way is to use the Connection Factory Service property and a pre-configured controller service. It is also the most convenient method, because it is enough
+ to configure the controller service once and then it can be used in multiple processors.
+</p>
+<p>
+ However, some JMS client libraries may not work with the controller services due to incompatible Java ClassLoader handling between the 3rd party JMS client library and NiFi.
+ Should you encounter <i>java.lang.ClassCastException</i> errors when using the controller services, please try to configure the Connection Factory via the 'JNDI *' or
+ the 'JMS *' and the dynamic properties of the processor.
+ For more details on these properties, see the documentation of the corresponding controller service (<i>JndiJmsConnectionFactoryProvider</i> for 'JNDI *' and
+ <i>JMSConnectionFactoryProvider</i> for 'JMS *').
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.ConsumeJMS/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.ConsumeJMS/index.html
new file mode 100644
index 0000000..e658d28
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.ConsumeJMS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeJMS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeJMS</h1><h2>Description: </h2><p>Consumes JMS Message of type BytesMessage, TextMessage, Object [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.PublishJMS/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.PublishJMS/additionalDetails.html
new file mode 100644
index 0000000..190acc8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.PublishJMS/additionalDetails.html
@@ -0,0 +1,81 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>PublishJMS</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+
+<body>
+<h2>Summary</h2>
+<p>
+ This processor publishes the contents of the incoming FlowFile to a JMS compliant messaging system.
+</p>
+<p>
+ This processor does two things. It constructs JMS Message by extracting FlowFile contents (both body and attributes).
+ Once message is constructed it is sent to a pre-configured JMS Destination.
+ Standard JMS Headers
+ will be extracted from the FlowFile and set on <i>javax.jms.Message</i> as JMS headers while other
+ FlowFile attributes will be set as properties of <i>javax.jms.Message</i>. Upon success the incoming FlowFile is transferred
+ to the <i>success</i> Relationship and upon failure FlowFile is
+ penalized and transferred to the <i>failure</i> Relationship.
+</p>
+<h2>Configuration Details</h2>
+<p>
+ At the time of writing this document it only defines the essential configuration properties which are suitable for most cases.
+ Other properties will be defined later as this component progresses.
+ Configuring PublishJMS:
+</p>
+<ol>
+ <li><b>User Name</b> - [OPTIONAL] User Name used for authentication and authorization when this processor obtains <i>javax.jms.Connection</i>
+ from the pre-configured <i>javax.jms.ConnectionFactory</i> (see below).
+ </li>
+ <li><b>Password</b> - [OPTIONAL] Password used in conjunction with <b>User Name</b>.
+ </li>
+ <li><b>Destination Name</b> - [REQUIRED] the name of the <i>javax.jms.Destination</i>.
+ Usually provided by administrator (e.g., 'topic://myTopic').
+ </li>
+ <li><b>Destination Type</b> - [REQUIRED] the type of the <i>javax.jms.Destination</i>. Could be one of 'QUEUE' or 'TOPIC'
+ Usually provided by the administrator. Defaults to 'QUEUE'.
+ </li>
+</ol>
+<h3>Connection Factory Configuration</h3>
+There are multiple ways to configure the Connection Factory for the processor:
+<ul>
+ <li><b>Connection Factory Service</b> property - link to a pre-configured controller service (<i>JndiJmsConnectionFactoryProvider</i> or <i>JMSConnectionFactoryProvider</i>)
+ </li>
+ <li><b>JNDI *</b> properties - processor level configuration, the properties are the same as the properties of <i>JndiJmsConnectionFactoryProvider</i> controller service,
+ the dynamic properties can also be used in this case
+ </li>
+ <li><b>JMS *</b> properties - processor level configuration, the properties are the same as the properties of <i>JMSConnectionFactoryProvider</i> controller service,
+ the dynamic properties can also be used in this case
+ </li>
+</ul>
+<p>
+ The preferred way is to use the Connection Factory Service property and a pre-configured controller service. It is also the most convenient method, because it is enough
+ to configure the controller service once and then it can be used in multiple processors.
+</p>
+<p>
+ However, some JMS client libraries may not work with the controller services due to incompatible Java ClassLoader handling between the 3rd party JMS client library and NiFi.
+ Should you encounter <i>java.lang.ClassCastException</i> errors when using the controller services, please try to configure the Connection Factory via the 'JNDI *' or
+ the 'JMS *' and the dynamic properties of the processor.
+ For more details on these properties, see the documentation of the corresponding controller service (<i>JndiJmsConnectionFactoryProvider</i> for 'JNDI *' and
+ <i>JMSConnectionFactoryProvider</i> for 'JMS *').
+</p>
+
+</body>
+</html>
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.PublishJMS/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.PublishJMS/index.html
new file mode 100644
index 0000000..0a0f5a1
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jms-processors-nar/2.0.0-M1/org.apache.nifi.jms.processors.PublishJMS/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishJMS</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishJMS</h1><h2>Description: </h2><p>Creates a JMS Message from the contents of a FlowFile and send [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jolt-record-nar/2.0.0-M1/org.apache.nifi.processors.jolt.record.JoltTransformRecord/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jolt-record-nar/2.0.0-M1/org.apache.nifi.processors.jolt.record.JoltTransformRecord/index.html
new file mode 100644
index 0000000..defce84
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jolt-record-nar/2.0.0-M1/org.apache.nifi.processors.jolt.record.JoltTransformRecord/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JoltTransformRecord</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JoltTransformRecord</h1><h2>Description: </h2><p>Applies a JOLT specification to each record [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jslt-nar/2.0.0-M1/org.apache.nifi.processors.jslt.JSLTTransformJSON/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jslt-nar/2.0.0-M1/org.apache.nifi.processors.jslt.JSLTTransformJSON/index.html
new file mode 100644
index 0000000..cb9dc32
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-jslt-nar/2.0.0-M1/org.apache.nifi.processors.jslt.JSLTTransformJSON/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>JSLTTransformJSON</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">JSLTTransformJSON</h1><h2>Description: </h2><p>Applies a JSLT transformation to the FlowFile JS [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/additionalDetails.html
new file mode 100644
index 0000000..5e53c6a
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/additionalDetails.html
@@ -0,0 +1,387 @@
+<!DOCTYPE html>
+<html lang="en">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <head>
+ <meta charset="utf-8" />
+ <title>ConsumeKafkaRecord</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+
+ <body>
+ <h2>Description</h2>
+ <p>
+ This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+ for data using KafkaConsumer API available with Kafka 2.6. When a message is received
+ from Kafka, the message will be deserialized using the configured Record Reader, and then
+ written to a FlowFile by serializing the message with the configured Record Writer.
+ </p>
+
+ <h2>Consumer Partition Assignment</h2>
+ <p>
+ By default, this processor will subscribe to one or more Kafka topics in such a way that the topics to consume from are randomly
+ assigned to the nodes in the NiFi cluster. Consider a scenario where a single Kafka topic has 8 partitions and the consuming
+ NiFi cluster has 3 nodes. In this scenario, Node 1 may be assigned partitions 0, 1, and 2. Node 2 may be assigned partitions 3, 4, and 5.
+ Node 3 will then be assigned partitions 6 and 7.
+ </p>
+
+ <p>
+ In this scenario, if Node 3 somehow fails or stops pulling data from Kafka, partitions 6 and 7 may then be reassigned to the other two nodes.
+ For most use cases, this is desirable. It provides fault tolerance and allows the remaining nodes to pick up the slack. However, there are cases
+ where this is undesirable.
+ </p>
+
+ <p>
+ One such case is when using NiFi to consume Change Data Capture (CDC) data from Kafka. Consider again the above scenario. Consider that Node 3
+ has pulled 1,000 messages from Kafka but has not yet delivered them to their final destination. NiFi is then stopped and restarted, and that takes
+ 15 minutes to complete. In the meantime, Partitions 6 and 7 have been reassigned to the other nodes. Those nodes then proceeded to pull data from
+ Kafka and deliver it to the desired destination. After 15 minutes, Node 3 rejoins the cluster and then continues to deliver its 1,000 messages that
+ it has already pulled from Kafka to the destination system. Now, those records have been delivered out of order.
+ </p>
+
+ <p>
+ The solution for this, then, is to assign partitions statically instead of dynamically. In this way, we can assign Partitions 6 and 7 to Node 3 specifically.
+ Then, if Node 3 is restarted, the other nodes will not pull data from Partitions 6 and 7. The data will remain queued in Kafka until Node 3 is restarted. By
+ using this approach, we can ensure that the data that already was pulled can be processed (assuming First In First Out Prioritizers are used) before newer messages
+ are handled.
+ </p>
+
+ <p>
+ In order to provide a static mapping of node to Kafka partition(s), one or more user-defined properties must be added using the naming scheme
+ <code>partitions.<hostname></code> with the value being a comma-separated list of Kafka partitions to use. For example,
+ <code>partitions.nifi-01=0, 3, 6, 9</code>, <code>partitions.nifi-02=1, 4, 7, 10</code>, and <code>partitions.nifi-03=2, 5, 8, 11</code>.
+ The hostname that is used can be the fully qualified hostname, the "simple" hostname, or the IP address. There must be an entry for each node in
+ the cluster, or the Processor will become invalid. If it is desirable for a node to not have any partitions assigned to it, a Property may be
+ added for the hostname with an empty string as the value.
+ </p>
+
+ <p>
+ NiFi cannot readily validate that all Partitions have been assigned before the Processor is scheduled to run. However, it can validate that no
+ partitions have been skipped. As such, if partitions 0, 1, and 3 are assigned but not partition 2, the Processor will not be valid. However,
+ if partitions 0, 1, and 2 are assigned, the Processor will become valid, even if there are 4 partitions on the Topic. When the Processor is
+ started, the Processor will immediately start to fail, logging errors, and avoid pulling any data until the Processor is updated to account
+ for all partitions. Once running, if the number of partitions is changed, the Processor will continue to run but not pull data from the newly
+ added partitions. Once stopped, it will begin to error until all partitions have been assigned. Additionally, if partitions that are assigned
+ do not exist (e.g., partitions 0, 1, 2, 3, 4, 5, 6, and 7 are assigned, but the Topic has only 4 partitions), then the Processor will begin
+ to log errors on startup and will not pull data.
+ </p>
+
+ <p>
+ In order to use a static mapping of Kafka partitions, the "Topic Name Format" must be set to "names" rather than "pattern." Additionally, all
+ Topics that are to be consumed must have the same number of partitions. If multiple Topics are to be consumed and have a different number of
+ partitions, multiple Processors must be used so that each Processor consumes only from Topics with the same number of partitions.
+ </p>
+
+
+ <h2>Security Configuration:</h2>
+ <p>
+ The Security Protocol property allows the user to specify the protocol for communicating
+ with the Kafka broker. The following sections describe each of the protocols in further detail.
+ </p>
+ <h3>PLAINTEXT</h3>
+ <p>
+ This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+ In order to use this option the broker must be configured with a listener of the form:
+ <pre>
+ PLAINTEXT://host.name:port
+ </pre>
+ </p>
+ <h3>SSL</h3>
+ <p>
+ This option provides an encrypted connection to the broker, with optional client authentication. In order
+ to use this option the broker must be configured with a listener of the form:
+ <pre>
+ SSL://host.name:port
+ </pre>
+ In addition, the processor must have an SSL Context Service selected.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+ not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+ a truststore containing the public key of the certificate authority used to sign the broker's key.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+ In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+ a truststore as described above.
+ </p>
+ <h3>SASL_PLAINTEXT</h3>
+ <p>
+ This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_PLAINTEXT://host.name:port
+ </pre>
+ In addition, the Kerberos Service Name must be specified in the processor.
+ </p>
+ <h4>SASL_PLAINTEXT - GSSAPI</h4>
+ <p>
+ If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate.
+ </p>
+ <p>
+ An example of the JAAS config file would be the following:
+ <pre>
+ KafkaClient {
+ com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ keyTab="/path/to/nifi.keytab"
+ serviceName="kafka"
+ principal="nifi@YOURREALM.COM";
+ };
+ </pre>
+ <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+ </p>
+ <p>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ keyTab="/path/to/nifi.keytab"
+ serviceName="kafka"
+ principal="nifi@YOURREALM.COM";
+ </pre>
+ </ol>
+ </p>
+ <p>
+ Alternatively, the JAAS
+ configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+ directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+ will take precedence over the java.security.auth.login.config system property.
+ </p>
+ <h4>SASL_PLAINTEXT - PLAIN</h4>
+ <p>
+ If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ </p>
+ <p>
+ <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+ the username and password unencrypted.
+ </p>
+ <p>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <p>
+ <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+ it visible to components in other NARs that may access the providers. There is currently a known issue
+ where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+ </p>
+ <h4>SASL_PLAINTEXT - SCRAM</h4>
+ <p>
+ If the SASL mechanism is SCRAM, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.scram.ScramLoginModule required
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ <p>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <h3>SASL_SSL</h3>
+ <p>
+ This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_SSL://host.name:port
+ </pre>
+ </p>
+ <p>
+ See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+ depending on the SASL mechanism (GSSAPI or PLAIN).
+ </p>
+ <p>
+ See the SSL section for a description of how to configure the SSL Context Service based on the
+ ssl.client.auth property.
+ </p>
+
+ <h2>Output Strategies</h2>
+ <div>
+ <p>This processor offers multiple output strategies (configured via processor property 'Output
+ Strategy') for converting Kafka records into FlowFiles.</p>
+ <ul>
+ <li>Output Strategy 'Write Value Only' (the default) emits flowfile records containing only the Kafka
+ record value.
+ </li>
+ <li>Output Strategy 'Use Wrapper' (new) emits flowfile records containing the Kafka record key, value,
+ and headers, as well as additional metadata from the Kafka record.
+ </li>
+ </ul>
+
+
+ <p>The record schema that is used when 'Use Wrapper' is active is as follows (in Avro format):</p>
+<pre>
+<code>
+{
+ "type": "record",
+ "name": "nifiRecord",
+ "namespace": "org.apache.nifi",
+ "fields": [{
+ "name": "key",
+ "type": [{
+ < Schema is determined by the Key Record Reader, or will be "string" or "bytes", depending on the "Key Format" property (see below for more details) >
+ }, "null"]
+ },
+ {
+ "name": "value",
+ "type": [
+ {
+ < Schema is determined by the Value Record Reader >
+ },
+ "null"
+ ]
+ },
+ {
+ "name": "headers",
+ "type": [
+ { "type": "map", "values": "string", "default": {}},
+ "null"]
+ },
+ {
+ "name": "metadata",
+ "type": [
+ {
+ "type": "record",
+ "name": "metadataType",
+ "fields": [
+ { "name": "topic", "type": ["string", "null"] },
+ { "name": "partition", "type": ["int", "null"] },
+ { "name": "offset", "type": ["int", "null"] },
+ { "name": "timestamp", "type": ["long", "null"] }
+ ]
+ },
+ "null"
+ ]
+ }
+ ]
+}
+</code>
+</pre>
+
+ <p>If the Output Strategy property is set to 'Use Wrapper', an additional processor configuration property
+ ('Key Format') is activated. This property is used to specify how the Kafka Record's key should be written out to the FlowFile.
+ The possible values for 'Key Format' are as follows:</p>
+ <ul>
+ <li>'Byte Array' supplies the Kafka Record Key as a byte array, exactly as they are received in the Kafka record.</li>
+ <li>'String' converts the Kafka Record Key bytes into a string using the UTF-8 character encoding.
+ (Failure to parse the key bytes as UTF-8 will result in the record being routed to the
+ 'parse.failure' relationship.)
+ </li>
+ <li>'Record' converts the Kafka Record Key bytes into a deserialized NiFi record, using the associated
+ 'Key Record Reader' controller service.
+ </li>
+ </ul>
+
+ <p>
+ If the Key Format property is set to 'Record', an additional processor configuration property name 'Key Record Reader' is
+ made available. This property is used to specify the Record Reader to use in order to parse the Kafka Record's key as a Record.
+ </p>
+
+ <p>Here is an example of FlowFile content that is emitted by <code>JsonRecordSetWriter</code> when strategy "Use Wrapper" is active:</p>
+<pre>
+<code>
+[
+ {
+ "key": {
+ "name": "Acme",
+ "number": "AC1234"
+ },
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number": "AC1234"
+ }
+ },
+ "headers": {
+ "attributeA": "valueA",
+ "attributeB": "valueB"
+ },
+ "metadata": {
+ "topic": "accounts",
+ "partition": 0,
+ "offset": 0,
+ "timestamp": 0
+ }
+ }
+]
+</code>
+</pre>
+
+ <p>These new processor properties may be used to extend the capabilities of ConsumeKafkaRecord_2_6, by
+ optionally incorporating additional information from the Kafka record (key, headers, metadata) into the
+ outbound flowfile. Additionally, the Kafka records' keys may now be interpreted as records, rather than as a string.
+ This enables additional decision-making by downstream processors in your flow and enables handling of records where
+ the key is complex, such as an Avro record.</p>
+
+ <p>Additionally, the choice of the 'Output Strategy' property affects the related properties
+ 'Headers to Add as Attributes (Regex)' and 'Key Attribute Encoding'. Since Output Strategy 'Use
+ Wrapper' includes headers and keys in the FlowFile content, they are not also added to the FlowFile
+ attributes. These properties are available only when the FlowFile Output Strategy is set to 'Write
+ Value Only'.</p>
+ </div>
+
+ </body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/index.html
new file mode 100644
index 0000000..44326d6
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafkaRecord_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafkaRecord_2_6</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka sp [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/additionalDetails.html
new file mode 100644
index 0000000..1598008
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/additionalDetails.html
@@ -0,0 +1,260 @@
+<!DOCTYPE html>
+<html lang="en">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <head>
+ <meta charset="utf-8" />
+ <title>ConsumeKafka</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+
+ <body>
+ <h2>Description</h2>
+ <p>
+ This Processor polls <a href="http://kafka.apache.org/">Apache Kafka</a>
+ for data using KafkaConsumer API available with Kafka 2.6. When a message is received
+ from Kafka, this Processor emits a FlowFile where the content of the FlowFile is the value
+ of the Kafka message.
+ </p>
+
+ <h2>Consumer Partition Assignment</h2>
+ <p>
+ By default, this processor will subscribe to one or more Kafka topics in such a way that the topics to consume from are randomly
+ assigned to the nodes in the NiFi cluster. Consider a scenario where a single Kafka topic has 8 partitions and the consuming
+ NiFi cluster has 3 nodes. In this scenario, Node 1 may be assigned partitions 0, 1, and 2. Node 2 may be assigned partitions 3, 4, and 5.
+ Node 3 will then be assigned partitions 6 and 7.
+ </p>
+
+ <p>
+ In this scenario, if Node 3 somehow fails or stops pulling data from Kafka, partitions 6 and 7 may then be reassigned to the other two nodes.
+ For most use cases, this is desirable. It provides fault tolerance and allows the remaining nodes to pick up the slack. However, there are cases
+ where this is undesirable.
+ </p>
+
+ <p>
+ One such case is when using NiFi to consume Change Data Capture (CDC) data from Kafka. Consider again the above scenario. Consider that Node 3
+ has pulled 1,000 messages from Kafka but has not yet delivered them to their final destination. NiFi is then stopped and restarted, and that takes
+ 15 minutes to complete. In the meantime, Partitions 6 and 7 have been reassigned to the other nodes. Those nodes then proceeded to pull data from
+ Kafka and deliver it to the desired destination. After 15 minutes, Node 3 rejoins the cluster and then continues to deliver its 1,000 messages that
+ it has already pulled from Kafka to the destination system. Now, those records have been delivered out of order.
+ </p>
+
+ <p>
+ The solution for this, then, is to assign partitions statically instead of dynamically. In this way, we can assign Partitions 6 and 7 to Node 3 specifically.
+ Then, if Node 3 is restarted, the other nodes will not pull data from Partitions 6 and 7. The data will remain queued in Kafka until Node 3 is restarted. By
+ using this approach, we can ensure that the data that already was pulled can be processed (assuming First In First Out Prioritizers are used) before newer messages
+ are handled.
+ </p>
+
+ <p>
+ In order to provide a static mapping of node to Kafka partition(s), one or more user-defined properties must be added using the naming scheme
+ <code>partitions.<hostname></code> with the value being a comma-separated list of Kafka partitions to use. For example,
+ <code>partitions.nifi-01=0, 3, 6, 9</code>, <code>partitions.nifi-02=1, 4, 7, 10</code>, and <code>partitions.nifi-03=2, 5, 8, 11</code>.
+ The hostname that is used can be the fully qualified hostname, the "simple" hostname, or the IP address. There must be an entry for each node in
+ the cluster, or the Processor will become invalid. If it is desirable for a node to not have any partitions assigned to it, a Property may be
+ added for the hostname with an empty string as the value.
+ </p>
+
+ <p>
+ NiFi cannot readily validate that all Partitions have been assigned before the Processor is scheduled to run. However, it can validate that no
+ partitions have been skipped. As such, if partitions 0, 1, and 3 are assigned but not partition 2, the Processor will not be valid. However,
+ if partitions 0, 1, and 2 are assigned, the Processor will become valid, even if there are 4 partitions on the Topic. When the Processor is
+ started, the Processor will immediately start to fail, logging errors, and avoid pulling any data until the Processor is updated to account
+ for all partitions. Once running, if the number of partitions is changed, the Processor will continue to run but not pull data from the newly
+ added partitions. Once stopped, it will begin to error until all partitions have been assigned. Additionally, if partitions that are assigned
+ do not exist (e.g., partitions 0, 1, 2, 3, 4, 5, 6, and 7 are assigned, but the Topic has only 4 partitions), then the Processor will begin
+ to log errors on startup and will not pull data.
+ </p>
+
+ <p>
+ In order to use a static mapping of Kafka partitions, the "Topic Name Format" must be set to "names" rather than "pattern." Additionally, all
+ Topics that are to be consumed must have the same number of partitions. If multiple Topics are to be consumed and have a different number of
+ partitions, multiple Processors must be used so that each Processor consumes only from Topics with the same number of partitions.
+ </p>
+
+
+ <h2>Security Configuration</h2>
+ <p>
+ The Security Protocol property allows the user to specify the protocol for communicating
+ with the Kafka broker. The following sections describe each of the protocols in further detail.
+ </p>
+ <h3>PLAINTEXT</h3>
+ <p>
+ This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+ In order to use this option the broker must be configured with a listener of the form:
+ <pre>
+ PLAINTEXT://host.name:port
+ </pre>
+ </p>
+ <h3>SSL</h3>
+ <p>
+ This option provides an encrypted connection to the broker, with optional client authentication. In order
+ to use this option the broker must be configured with a listener of the form:
+ <pre>
+ SSL://host.name:port
+ </pre>
+ In addition, the processor must have an SSL Context Service selected.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+ not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+ a truststore containing the public key of the certificate authority used to sign the broker's key.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+ In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+ a truststore as described above.
+ </p>
+ <h3>SASL_PLAINTEXT</h3>
+ <p>
+ This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_PLAINTEXT://host.name:port
+ </pre>
+ In addition, the Kerberos Service Name must be specified in the processor.
+ </p>
+ <h4>SASL_PLAINTEXT - GSSAPI</h4>
+ <p>
+ If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate.
+ </p>
+ <p>
+ An example of the JAAS config file would be the following:
+ <pre>
+ KafkaClient {
+ com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ keyTab="/path/to/nifi.keytab"
+ serviceName="kafka"
+ principal="nifi@YOURREALM.COM";
+ };
+ </pre>
+ <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+ </p>
+ <p>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ keyTab="/path/to/nifi.keytab"
+ serviceName="kafka"
+ principal="nifi@YOURREALM.COM";
+ </pre>
+ </ol>
+ </p>
+ <p>
+ Alternatively, the JAAS
+ configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+ directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+ will take precedence over the java.security.auth.login.config system property.
+ </p>
+ <h4>SASL_PLAINTEXT - PLAIN</h4>
+ <p>
+ If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ </p>
+ <p>
+ <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+ the username and password unencrypted.
+ </p>
+ <p>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <p>
+ <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+ it visible to components in other NARs that may access the providers. There is currently a known issue
+ where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+ </p>
+ <h4>SASL_PLAINTEXT - SCRAM</h4>
+ <p>
+ If the SASL mechanism is SCRAM, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.scram.ScramLoginModule required
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ <p>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <h3>SASL_SSL</h3>
+ <p>
+ This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_SSL://host.name:port
+ </pre>
+ </p>
+ <p>
+ See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+ depending on the SASL mechanism (GSSAPI or PLAIN).
+ </p>
+ <p>
+ See the SSL section for a description of how to configure the SSL Context Service based on the
+ ssl.client.auth property.
+ </p>
+
+ </body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/index.html
new file mode 100644
index 0000000..4327be6
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.ConsumeKafka_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>ConsumeKafka_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">ConsumeKafka_2_6</h1><h2>Description: </h2><p>Consumes messages from Apache Kafka specifically b [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/additionalDetails.html
new file mode 100644
index 0000000..8a75443
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/additionalDetails.html
@@ -0,0 +1,1076 @@
+<!DOCTYPE html>
+<html lang="en">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <head>
+ <meta charset="utf-8" />
+ <title>PublishKafkaRecord</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+
+ <body>
+ <h2>Description</h2>
+ <p>
+ This Processor puts the contents of a FlowFile to a Topic in
+ <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+ with Kafka 2.6 API. The contents of the incoming FlowFile will be read using the
+ configured Record Reader. Each record will then be serialized using the configured
+ Record Writer, and this serialized form will be the content of a Kafka message.
+ This message is optionally assigned a key by using the <Kafka Key> Property.
+ </p>
+
+
+ <h2>Security Configuration</h2>
+ <p>
+ The Security Protocol property allows the user to specify the protocol for communicating
+ with the Kafka broker. The following sections describe each of the protocols in further detail.
+ </p>
+ <h3>PLAINTEXT</h3>
+ <p>
+ This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+ In order to use this option the broker must be configured with a listener of the form:
+ <pre>
+ PLAINTEXT://host.name:port
+ </pre>
+ </p>
+ <h3>SSL</h3>
+ <p>
+ This option provides an encrypted connection to the broker, with optional client authentication. In order
+ to use this option the broker must be configured with a listener of the form:
+ <pre>
+ SSL://host.name:port
+ </pre>
+ In addition, the processor must have an SSL Context Service selected.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+ not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+ a truststore containing the public key of the certificate authority used to sign the broker's key.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+ In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+ a truststore as described above.
+ </p>
+ <h3>SASL_PLAINTEXT</h3>
+ <p>
+ This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_PLAINTEXT://host.name:port
+ </pre>
+ In addition, the Kerberos Service Name must be specified in the processor.
+ </p>
+ <h4>SASL_PLAINTEXT - GSSAPI</h4>
+ <p>
+ If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+ JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf, such as:
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ </p>
+ <p>
+ An example of the JAAS config file would be the following:
+ <pre>
+ KafkaClient {
+ com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ keyTab="/path/to/nifi.keytab"
+ serviceName="kafka"
+ principal="nifi@YOURREALM.COM";
+ };
+ </pre>
+ <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+ </p>
+ <p>
+ Alternatively, the JAAS
+ configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+ directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+ will take precedence over the java.security.auth.login.config system property.
+ </p>
+ <h4>SASL_PLAINTEXT - PLAIN</h4>
+ <p>
+ If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ </p>
+ <p>
+ <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+ the username and password unencrypted.
+ </p>
+ <p>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <p>
+ <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+ it visible to components in other NARs that may access the providers. There is currently a known issue
+ where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+ </p>
+
+ <h4>SASL_PLAINTEXT - SCRAM</h4>
+ <p>
+ If the SASL mechanism is SSL, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.scram.ScramLoginModule
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <h3>SASL_SSL</h3>
+ <p>
+ This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_SSL://host.name:port
+ </pre>
+ </p>
+ <p>
+ See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+ depending on the SASL mechanism (GSSAPI or PLAIN).
+ </p>
+ <p>
+ See the SSL section for a description of how to configure the SSL Context Service based on the
+ ssl.client.auth property.
+ </p>
+
+
+
+ <h2>Publish Strategy</h2>
+ <div>
+ <p>This processor includes optional properties that control how a Kafka Record's key and headers are determined:</p>
+
+ <ul>
+ <li>'Publish Strategy'</li>
+ <li>'Record Key Writer'</li>
+ </ul>
+
+ <p>'Publish Strategy' controls the mode used to convert the FlowFile record into a Kafka record.</p>
+ <ul>
+ <li>'Use Content as Record Value' (the default) - the content of the FlowFile Record becomes the content of the Kafka record. The Kafka record's key is determined by the 'Message Key
+ Field' property, and the Kafka record's headers are determined by the 'Attributes to Send as Headers (Regex)' property.</li>
+ <li>'Use Wrapper' - the content of the FlowFile record is a wrapper consisting of the Kafka record's key, value, headers, and metadata (topic and partition).</li>
+ </ul>
+
+ <p>
+ If Publish Strategy is set to 'Use Wrapper', two additional processor configuration properties are
+ made available: 'Record Key Writer' and 'Record Metadata Strategy'.
+ </p>
+
+ <p>
+ The 'Record Key Writer' property determines the Record Writer that should be used to serialize the Kafka record's key.
+ This may be used to emit the key as JSON, Avro, XML, or some other data format. If this property is not set, and the NiFi Record indicates that the key itself
+ is a Record, the FlowFile will be routed to the 'failure' relationship. If this property is not set and the NiFi Record has a Byte Array or a String (encoded in UTF-8 format), the
+ Kafka record's key will still be set accordingly.
+ </p>
+
+ <p>
+ The 'Record Metadata Strategy' specifies whether the Kafka Topic and partition should come from the configured 'Topic Name' property and 'Partition' / 'Partitioner class' properties,
+ or if they should come from the Record's optional <code>metadata</code> field. If the value is set to 'Metadata From Record', the incoming FlowFile record is expected to have a field
+ named 'metadata'. That field is expected to be a Record with a 'topic' and a 'partition' field. If these fields are missing or invalid, the processor's 'Topic Name' and 'Partition' /
+ 'Partitioner class' properties will still be used.
+ </p>
+
+ <p>
+ Using the <code>metadata</code> field to convey the topic and partition has two advantages. Firstly, it pairs well with the ConsumeKafkaRecord_* processor, which produces
+ this same schema. This means that if data is consumed from one topic and pushed to another topic (or Kafka cluster), the data can be easily pinned to the same partition and topic name.
+ If the data should be pushed to a different topic, it can be easily updated using an UpdateRecord processor, for instance.
+ </p>
+
+ <p>
+ Additionally, because a single FlowFile can be sent as a single Kafka transaction, this allows sending records to multiple Kafka topics in a single transaction.
+ </p>
+
+
+
+ <h3>Examples</h3>
+ <p>
+ The below examples illustrate what will be sent to Kafka, given different configurations and FlowFile contents. These examples
+ all assume that JsonRecordSetWriter and JsonTreeReader will be used for the Record Readers and Writers.
+ </p>
+
+
+ <h4>Publish Strategy = 'Use Content as Record Value'</h4>
+
+ <p>
+ Given the processor configuration:
+ </p>
+ <table border="thin">
+ <tr>
+ <th>Processor Property</th>
+ <th>Configured Value</th>
+ </tr>
+ <tr>
+ <td>Message Key Field</td>
+ <td>account</td>
+ </tr>
+ <tr>
+ <td>Attributes to Send as Headers (Regex)</td>
+ <td>attribute.*</td>
+ </tr>
+ </table>
+
+ <p>
+ And a FlowFile with the content:
+ </p>
+
+ <pre>
+ <code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code>
+ </pre>
+
+ <p>
+ And attributes:
+ </p>
+ <table border="thin">
+ <tr>
+ <th>Attribute Name</th>
+ <th>Attribute Value</th>
+ </tr>
+ <tr>
+ <td>attributeA</td>
+ <td>valueA</td>
+ </tr>
+ <tr>
+ <td>attributeB</td>
+ <td>valueB</td>
+ </tr>
+ <tr>
+ <td>otherAttribute</td>
+ <td>otherValue</td>
+ </tr>
+ </table>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Record Key</th>
+ <td><code>{"name":"Acme","number":"AC1234"}</code></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>attributeA</td>
+ <td>valueA</td>
+ </tr>
+ <tr>
+ <td>attributeB</td>
+ <td>valueB</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+
+
+ <h4>Publish Strategy = 'Use Wrapper'</h4>
+
+ <p>
+ When the Publish Strategy is configured to 'Use Wrapper', each FlowFile Record is expected to adhere to a specific schema.
+ The Record must have three fields: <code>key</code>, <code>value</code>, and <code>headers</code>. There is a fourth, optional field named <code>metadata</code>.
+ The <code>key</code> may be a String, a byte array, or a Record. The <code>value</code> can be any Record. The <code>headers</code>
+ is a Map where the values are Strings. The <code>metadata</code> field is a Record that has two fields of interest: <code>topic</code> and <code>partition</code>. If these
+ fields are specified, they will take precedence over the configured 'Topic Name' and 'Partition' and 'Partitioner class' processor properties.
+ </p>
+
+
+
+ <h5>Example 1 - Key as String</h5>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "key": "Acme Holdings",
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "headers": {
+ "accountType": "enterprise",
+ "test": "true"
+ }
+}</code>
+ </pre>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Record Key</th>
+ <td><code>Acme Holdings</code></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>accountType</td>
+ <td>enterprise</td>
+ </tr>
+ <tr>
+ <td>test</td>
+ <td>true</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ Note that in this case, the headers and key come directly from the Record, not from FlowFile attributes.
+ If there is a desire to include some FlowFile attributes in the headers, this should be accomplished by using a Processor
+ upstream in order to inject those values into the <code>headers</code> field. For example, an UpdateRecord processor could be used
+ to easily add new fields to the <code>headers</code> Map.
+ </p>
+
+
+
+ <h5>Example 2 - Key as Record</h5>
+ <p>
+ Additionally, we may choose to use a more complex value for the record key. The key itself may be a record. This is sometimes used to write the record key
+ either as JSON or as Avro. In this example, we assume that the 'Record Key Writer' property is set to a JsonRecordSetWriter.
+ </p>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "key": {
+ "accountName": "Acme Holdings",
+ "accountHolder": "John Doe",
+ "accountId": "280182830-A009"
+ },
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ }
+}</code>
+ </pre>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Record Key</th>
+ <td><code>{"accountName":"Acme Holdings","accountHolder":"John Doe","accountId":"280182830-A009"}</code></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td></td>
+ </tr>
+ </table>
+
+ <p>
+ Note here that the Record Key is JSON, as the 'Record Key Writer' property is configured to write JSON. it could just as easily be Avro.
+ </p>
+ <p>
+ Also note that if the 'Record Key Writer' had not been set, the FlowFile would have been routed to the 'failure' relationship because the key is a Record.
+ </p>
+ <p>
+ Finally, note here that the <code>headers</code> field is missing. This is acceptable and no headers will be added to the Kafka record.
+ </p>
+
+
+
+
+
+ <h5>Example 3 - Key as Byte Array</h5>
+ <p>
+ We can also have a Record whose <code>key</code> field is an array of bytes. In this case, the 'Record Key Writer' property is not used.
+ </p>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "key": [65, 27, 10, 20, 11, 57, 88, 19, 65],
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "otherField": {
+ "a": "b"
+ }
+}</code>
+ </pre>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Record Key</th>
+ <td><code>0x411b0a140b39581341</code></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td></td>
+ </tr>
+ </table>
+
+ <p>
+ In this case, the byte array that is specified for the key is provided to the Kafka Record as a byte array without changes (in the table, it is simply represented as Hex).
+ </p>
+ <p>
+ Finally, note here that the <code>headers</code> field is missing and an extraneous field, <code>otherField</code> is present.
+ This is acceptable and no headers will be added to the Kafka record. The <code>otherField</code> is simply ignored.
+ </p>
+
+
+
+
+ <h5>Example 4 - No Key</h5>
+ <p>
+ We can also have a Record whose <code>key</code> field is null or missing. In this case, the 'Record Key Writer' property is not used.
+ </p>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "headers": {
+ "a": "b",
+ "c": {
+ "d": "e"
+ }
+ }
+}</code>
+ </pre>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Record Key</th>
+ <td></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>a</td>
+ <td>b</td>
+ </tr>
+ <tr>
+ <td>c</td>
+ <td>MapRecord[{d=e}]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ In this case, the key is not present, so the Kafka record that is produced has no key associated with it.
+ </p>
+ <p>
+ Note also that the <code>headers</code> field has the expected value for the <code>a</code> header but the <code>c</code>
+ header has an expected value of <code>MapRecord[{d=e}]</code>. This is because the <code>headers</code> field is expected always to be a Map
+ with String values. By providing a Record for the <code>c</code> element, we have violated the contract. NiFi attempts to compensate for this
+ by creating a String representation of the Record, even if it is unlikely to be the representation that the user expects.
+ </p>
+
+
+
+ <h5>Example 5 - Topic provided in Record</h5>
+ <p>
+ If the Metadata field is provided in the FlowFile's Record, it will be used to determine the Topic and the Partition that the Records are written to.
+ </p>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "headers": {
+ "a": "b"
+ },
+ "metadata": {
+ "topic": "topic1"
+ }
+}</code>
+ </pre>
+
+ <p>
+ And considering that the processor properties are configured as:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Property Name</th>
+ <th>Property Value</th>
+ </tr>
+ <tr>
+ <td>Topic Name</td>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <td>Partition</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>Record Metadata Strategy</td>
+ <td>Metadata From Record</td>
+ </tr>
+ </table>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Kafka Topic</th>
+ <td>topic1</td>
+ </tr>
+ <tr>
+ <th>Topic Partition</th>
+ <td>2</td>
+ </tr>
+ <tr>
+ <th>Record Key</th>
+ <td></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>a</td>
+ <td>b</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ Note that the topic name comes directly from the FlowFile record, and the configured topic name ("My Topic") is ignored. However, if either the "metadata" field or its "topic" sub-field
+ were missing, the configured topic name ("My Topic") would be used.
+ </p>
+
+
+
+
+ <h5>Example 6 - Partition provided in Record</h5>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "headers": {
+ "a": "b"
+ },
+ "metadata": {
+ "partition": 6
+ }
+}</code>
+ </pre>
+
+ <p>
+ And considering that the processor properties are configured as:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Property Name</th>
+ <th>Property Value</th>
+ </tr>
+ <tr>
+ <td>Topic Name</td>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <td>Partition</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>Record Metadata Strategy</td>
+ <td>Metadata From Record</td>
+ </tr>
+ </table>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Kafka Topic</th>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <th>Topic Partition</th>
+ <td>6</td>
+ </tr>
+ <tr>
+ <th>Record Key</th>
+ <td></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>a</td>
+ <td>b</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+
+
+
+
+ <h5>Example 7 - Topic and Partition provided in Record</h5>
+ <p>
+ If the Metadata field is provided in the FlowFile's Record, it will be used to determine the Topic and the Partition that the Records are written to.
+ </p>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "headers": {
+ "a": "b"
+ },
+ "metadata": {
+ "topic": "topic1",
+ "partition": 0
+ }
+}</code>
+ </pre>
+
+ <p>
+ And considering that the processor properties are configured as:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Property Name</th>
+ <th>Property Value</th>
+ </tr>
+ <tr>
+ <td>Topic Name</td>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <td>Partition</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>Record Metadata Strategy</td>
+ <td>Metadata From Record</td>
+ </tr>
+ </table>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Kafka Topic</th>
+ <td>topic1</td>
+ </tr>
+ <tr>
+ <th>Topic Partition</th>
+ <td>0</td>
+ </tr>
+ <tr>
+ <th>Record Key</th>
+ <td></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>a</td>
+ <td>b</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ In this case, both the topic name and the partition are explicitly defined within the incoming Record, and those will be used.
+ </p>
+
+
+
+
+
+ <h5>Example 8 - Invalid metadata provided in Record</h5>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "headers": {
+ "a": "b"
+ },
+ "metadata": "hello"
+}</code>
+ </pre>
+
+ <p>
+ And considering that the processor properties are configured as:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Property Name</th>
+ <th>Property Value</th>
+ </tr>
+ <tr>
+ <td>Topic Name</td>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <td>Partition</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>Record Metadata Strategy</td>
+ <td>Metadata From Record</td>
+ </tr>
+ </table>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Kafka Topic</th>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <th>Topic Partition</th>
+ <td>2</td>
+ </tr>
+ <tr>
+ <th>Record Key</th>
+ <td></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>a</td>
+ <td>b</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ In this case, the "metadata" field in the Record is ignored because it is not itself a Record.
+ </p>
+
+
+
+
+ <h5>Example 9 - Use Configured Values for Metadata</h5>
+
+ <p>
+ Given a FlowFile with the content:
+ </p>
+
+ <pre>
+<code>{
+ "value": {
+ "address": "1234 First Street",
+ "zip": "12345",
+ "account": {
+ "name": "Acme",
+ "number":"AC1234"
+ }
+ },
+ "headers": {
+ "a": "b"
+ },
+ "metadata": {
+ "topic": "topic1",
+ "partition": 6
+ }
+}</code>
+ </pre>
+
+ <p>
+ And considering that the processor properties are configured as:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Property Name</th>
+ <th>Property Value</th>
+ </tr>
+ <tr>
+ <td>Topic Name</td>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <td>Partition</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>Record Metadata Strategy</td>
+ <td>Use Configured Values</td>
+ </tr>
+ </table>
+
+ <p>
+ The record that is produced to Kafka will have the following characteristics:
+ </p>
+
+ <table border="thin">
+ <tr>
+ <th>Kafka Topic</th>
+ <td>My Topic</td>
+ </tr>
+ <tr>
+ <th>Topic Partition</th>
+ <td>2</td>
+ </tr>
+ <tr>
+ <th>Record Key</th>
+ <td></td>
+ </tr>
+ <tr>
+ <th>Record Value</th>
+ <td><code>{"address":"1234 First Street","zip":"12345","account":{"name":"Acme","number":"AC1234"}}</code></td>
+ </tr>
+ <tr>
+ <th>Record Headers</th>
+ <td>
+ <table border="thin">
+ <tr>
+ <td>Header Name</td>
+ <td>Header Value</td>
+ </tr>
+ <tr>
+ <td>a</td>
+ <td>b</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+
+ <p>
+ In this case, the "metadata" field specifies both the topic and the partition. However, it is ignored in favor of the processor properties 'Topic' and 'Partition' because
+ the property 'Record Metadata Strategy' is set to 'Use Configured Values'.
+ </p>
+
+
+ </div>
+ </body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/index.html
new file mode 100644
index 0000000..41b11b2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafkaRecord_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafkaRecord_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafkaRecord_2_6</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as in [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/additionalDetails.html
new file mode 100644
index 0000000..3f8d349
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/additionalDetails.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<html lang="en">
+ <!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <head>
+ <meta charset="utf-8" />
+ <title>PublishKafka</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+ </head>
+
+ <body>
+ <h2>Description</h2>
+ <p>
+ This Processor puts the contents of a FlowFile to a Topic in
+ <a href="http://kafka.apache.org/">Apache Kafka</a> using KafkaProducer API available
+ with Kafka 2.6 API. The content of a FlowFile becomes the contents of a Kafka message.
+ This message is optionally assigned a key by using the <Kafka Key> Property.
+ </p>
+
+ <p>
+ The Processor allows the user to configure an optional Message Demarcator that
+ can be used to send many messages per FlowFile. For example, a <i>\n</i> could be used
+ to indicate that the contents of the FlowFile should be used to send one message
+ per line of text. It also supports multi-char demarcators (e.g., 'my custom demarcator').
+ If the property is not set, the entire contents of the FlowFile
+ will be sent as a single message. When using the demarcator, if some messages are
+ successfully sent but other messages fail to send, the resulting FlowFile will be
+ considered a failed FlowFile and will have additional attributes to that effect.
+ One of such attributes is 'failed.last.idx' which indicates the index of the last message
+ that was successfully ACKed by Kafka. (if no demarcator is used the value of this index will be -1).
+ This will allow PublishKafka to only re-send un-ACKed messages on the next re-try.
+ </p>
+
+
+ <h2>Security Configuration</h2>
+ <p>
+ The Security Protocol property allows the user to specify the protocol for communicating
+ with the Kafka broker. The following sections describe each of the protocols in further detail.
+ </p>
+ <h3>PLAINTEXT</h3>
+ <p>
+ This option provides an unsecured connection to the broker, with no client authentication and no encryption.
+ In order to use this option the broker must be configured with a listener of the form:
+ <pre>
+ PLAINTEXT://host.name:port
+ </pre>
+ </p>
+ <h3>SSL</h3>
+ <p>
+ This option provides an encrypted connection to the broker, with optional client authentication. In order
+ to use this option the broker must be configured with a listener of the form:
+ <pre>
+ SSL://host.name:port
+ </pre>
+ In addition, the processor must have an SSL Context Service selected.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=none, or does not specify ssl.client.auth, then the client will
+ not be required to present a certificate. In this case, the SSL Context Service selected may specify only
+ a truststore containing the public key of the certificate authority used to sign the broker's key.
+ </p>
+ <p>
+ If the broker specifies ssl.client.auth=required then the client will be required to present a certificate.
+ In this case, the SSL Context Service must also specify a keystore containing a client key, in addition to
+ a truststore as described above.
+ </p>
+ <h3>SASL_PLAINTEXT</h3>
+ <p>
+ This option uses SASL with a PLAINTEXT transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_PLAINTEXT://host.name:port
+ </pre>
+ In addition, the Kerberos Service Name must be specified in the processor.
+ </p>
+ <h4>SASL_PLAINTEXT - GSSAPI</h4>
+ <p>
+ If the SASL mechanism is GSSAPI, then the client must provide a JAAS configuration to authenticate. The
+ JAAS configuration can be provided by specifying the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf, such as:
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ </p>
+ <p>
+ An example of the JAAS config file would be the following:
+ <pre>
+ KafkaClient {
+ com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ keyTab="/path/to/nifi.keytab"
+ serviceName="kafka"
+ principal="nifi@YOURREALM.COM";
+ };
+ </pre>
+ <b>NOTE:</b> The serviceName in the JAAS file must match the Kerberos Service Name in the processor.
+ </p>
+ <p>
+ Alternatively, the JAAS
+ configuration when using GSSAPI can be provided by specifying the Kerberos Principal and Kerberos Keytab
+ directly in the processor properties. This will dynamically create a JAAS configuration like above, and
+ will take precedence over the java.security.auth.login.config system property.
+ </p>
+ <h4>SASL_PLAINTEXT - PLAIN</h4>
+ <p>
+ If the SASL mechanism is PLAIN, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's PlainLoginModule. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.plain.PlainLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ </p>
+ <p>
+ <b>NOTE:</b> It is not recommended to use a SASL mechanism of PLAIN with SASL_PLAINTEXT, as it would transmit
+ the username and password unencrypted.
+ </p>
+ <p>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of PLAIN. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <p>
+ <b>NOTE:</b> Using the PlainLoginModule will cause it be registered in the JVM's static list of Providers, making
+ it visible to components in other NARs that may access the providers. There is currently a known issue
+ where Kafka processors using the PlainLoginModule will cause HDFS processors with Keberos to no longer work.
+ </p>
+
+ <h4>SASL_PLAINTEXT - SCRAM</h4>
+ <p>
+ If the SASL mechanism is SSL, then client must provide a JAAS configuration to authenticate, but
+ the JAAS configuration must use Kafka's ScramLoginModule. Ensure that you add user defined attribute 'sasl.mechanism' and assign 'SCRAM-SHA-256' or 'SCRAM-SHA-512' based on kafka broker configurations. An example of the JAAS config file would
+ be the following:
+ <pre>
+ KafkaClient {
+ org.apache.kafka.common.security.scram.ScramLoginModule
+ username="nifi"
+ password="nifi-password";
+ };
+ </pre>
+
+ The JAAS configuration can be provided by either of below ways
+ <ol type="1">
+ <li>specify the java.security.auth.login.config system property in
+ NiFi's bootstrap.conf. This limits you to use only one user credential across the cluster.</li>
+ <pre>
+ java.arg.16=-Djava.security.auth.login.config=/path/to/kafka_client_jaas.conf
+ </pre>
+ <li>add user attribute 'sasl.jaas.config' in the processor configurations. This method allows one to have multiple consumers with different user credentials or gives flexibility to consume from multiple kafka clusters.</li>
+ <pre>
+ sasl.jaas.config : org.apache.kafka.common.security.scram.ScramLoginModule required
+ username="nifi"
+ password="nifi-password";
+ </pre>
+ <b>NOTE:</b> The dynamic properties of this processor are not secured and as a result the password entered when utilizing sasl.jaas.config will be stored in the flow.json.gz file in plain-text, and will be saved to NiFi Registry if using versioned flows.
+ </ol>
+ <b>NOTE:</b> The Kerberos Service Name is not required for SASL mechanism of SCRAM-SHA-256 or SCRAM-SHA-512. However, processor warns saying this attribute has to be filled with non empty string. You can choose to fill any random string, such as "null".
+ </p>
+ <h3>SASL_SSL</h3>
+ <p>
+ This option uses SASL with an SSL/TLS transport layer to authenticate to the broker. In order to use this
+ option the broker must be configured with a listener of the form:
+ <pre>
+ SASL_SSL://host.name:port
+ </pre>
+ </p>
+ <p>
+ See the SASL_PLAINTEXT section for a description of how to provide the proper JAAS configuration
+ depending on the SASL mechanism (GSSAPI or PLAIN).
+ </p>
+ <p>
+ See the SSL section for a description of how to configure the SSL Context Service based on the
+ ssl.client.auth property.
+ </p>
+ </body>
+</html>
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/index.html
new file mode 100644
index 0000000..ca981f8
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.processors.kafka.pubsub.PublishKafka_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PublishKafka_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PublishKafka_2_6</h1><h2>Description: </h2><p>Sends the contents of a FlowFile as a message to A [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_6/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_6/index.html
new file mode 100644
index 0000000..b3ffd86
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kafka-2-6-nar/2.0.0-M1/org.apache.nifi.record.sink.kafka.KafkaRecordSink_2_6/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KafkaRecordSink_2_6</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KafkaRecordSink_2_6</h1><h2>Description: </h2><p>Provides a service to write records to a Kaf [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-credentials-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KeytabCredentialsService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-credentials-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KeytabCredentialsService/index.html
new file mode 100644
index 0000000..92dcdca
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-credentials-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KeytabCredentialsService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KeytabCredentialsService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KeytabCredentialsService</h1><h2>Description: </h2><p>Provides a mechanism for specifyin [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosKeytabUserService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosKeytabUserService/index.html
new file mode 100644
index 0000000..c0781eb
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosKeytabUserService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KerberosKeytabUserService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KerberosKeytabUserService</h1><h2>Description: </h2><p>Provides a mechanism for creatin [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosPasswordUserService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosPasswordUserService/index.html
new file mode 100644
index 0000000..7e006c2
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosPasswordUserService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KerberosPasswordUserService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KerberosPasswordUserService</h1><h2>Description: </h2><p>Provides a mechanism for cre [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosTicketCacheUserService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosTicketCacheUserService/index.html
new file mode 100644
index 0000000..3b04577
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-kerberos-user-service-nar/2.0.0-M1/org.apache.nifi.kerberos.KerberosTicketCacheUserService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>KerberosTicketCacheUserService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">KerberosTicketCacheUserService</h1><h2>Description: </h2><p>Provides a mechanism f [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-key-service-nar/2.0.0-M1/org.apache.nifi.key.service.StandardPrivateKeyService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-key-service-nar/2.0.0-M1/org.apache.nifi.key.service.StandardPrivateKeyService/index.html
new file mode 100644
index 0000000..3fe3411
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-key-service-nar/2.0.0-M1/org.apache.nifi.key.service.StandardPrivateKeyService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>StandardPrivateKeyService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">StandardPrivateKeyService</h1><h2>Description: </h2><p>Private Key Service provides acc [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-language-translation-nar/2.0.0-M1/org.apache.nifi.processors.yandex.YandexTranslate/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-language-translation-nar/2.0.0-M1/org.apache.nifi.processors.yandex.YandexTranslate/index.html
new file mode 100644
index 0000000..9adbcc6
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-language-translation-nar/2.0.0-M1/org.apache.nifi.processors.yandex.YandexTranslate/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>YandexTranslate</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">YandexTranslate</h1><h2>Description: </h2><p>Translates content and attributes from one language [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.CSVRecordLookupService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.CSVRecordLookupService/index.html
new file mode 100644
index 0000000..05bffcf
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.CSVRecordLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>CSVRecordLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">CSVRecordLookupService</h1><h2>Description: </h2><p>A reloadable CSV file-based lookup ser [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.DistributedMapCacheLookupService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.DistributedMapCacheLookupService/index.html
new file mode 100644
index 0000000..c51628c
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.DistributedMapCacheLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>DistributedMapCacheLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">DistributedMapCacheLookupService</h1><h2>Description: </h2><p>Allows to choose a [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.PropertiesFileLookupService/index.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.PropertiesFileLookupService/index.html
new file mode 100644
index 0000000..35ff646
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.PropertiesFileLookupService/index.html
@@ -0,0 +1 @@
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"></meta><title>PropertiesFileLookupService</title><link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css"></link></head><script type="text/javascript">window.onload = function(){if(self==top) { document.getElementById('nameHeader').style.display = "inherit"; } }</script><body><h1 id="nameHeader" style="display: none;">PropertiesFileLookupService</h1><h2>Description: </h2><p>A reloadable properties file [...]
\ No newline at end of file
diff --git a/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.RestLookupService/additionalDetails.html b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.RestLookupService/additionalDetails.html
new file mode 100644
index 0000000..7608b61
--- /dev/null
+++ b/documentation/nifi-2.0.0-M1/components/org.apache.nifi/nifi-lookup-services-nar/2.0.0-M1/org.apache.nifi.lookup.RestLookupService/additionalDetails.html
@@ -0,0 +1,65 @@
+<!DOCTYPE html>
+<html lang="en">
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<head>
+ <meta charset="utf-8" />
+ <title>RestLookupService</title>
+ <link rel="stylesheet" href="../../../../../css/component-usage.css" type="text/css" />
+</head>
+<body>
+ <h2>General</h2>
+ <p>This lookup service has the following optional lookup coordinate keys:</p>
+ <ul>
+ <li>request.method; defaults to 'get', valid values:
+ <ul>
+ <li>delete</li>
+ <li>get</li>
+ <li>post</li>
+ <li>put</li>
+ </ul>
+ </li>
+ <li>request.body; contains a string representing JSON, XML, etc. to be sent with any
+ of those methods except for "get".</li>
+ <li>mime.type; specifies media type of the request body, required when 'body' is passed.</li>
+ <li>*; any other keys can be configured to pass variables to resolve target URLs. See 'Dynamic URLs' section below.</li>
+ </ul>
+ <p>The record reader is used to consume the response of the REST service call and turn it into one or more records. The record path property
+ is provided to allow for a lookup path to either a nested record or a single point deep in the REST response. Note: a valid schema must be
+ built that encapsulates the REST response accurately in order for this service to work.</p>
+ <h2>Headers</h2>
+ <p>Headers are supported using dynamic properties. Just add a dynamic property and the name will be the header name and the value will be the value for the header. Expression language
+ powered by input from the variable registry is supported.</p>
+ <h2>Dynamic URLs</h2>
+ <p>The URL property supports expression language through the lookup key/value pairs configured on the component using this lookup service (e.g. LookupRecord processor). The configuration specified by the user will be passed
+ through to the expression language engine for evaluation. Note: flowfile attributes will be disregarded here for this property.</p>
+ <p>Ex. URL: <em>http://example.com/service/${user.name}/friend/${friend.id}</em>, combined with example record paths at LookupRecord processor:</p>
+ <ul>
+ <li>user.name => "/example/username"</li>
+ <li>friend.id => "/example/first_friend"</li>
+ </ul>
+ <p>Would dynamically produce an endpoint of <em>http://example.com/service/john.smith/friend/12345</em></p>
+
+ <h3>Using Environment Properties with URLs</h3>
+
+ <p>In addition to the lookup key/value pairs, environment properties / system variables can be referred from expression languages configured at the URL property.</p>
+ <p>Ex. URL: <em>http://${apiServerHostname}:${apiServerPort}/service/${user.name}/friend/${friend.id}</em>, combined with the previous example record paths, and environment properties:</p>
+ <ul>
+ <li>apiServerHostname => "test.example.com"</li>
+ <li>apiServerPort => "8080"</li>
+ </ul>
... 153641 lines suppressed ...