NIFIREG-245 Refactoring REST API docs to generate asciidoc from swagger spec and convert to html

- Removing values from @ApiModel so all models use default name from Java class
- Standardizing all @ApiOperation annotations to have a short value + notes, fixing problem with two models named Bundle

This closes #164.

Signed-off-by: Kevin Doran <kdoran@apache.org>
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java
index 6c16a68..4c50477 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/RegistryConfiguration.java
@@ -22,7 +22,7 @@
 import javax.xml.bind.annotation.XmlRootElement;
 
 @XmlRootElement
-@ApiModel(value = "registryConfiguration")
+@ApiModel
 public class RegistryConfiguration {
 
     private Boolean supportsManagedAuthorizer;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java
index 2cf51f0..7b911ec 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicy.java
@@ -27,7 +27,7 @@
 /**
  * Access policy details, including the users and user groups to which the policy applies.
  */
-@ApiModel("accessPolicy")
+@ApiModel
 public class AccessPolicy extends AccessPolicySummary {
 
     private Set<Tenant> users;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java
index 525eb19..909299e 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/AccessPolicySummary.java
@@ -23,7 +23,7 @@
 /**
  * Access policy summary of which actions ("read', "write", "delete") are allowable for a specified web resource.
  */
-@ApiModel("accessPolicySummary")
+@ApiModel
 public class AccessPolicySummary {
 
     private String identifier;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java
index 0d21c62..1bd4d4e 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/CurrentUser.java
@@ -19,7 +19,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-@ApiModel("currentUser")
+@ApiModel
 public class CurrentUser {
 
     private String identity;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java
index c76a41f..ca856b9 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Permissions.java
@@ -19,7 +19,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-@ApiModel("permissions")
+@ApiModel
 public class Permissions {
 
     private boolean canRead = false;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java
index 7dd4493..d409bf9 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Resource.java
@@ -19,7 +19,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-@ApiModel("resource")
+@ApiModel
 public class Resource {
 
     private String identifier;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java
index 80e95c0..de55e26 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/ResourcePermissions.java
@@ -19,7 +19,7 @@
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-@ApiModel("resourcePermissions")
+@ApiModel
 public class ResourcePermissions {
 
     private Permissions buckets = new Permissions();
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java
index 19eee90..59d8c17 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/Tenant.java
@@ -26,7 +26,7 @@
 /**
  * A tenant of this NiFi Registry
  */
-@ApiModel("tenant")
+@ApiModel
 public class Tenant {
 
     private String identifier;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java
index 6a820ab..0a91f71 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/User.java
@@ -23,7 +23,7 @@
 import java.util.HashSet;
 import java.util.Set;
 
-@ApiModel("user")
+@ApiModel
 public class User extends Tenant {
 
     private Set<Tenant> userGroups;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java
index 570502d..39fca36 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/authorization/UserGroup.java
@@ -26,7 +26,7 @@
 /**
  * A user group, used to apply a single set of authorization policies to a group of users.
  */
-@ApiModel("userGroup")
+@ApiModel
 public class UserGroup extends Tenant {
 
     private Set<Tenant> users;
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java
index a5f9f51..fcf27ca 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/Bucket.java
@@ -27,7 +27,7 @@
 import java.util.Objects;
 
 @XmlRootElement
-@ApiModel(value = "bucket")
+@ApiModel
 public class Bucket extends LinkableEntity {
 
     @NotBlank
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java
index ce9faa7..98a873d 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/bucket/BucketItem.java
@@ -26,7 +26,7 @@
 import javax.validation.constraints.NotNull;
 import java.util.Objects;
 
-@ApiModel("bucketItem")
+@ApiModel
 public abstract class BucketItem extends LinkableEntity {
 
     @NotBlank
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/extension/bundle/Bundle.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/extension/bundle/Bundle.java
index 63216fa..0a1cd4d 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/extension/bundle/Bundle.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/extension/bundle/Bundle.java
@@ -32,8 +32,11 @@
  * Each bundle may then have one or more versions associated with it by creating an {@link BundleVersion}.
  *
  * The {@link BundleVersion} represents the actually binary bundle which may contain one or more extensions.
+ *
+ * Note: The @ApiModel annotation needs a value specified because there is another class called Bundle in a different
+ * package for flows, and the model names must be unique since they won't carry the Java package structure forward.
  */
-@ApiModel
+@ApiModel("ExtensionBundle")
 @XmlRootElement
 public class Bundle extends BucketItem {
 
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java
index 6ece46a..5c5a43a 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlow.java
@@ -34,7 +34,7 @@
  * @see VersionedFlowSnapshot
  */
 @XmlRootElement
-@ApiModel(value = "versionedFlow")
+@ApiModel
 public class VersionedFlow extends BucketItem {
 
     @Min(0)
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java
index bc82397..76aceab 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshot.java
@@ -35,7 +35,7 @@
  * version of the flow, the timestamp when it was saved, the contents of the flow, etc.
  * </p>
  */
-@ApiModel(value = "versionedFlowSnapshot")
+@ApiModel
 @XmlRootElement
 public class VersionedFlowSnapshot {
 
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshotMetadata.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshotMetadata.java
index 2007279..dc58cf4 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshotMetadata.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/flow/VersionedFlowSnapshotMetadata.java
@@ -28,7 +28,7 @@
  * The metadata information about a VersionedFlowSnapshot. This class implements Comparable in order
  * to sort based on the snapshot version in ascending order.
  */
-@ApiModel(value = "versionedFlowSnapshotMetadata")
+@ApiModel
 public class VersionedFlowSnapshotMetadata extends LinkableEntity implements Comparable<VersionedFlowSnapshotMetadata> {
 
     @NotBlank
diff --git a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/link/LinkableEntity.java b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/link/LinkableEntity.java
index 896e9d3..0d09066 100644
--- a/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/link/LinkableEntity.java
+++ b/nifi-registry-core/nifi-registry-data-model/src/main/java/org/apache/nifi/registry/link/LinkableEntity.java
@@ -26,7 +26,7 @@
 /**
  * Base classes for domain objects that want to provide a hypermedia link.
  */
-@ApiModel("linkableEntity")
+@ApiModel
 public abstract class LinkableEntity {
 
     private Link link;
diff --git a/nifi-registry-core/nifi-registry-docs/pom.xml b/nifi-registry-core/nifi-registry-docs/pom.xml
index ff3240f..a6c5c6d 100644
--- a/nifi-registry-core/nifi-registry-docs/pom.xml
+++ b/nifi-registry-core/nifi-registry-docs/pom.xml
@@ -22,6 +22,16 @@
     </parent>
     <packaging>pom</packaging>
     <artifactId>nifi-registry-docs</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.nifi.registry</groupId>
+            <artifactId>nifi-registry-web-api</artifactId>
+            <version>0.4.0-SNAPSHOT</version>
+            <type>war</type>
+        </dependency>
+    </dependencies>
+
     <build>
         <plugins>
             <plugin>
@@ -60,6 +70,7 @@
                 </executions>
                 <configuration>
                     <sourceDirectory>${project.build.directory}/asciidoc</sourceDirectory>
+                    <outputDirectory>${project.build.directory}/generated-docs</outputDirectory>
                     <backend>html5</backend>
                     <attributes>
                         <imagesdir>./images</imagesdir>
@@ -74,6 +85,58 @@
                     </attributes>
                 </configuration>
             </plugin>
+            <!-- Unpack rest-api.html that was generated from nifi-registry-web-api and place it into a temp folder in the target dir -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-dependency-plugin</artifactId>
+                <version>3.1.1</version>
+                <executions>
+                    <execution>
+                        <id>unpack-rest-api-doc</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>unpack-dependencies</goal>
+                        </goals>
+                        <configuration>
+                            <includeGroupIds>org.apache.nifi.registry</includeGroupIds>
+                            <includeArtifactIds>nifi-registry-web-api</includeArtifactIds>
+                            <outputDirectory>${project.build.directory}/nifi-registry-web-api/</outputDirectory>
+                            <includes>**/rest-api.html</includes>
+                            <overWriteReleases>false</overWriteReleases>
+                            <overWriteSnapshots>false</overWriteSnapshots>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Copy rest-api.html from the tmp dir to the generated-docs dir where the other html docs are, this is done
+                    in two steps to eliminate the nested path that was created in the temp dir when running unpack-dependencies
+             -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-antrun-plugin</artifactId>
+                <version>1.8</version>
+                <executions>
+                    <execution>
+                        <id>copy-rest-api-doc</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>run</goal>
+                        </goals>
+                        <configuration>
+                            <target>
+                                <sequential>
+                                    <echo>Copy unpacked rest-api.html to generated-docs dir</echo>
+                                    <copy todir="${project.build.directory}/generated-docs">
+                                        <fileset dir="${project.build.directory}/nifi-registry-web-api/docs/rest-api/">
+                                            <include name="**" />
+                                        </fileset>
+                                    </copy>
+                                </sequential>
+                            </target>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
             <!-- This plugin is used to insert the Apache License into the output HMTL because
             AsciiDoc doesn't appear to provide a mechanism for doing this. -->
             <plugin>
diff --git a/nifi-registry-core/nifi-registry-web-api/pom.xml b/nifi-registry-core/nifi-registry-web-api/pom.xml
index 6e9fa10..7451f32 100644
--- a/nifi-registry-core/nifi-registry-web-api/pom.xml
+++ b/nifi-registry-core/nifi-registry-web-api/pom.xml
@@ -25,6 +25,14 @@
     <version>0.4.0-SNAPSHOT</version>
     <packaging>war</packaging>
 
+    <properties>
+        <swagger.source.dir>${project.basedir}/src/main/resources/swagger</swagger.source.dir>
+        <swagger.generated.dir>${project.build.directory}/swagger</swagger.generated.dir>
+        <asciidoc.source.dir>${project.basedir}/src/main/asciidoc</asciidoc.source.dir>
+        <asciidoc.generated.dir>${project.build.directory}/asciidoc</asciidoc.generated.dir>
+        <docs.dir>${project.build.directory}/${project.artifactId}-${project.version}/docs/</docs.dir>
+    </properties>
+
     <build>
         <resources>
             <resource>
@@ -65,7 +73,7 @@
                                     </schemes>
                                     <basePath>/nifi-registry-api</basePath>
                                     <info>
-                                        <title>NiFi Registry REST API</title>
+                                        <title>Apache NiFi Registry REST API</title>
                                         <version>${project.version}</version>
                                         <description>
                                             The REST API provides an interface to a registry with operations for saving, versioning, reading NiFi flows and components.
@@ -79,17 +87,16 @@
                                             <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
                                             <name>Apache 2.0 License</name>
                                         </license>
+                                        <termsOfService>As described in the license</termsOfService>
                                     </info>
                                     <securityDefinitions>
                                         <securityDefinition>
-                                            <jsonPath>${project.basedir}/src/main/resources/swagger/security-definitions.json</jsonPath>
+                                            <jsonPath>${swagger.source.dir}/security-definitions.json</jsonPath>
                                         </securityDefinition>
                                     </securityDefinitions>
                                     <templatePath>classpath:/templates/index.html.hbs</templatePath>
-                                    <outputPath>
-                                        ${project.build.directory}/${project.artifactId}-${project.version}/docs/rest-api/index.html
-                                    </outputPath>
-                                    <swaggerDirectory>${project.build.directory}/swagger</swaggerDirectory>
+                                    <outputPath>${docs.dir}/rest-api/index.html</outputPath>
+                                    <swaggerDirectory>${swagger.generated.dir}</swaggerDirectory>
                                 </apiSource>
                             </apiSources>
                         </configuration>
@@ -106,7 +113,7 @@
                             <goal>copy-resources</goal>
                         </goals>
                         <configuration>
-                            <outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/docs/rest-api/images</outputDirectory>
+                            <outputDirectory>${docs.dir}/rest-api/images</outputDirectory>
                             <resources>
                                 <resource>
                                     <directory>src/main/resources/images</directory>
@@ -131,12 +138,9 @@
                             <goal>wget</goal>
                         </goals>
                         <configuration>
-                            <url>
-                                https://github.com/swagger-api/swagger-ui/archive/v${swagger.ui.version}.tar.gz
-                            </url>
+                            <url>https://github.com/swagger-api/swagger-ui/archive/v${swagger.ui.version}.tar.gz</url>
                             <unpack>true</unpack>
-                            <outputDirectory>${project.build.directory}
-                            </outputDirectory>
+                            <outputDirectory>${project.build.directory}</outputDirectory>
                         </configuration>
                     </execution>
                 </executions>
@@ -184,6 +188,65 @@
                     </execution>
                 </executions>
             </plugin>
+            <!-- Generates asciidoc files from swagger.json -->
+            <plugin>
+                <groupId>io.github.swagger2markup</groupId>
+                <artifactId>swagger2markup-maven-plugin</artifactId>
+                <version>1.3.3</version>
+                <executions>
+                    <execution>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>convertSwagger2markup</goal>
+                        </goals>
+                        <configuration>
+                            <swaggerInput>${swagger.generated.dir}/swagger.json</swaggerInput>
+                            <outputDir>${asciidoc.generated.dir}</outputDir>
+                            <config>
+                                <swagger2markup.markupLanguage>ASCIIDOC</swagger2markup.markupLanguage>
+                                <swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>
+                                <swagger2markup.generatedExamplesEnabled>true</swagger2markup.generatedExamplesEnabled>
+                            </config>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Generates rest-api.html from rest-api.adoc and places it in docs dir within WAR -->
+            <plugin>
+                <groupId>org.asciidoctor</groupId>
+                <artifactId>asciidoctor-maven-plugin</artifactId>
+                <version>1.5.7.1</version>
+                <configuration>
+                    <sourceDirectory>${asciidoc.source.dir}</sourceDirectory>
+                    <sourceDocumentName>rest-api.adoc</sourceDocumentName>
+                    <attributes>
+                        <doctype>article</doctype>
+                        <toc></toc>
+                        <toclevels>3</toclevels>
+                        <numbered></numbered>
+                        <hardbreaks></hardbreaks>
+                        <sectlinks></sectlinks>
+                        <sectanchors></sectanchors>
+                        <revnumber>${project.version}</revnumber>
+                        <organization>Apache NiFi</organization>
+                        <generated>${asciidoc.generated.dir}</generated>
+                    </attributes>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>output-html</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>process-asciidoc</goal>
+                        </goals>
+                        <configuration>
+                            <backend>html5</backend>
+                            <outputDirectory>${docs.dir}/rest-api</outputDirectory>
+                            <outputFile>rest-api.html</outputFile>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
 
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/asciidoc/rest-api.adoc b/nifi-registry-core/nifi-registry-web-api/src/main/asciidoc/rest-api.adoc
new file mode 100644
index 0000000..4430d83
--- /dev/null
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/asciidoc/rest-api.adoc
@@ -0,0 +1,20 @@
+//
+// 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.
+
+include::{generated}/overview.adoc[]
+include::{generated}/security.adoc[]
+include::{generated}/paths.adoc[]
+include::{generated}/definitions.adoc[]
\ No newline at end of file
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessPolicyResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessPolicyResource.java
index 713b369..bfbeabf 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessPolicyResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessPolicyResource.java
@@ -91,7 +91,7 @@
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Creates an access policy",
+            value = "Create access policy",
             response = AccessPolicy.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -138,7 +138,7 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets all access policies",
+            value = "Get all access policies",
             response = AccessPolicy.class,
             responseContainer = "List",
             extensions = {
@@ -175,7 +175,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("{id}")
     @ApiOperation(
-            value = "Gets an access policy",
+            value = "Get access policy",
             response = AccessPolicy.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -218,7 +218,8 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("{action}/{resource: .+}")
     @ApiOperation(
-            value = "Gets an access policy for the specified action and resource",
+            value = "Get access policy for resource",
+            notes = "Gets an access policy for the specified action and resource",
             response = AccessPolicy.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -268,7 +269,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("{id}")
     @ApiOperation(
-            value = "Updates a access policy",
+            value = "Update access policy",
             response = AccessPolicy.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -321,7 +322,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("{id}")
     @ApiOperation(
-            value = "Deletes an access policy",
+            value = "Delete access policy",
             response = AccessPolicy.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -361,7 +362,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the available resources that support access/authorization policies",
+            value = "Get available resources",
+            notes = "Gets the available resources that support access/authorization policies",
             response = Resource.class,
             responseContainer = "List",
             extensions = {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessResource.java
index d310d0c..e45aad4 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/AccessResource.java
@@ -108,7 +108,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Returns the current client's authenticated identity and permissions to top-level resources",
+            value = "Get access status",
+            notes = "Returns the current client's authenticated identity and permissions to top-level resources",
             response = CurrentUser.class,
             authorizations = {@Authorization(value = "Authorization")}
     )
@@ -139,8 +140,9 @@
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/token")
     @ApiOperation(
-            value = "Creates a token for accessing the REST API via auto-detected method of verifying client identity claim credentials",
-            notes = "The token returned is formatted as a JSON Web Token (JWT). The token is base64 encoded and comprised of three parts. The header, " +
+            value = "Create token trying all providers",
+            notes = "Creates a token for accessing the REST API via auto-detected method of verifying client identity claim credentials. " +
+                    "The token returned is formatted as a JSON Web Token (JWT). The token is base64 encoded and comprised of three parts. The header, " +
                     "the body, and the signature. The expiration of the token is a contained within the body. The token can be used in the Authorization header " +
                     "in the format 'Authorization: Bearer <token>'.",
             response = String.class
@@ -204,8 +206,8 @@
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/token/login")
     @ApiOperation(
-            value = "Creates a token for accessing the REST API via username/password",
-            notes = "The user credentials must be passed in standard HTTP Basic Auth format. " +
+            value = "Create token using basic auth",
+            notes = "Creates a token for accessing the REST API via username/password. The user credentials must be passed in standard HTTP Basic Auth format. " +
                     "That is: 'Authorization: Basic <credentials>', where <credentials> is the base64 encoded value of '<username>:<password>'. " +
                     "The token returned is formatted as a JSON Web Token (JWT). The token is base64 encoded and comprised of three parts. The header, " +
                     "the body, and the signature. The expiration of the token is a contained within the body. The token can be used in the Authorization header " +
@@ -262,8 +264,9 @@
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/token/kerberos")
     @ApiOperation(
-            value = "Creates a token for accessing the REST API via Kerberos Service Tickets or SPNEGO Tokens (which includes Kerberos Service Tickets)",
-            notes = "The token returned is formatted as a JSON Web Token (JWT). The token is base64 encoded and comprised of three parts. The header, " +
+            value = "Create token using kerberos",
+            notes = "Creates a token for accessing the REST API via Kerberos Service Tickets or SPNEGO Tokens (which includes Kerberos Service Tickets). " +
+                    "The token returned is formatted as a JSON Web Token (JWT). The token is base64 encoded and comprised of three parts. The header, " +
                     "the body, and the signature. The expiration of the token is a contained within the body. The token can be used in the Authorization header " +
                     "in the format 'Authorization: Bearer <token>'.",
             response = String.class
@@ -317,8 +320,9 @@
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/token/identity-provider")
     @ApiOperation(
-            value = "Creates a token for accessing the REST API via a custom identity provider.",
-            notes = "The user credentials must be passed in a format understood by the custom identity provider, e.g., a third-party auth token in an HTTP header. " +
+            value = "Create token using identity provider",
+            notes = "Creates a token for accessing the REST API via a custom identity provider. " +
+                    "The user credentials must be passed in a format understood by the custom identity provider, e.g., a third-party auth token in an HTTP header. " +
                     "The exact format of the user credentials expected by the custom identity provider can be discovered by 'GET /access/token/identity-provider/usage'. " +
                     "The token returned is formatted as a JSON Web Token (JWT). The token is base64 encoded and comprised of three parts. The header, " +
                     "the body, and the signature. The expiration of the token is a contained within the body. The token can be used in the Authorization header " +
@@ -374,7 +378,8 @@
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/token/identity-provider/usage")
     @ApiOperation(
-            value = "Provides a description of how the currently configured identity provider expects credentials to be passed to POST /access/token/identity-provider",
+            value = "Get identity provider usage",
+            notes = "Provides a description of how the currently configured identity provider expects credentials to be passed to POST /access/token/identity-provider",
             response = String.class
     )
     @ApiResponses({
@@ -416,8 +421,9 @@
     @Produces(MediaType.TEXT_PLAIN)
     @Path("/token/identity-provider/test")
     @ApiOperation(
-            value = "Tests the format of the credentials against this identity provider without preforming authentication on the credentials to validate them.",
-            notes = "The user credentials should be passed in a format understood by the custom identity provider as defined by 'GET /access/token/identity-provider/usage'.",
+            value = "Test identity provider",
+            notes = "Tests the format of the credentials against this identity provider without preforming authentication on the credentials to validate them. " +
+                    "The user credentials should be passed in a format understood by the custom identity provider as defined by 'GET /access/token/identity-provider/usage'.",
             response = String.class
     )
     @ApiResponses({
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java
index 22c5211..adabbfc 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ApplicationResource.java
@@ -45,7 +45,7 @@
     public static final String FORWARDED_PORT_HTTP_HEADER = "X-Forwarded-Port";
     public static final String FORWARDED_CONTEXT_HTTP_HEADER = "X-Forwarded-Context";
 
-    protected static final String NON_GUARANTEED_ENDPOINT = "Note: This endpoint is subject to change as NiFi Registry and its REST API evolve.";
+    public static final String NON_GUARANTEED_ENDPOINT = "\n\nNOTE: This endpoint is subject to change as NiFi Registry and its REST API evolve.";
 
     private static final Logger logger = LoggerFactory.getLogger(ApplicationResource.class);
 
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketBundleResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketBundleResource.java
index cb5ac6e..abfeddd 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketBundleResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketBundleResource.java
@@ -57,8 +57,8 @@
 @Component
 @Path("/buckets/{bucketId}/bundles")
 @Api(
-        value = "bucket_bundles",
-        description = "Create extension bundles scoped to an existing bucket in the registry.",
+        value = "bucket bundles",
+        description = "Create extension bundles scoped to an existing bucket in the registry. ",
         authorizations = { @Authorization("Authorization") }
 )
 public class BucketBundleResource extends AuthorizableApplicationResource {
@@ -87,15 +87,16 @@
     @Consumes(MediaType.MULTIPART_FORM_DATA)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Creates a version of an extension bundle by uploading a binary artifact",
-            notes = "If an extension bundle already exists in the given bucket with the same group id and artifact id " +
+            value = "Create extension bundle version",
+            notes =  "Creates a version of an extension bundle by uploading a binary artifact. " +
+                    "If an extension bundle already exists in the given bucket with the same group id and artifact id " +
                     "as that of the bundle being uploaded, then it will be added as a new version to the existing bundle. " +
                     "If an extension bundle does not already exist in the given bucket with the same group id and artifact id, " +
                     "then a new extension bundle will be created and this version will be added to the new bundle. " +
                     "Client's may optionally supply a SHA-256 in hex format through the multi-part form field 'sha256'. " +
                     "If supplied, then this value will be compared against the SHA-256 computed by the server, and the bundle " +
                     "will be rejected if the values do not match. If not supplied, the bundle will be accepted, but will be marked " +
-                    "to indicate that the client did not supply a SHA-256 during creation.",
+                    "to indicate that the client did not supply a SHA-256 during creation. " + NON_GUARANTEED_ENDPOINT,
             response = BundleVersion.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -146,7 +147,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets all extension bundles in the given bucket",
+            value = "Get extension bundles by bucket",
+            notes = NON_GUARANTEED_ENDPOINT,
             response = Bundle.class,
             responseContainer = "List",
             extensions = {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketFlowResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketFlowResource.java
index ccf41d9..ecf1b7a 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketFlowResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketFlowResource.java
@@ -61,7 +61,7 @@
 @Component
 @Path("/buckets/{bucketId}/flows")
 @Api(
-        value = "bucket_flows",
+        value = "bucket flows",
         description = "Create flows scoped to an existing bucket in the registry.",
         authorizations = { @Authorization("Authorization") }
 )
@@ -90,8 +90,8 @@
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Creates a flow",
-            notes = "The flow id is created by the server and populated in the returned entity.",
+            value = "Create flow",
+            notes = "Creates a flow in the given bucket. The flow id is created by the server and populated in the returned entity.",
             response = VersionedFlow.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -127,7 +127,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets all flows in the given bucket",
+            value = "Get bucket flows",
+            notes = "Retrieves all flows in the given bucket.",
             response = VersionedFlow.class,
             responseContainer = "List",
             extensions = {
@@ -161,7 +162,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets a flow",
+            value = "Get bucket flow",
+            notes = "Retrieves the flow with the given id in the given bucket.",
             response = VersionedFlow.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -197,7 +199,8 @@
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Updates a flow",
+            value = "Update bucket flow",
+            notes = "Updates the flow with the given id in the given bucket.",
             response = VersionedFlow.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -240,7 +243,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Deletes a flow, including all saved versions of that flow.",
+            value = "Delete bucket flow",
+            notes = "Deletes a flow, including all saved versions of that flow.",
             response = VersionedFlow.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -272,9 +276,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Creates the next version of a flow",
-            notes = "The version number of the object being created must be the next available version integer. " +
-                    "Flow versions are immutable after they are created.",
+            value = "Create flow version",
+            notes = "Creates the next version of a flow. The version number of the object being created must be the " +
+                    "next available version integer. Flow versions are immutable after they are created.",
             response = VersionedFlowSnapshot.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -325,7 +329,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets summary information for all versions of a flow. Versions are ordered newest->oldest.",
+            value = "Get bucket flow versions",
+            notes = "Gets summary information for all versions of a flow. Versions are ordered newest->oldest.",
             response = VersionedFlowSnapshotMetadata.class,
             responseContainer = "List",
             extensions = {
@@ -362,7 +367,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Get the latest version of a flow",
+            value = "Get latest bucket flow version content",
+            notes = "Gets the latest version of a flow, including the metadata and content of the flow.",
             response = VersionedFlowSnapshot.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -397,7 +403,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Get the metadata for the latest version of a flow",
+            value = "Get latest bucket flow version metadata",
+            notes = "Gets the metadata for the latest version of a flow.",
             response = VersionedFlowSnapshotMetadata.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -431,7 +438,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the given version of a flow",
+            value = "Get bucket flow version",
+            notes = "Gets the given version of a flow, including the metadata and content for the version.",
             response = VersionedFlowSnapshot.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -468,7 +476,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Returns a list of differences between 2 versions of a flow",
+            value = "Get bucket flow diff",
+            notes = "Computes the differences between two given versions of a flow.",
             response = VersionedFlowDifference.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketResource.java
index e7c0df4..34387e8 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BucketResource.java
@@ -97,7 +97,7 @@
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Creates a bucket",
+            value = "Create bucket",
             response = Bucket.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -126,7 +126,7 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets all buckets",
+            value = "Get all buckets",
             notes = "The returned list will include only buckets for which the user is authorized." +
                     "If the user is not authorized for any buckets, this returns an empty list.",
             response = Bucket.class,
@@ -162,7 +162,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets a bucket",
+            value = "Get bucket",
+            notes = "Gets the bucket with the given id.",
             response = Bucket.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -192,7 +193,8 @@
     @Consumes(MediaType.APPLICATION_JSON)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Updates a bucket",
+            value = "Update bucket",
+            notes = "Updates the bucket with the given id.",
             response = Bucket.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -242,7 +244,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Deletes a bucket along with all objects stored in the bucket",
+            value = "Delete bucket",
+            notes = "Deletes the bucket with the given id, along with all objects stored in the bucket",
             response = Bucket.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -276,7 +279,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Retrieves field names for searching or sorting on buckets.",
+            value = "Get bucket fields",
+            notes = "Retrieves bucket field names for searching or sorting on buckets.",
             response = Fields.class
     )
     public Response getAvailableBucketFields() {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BundleResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BundleResource.java
index 9b891ab..48532fb 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BundleResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/BundleResource.java
@@ -61,7 +61,7 @@
 @Path("/bundles")
 @Api(
         value = "bundles",
-        description = "Gets metadata about extension bundles and their versions.",
+        description = "Gets metadata about extension bundles and their versions. ",
         authorizations = { @Authorization("Authorization") }
 )
 public class BundleResource extends AuthorizableApplicationResource {
@@ -89,9 +89,10 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Get extension bundles across all authorized buckets",
-            notes = "The returned items will include only items from buckets for which the user is authorized. " +
-                    "If the user is not authorized to any buckets, an empty list will be returned.",
+            value = "Get all bundles",
+            notes = "Gets the metadata for all bundles across all authorized buckets with optional filters applied. " +
+                    "The returned results will include only items from buckets for which the user is authorized. " +
+                    "If the user is not authorized to any buckets, an empty list will be returned. " + NON_GUARANTEED_ENDPOINT,
             response = Bundle.class,
             responseContainer = "List"
     )
@@ -133,7 +134,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the metadata about an extension bundle",
+            value = "Get bundle",
+            notes = "Gets the metadata about an extension bundle. " + NON_GUARANTEED_ENDPOINT,
             nickname = "globalGetExtensionBundle",
             response = Bundle.class,
             extensions = {
@@ -165,7 +167,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Deletes the given extension bundle and all of it's versions",
+            value = "Delete bundle",
+            notes = "Deletes the given extension bundle and all of it's versions. " + NON_GUARANTEED_ENDPOINT,
             nickname = "globalDeleteExtensionBundle",
             response = Bundle.class,
             extensions = {
@@ -203,9 +206,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Get extension bundles versions across all authorized buckets",
-            notes = "The returned items will include only items from buckets for which the user is authorized. " +
-                    "If the user is not authorized to any buckets, an empty list will be returned.",
+            value = "Get all bundle versions",
+            notes = "Gets the metadata about extension bundle versions across all authorized buckets with optional filters applied. " +
+                    "If the user is not authorized to any buckets, an empty list will be returned. " + NON_GUARANTEED_ENDPOINT,
             response = BundleVersionMetadata.class,
             responseContainer = "List"
     )
@@ -243,7 +246,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the metadata about the versions of an extension bundle",
+            value = "Get bundle versions",
+            notes = "Gets the metadata for the versions of the given extension bundle. " + NON_GUARANTEED_ENDPOINT,
             nickname = "globalGetBundleVersions",
             response = BundleVersionMetadata.class,
             responseContainer = "List",
@@ -276,7 +280,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the descriptor for the specified version of the extension bundle",
+            value = "Get bundle version",
+            notes = "Gets the descriptor for the given version of the given extension bundle. " + NON_GUARANTEED_ENDPOINT,
             nickname = "globalGetBundleVersion",
             response = BundleVersion.class,
             extensions = {
@@ -311,7 +316,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_OCTET_STREAM)
     @ApiOperation(
-            value = "Gets the binary content for the specified version of the extension bundle",
+            value = "Get bundle version content",
+            notes = "Gets the binary content for the given version of the given extension bundle. " + NON_GUARANTEED_ENDPOINT,
             nickname = "globalGetBundleVersionContent",
             response = byte[].class,
             extensions = {
@@ -349,7 +355,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Deletes the given extension bundle version",
+            value = "Delete bundle version",
+            notes = "Deletes the given extension bundle version and it's associated binary content. " + NON_GUARANTEED_ENDPOINT,
             nickname = "globalDeleteBundleVersion",
             response = BundleVersion.class,
             extensions = {
@@ -387,7 +394,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the metadata about the extensions in the given extension bundle version",
+            value = "Get bundle version extensions",
+            notes = "Gets the metadata about the extensions in the given extension bundle version. " + NON_GUARANTEED_ENDPOINT,
             nickname = "globalGetBundleVersionExtensions",
             response = ExtensionMetadata.class,
             responseContainer = "List",
@@ -424,8 +432,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the metadata about the extensions in the given extension bundle version",
-            nickname = "globalGetBundleVersionExtensions",
+            value = "Get bundle version extension",
+            notes = "Gets the metadata about the extension with the given name in the given extension bundle version. " + NON_GUARANTEED_ENDPOINT,
+            nickname = "globalGetBundleVersionExtension",
             response = org.apache.nifi.registry.extension.component.manifest.Extension.class,
             responseContainer = "List",
             extensions = {
@@ -464,7 +473,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.TEXT_HTML)
     @ApiOperation(
-            value = "Gets the documentation for the given extension in the given extension bundle version",
+            value = "Get bundle version extension docs",
+            notes = "Gets the documentation for the given extension in the given extension bundle version. " + NON_GUARANTEED_ENDPOINT,
             response = String.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -501,7 +511,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.TEXT_HTML)
     @ApiOperation(
-            value = "Gets the additional details documentation for the given extension in the given extension bundle version",
+            value = "Get bundle version extension docs details",
+            notes = "Gets the additional details documentation for the given extension in the given extension bundle version. " + NON_GUARANTEED_ENDPOINT,
             response = String.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ConfigResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ConfigResource.java
index a600a11..48f3518 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ConfigResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ConfigResource.java
@@ -61,7 +61,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets NiFi Registry configurations",
+            value = "Get configration",
+            notes = "Gets the NiFi Registry configurations.",
             response = RegistryConfiguration.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionRepoResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionRepoResource.java
index a7d6d04..d2dbeb8 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionRepoResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionRepoResource.java
@@ -62,8 +62,8 @@
 @Component
 @Path("/extension-repository")
 @Api(
-        value = "extension_repository",
-        description = "Interact with extension bundles via the hierarchy of bucket/group/artifact/version.",
+        value = "extension repository",
+        description = "Interact with extension bundles via the hierarchy of bucket/group/artifact/version. ",
         authorizations = { @Authorization("Authorization") }
 )
 public class ExtensionRepoResource extends AuthorizableApplicationResource {
@@ -87,7 +87,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the names of the buckets the current user is authorized for in order to browse the repo by bucket",
+            value = "Get extension repo buckets",
+            notes = "Gets the names of the buckets the current user is authorized for in order to browse the repo by bucket. " + NON_GUARANTEED_ENDPOINT,
             response = ExtensionRepoBucket.class,
             responseContainer = "List"
     )
@@ -115,7 +116,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the groups in the extension repository in the bucket with the given name",
+            value = "Get extension repo groups",
+            notes = "Gets the groups in the extension repository in the given bucket. " + NON_GUARANTEED_ENDPOINT,
             response = ExtensionRepoGroup.class,
             responseContainer = "List",
             extensions = {
@@ -148,7 +150,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the artifacts in the extension repository with the given group in the bucket with the given name",
+            value = "Get extension repo artifacts",
+            notes = "Gets the artifacts in the extension repository in the given bucket and group. " + NON_GUARANTEED_ENDPOINT,
             response = ExtensionRepoArtifact.class,
             responseContainer = "List",
             extensions = {
@@ -184,7 +187,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the versions of the artifact in the extension repository specified by the given bucket, group, artifact, and version",
+            value = "Get extension repo versions",
+            notes = "Gets the versions in the extension repository for the given bucket, group, and artifact. " + NON_GUARANTEED_ENDPOINT,
             response = ExtensionRepoVersionSummary.class,
             responseContainer = "List",
             extensions = {
@@ -223,7 +227,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the information about the version specified by the given bucket, group, artifact, and version",
+            value = "Get extension repo version",
+            notes = "Gets information about the version in the given bucket, group, and artifact. " + NON_GUARANTEED_ENDPOINT,
             response = ExtensionRepoVersion.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -294,7 +299,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the information about the extensions in the extension bundle specified by the given bucket, group, artifact, and version",
+            value = "Get extension repo extensions",
+            notes = "Gets information about the extensions in the given bucket, group, artifact, and version. " + NON_GUARANTEED_ENDPOINT,
             response = ExtensionMetadata.class,
             responseContainer = "List",
             extensions = {
@@ -341,7 +347,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the information about the extension in the extension bundle specified by the given bucket, group, artifact, and version",
+            value = "Get extension repo extension",
+            notes = "Gets information about the extension with the given name in " +
+                    "the given bucket, group, artifact, and version. " + NON_GUARANTEED_ENDPOINT,
             response = org.apache.nifi.registry.extension.component.manifest.Extension.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -385,7 +393,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.TEXT_HTML)
     @ApiOperation(
-            value = "Gets the documentation for the given extension",
+            value = "Get extension repo extension docs",
+            notes = "Gets the documentation for the extension with the given name in " +
+                    "the given bucket, group, artifact, and version. " + NON_GUARANTEED_ENDPOINT,
             response = String.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -429,7 +439,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.TEXT_HTML)
     @ApiOperation(
-            value = "Gets the additional details documentation for the given extension",
+            value = "Get extension repo extension details",
+            notes = "Gets the additional details documentation for the extension with the given name in " +
+                    "the given bucket, group, artifact, and version. " + NON_GUARANTEED_ENDPOINT,
             response = String.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -473,7 +485,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_OCTET_STREAM)
     @ApiOperation(
-            value = "Gets the binary content of the extension bundle specified by the given bucket, group, artifact, and version",
+            value = "Get extension repo version content",
+            notes = "Gets the binary content of the bundle with the given bucket, group, artifact, and version. " + NON_GUARANTEED_ENDPOINT,
             response = byte[].class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -517,7 +530,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.TEXT_PLAIN)
     @ApiOperation(
-            value = "Gets the hex representation of the SHA-256 digest for the binary content of the version of the extension bundle",
+            value = "Get extension repo version checksum",
+            notes = "Gets the hex representation of the SHA-256 digest for the binary content of the bundle " +
+                    "with the given bucket, group, artifact, and version." + NON_GUARANTEED_ENDPOINT,
             response = String.class,
             extensions = {
                     @Extension(name = "access-policy", properties = {
@@ -558,9 +573,10 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.TEXT_PLAIN)
     @ApiOperation(
-            value = "Gets the hex representation of the SHA-256 digest for the binary content of the version of the extension bundle. Since the " +
-                    "same group-artifact-version can exist in multiple buckets, this will return the checksum of the first one returned. This will be " +
-                    "consistent since the checksum must be the same when existing in multiple buckets.",
+            value = "Get global extension repo version checksum",
+            notes = "Gets the hex representation of the SHA-256 digest for the binary content with the given bucket, group, artifact, and version. " +
+                    "Since the same group-artifact-version can exist in multiple buckets, this will return the checksum of the first one returned. " +
+                    "This will be consistent since the checksum must be the same when existing in multiple buckets. " + NON_GUARANTEED_ENDPOINT,
             response = String.class
     )
     @ApiResponses({
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionResource.java
index 9ca344a..8f95453 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ExtensionResource.java
@@ -53,7 +53,7 @@
 @Path("/extensions")
 @Api(
         value = "extensions",
-        description = "Find and retrieve extensions.",
+        description = "Find and retrieve extensions. ",
         authorizations = { @Authorization("Authorization") }
 )
 public class ExtensionResource extends AuthorizableApplicationResource {
@@ -74,9 +74,11 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets all extensions that match the filter params and are part of bundles located in buckets the current user is authorized for.",
-            response = ExtensionMetadataContainer.class,
-            responseContainer = "List"
+            value = "Get all extensions",
+            notes = "Gets the metadata for all extensions that match the filter params and are part of bundles located in buckets the " +
+                    "current user is authorized for. If the user is not authorized to any buckets, an empty result set will be returned." +
+                    NON_GUARANTEED_ENDPOINT,
+            response = ExtensionMetadataContainer.class
     )
     @ApiResponses({
             @ApiResponse(code = 400, message = HttpStatusMessages.MESSAGE_400),
@@ -124,9 +126,11 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets all extensions that provide the specified API and are part of bundles located in buckets the current user is authorized for.",
-            response = ExtensionMetadataContainer.class,
-            responseContainer = "List"
+            value = "Get extensions providing service API",
+            notes = "Gets the metadata for extensions that provide the specified API and are part of bundles located in buckets the " +
+                    "current user is authorized for. If the user is not authorized to any buckets, an empty result set will be returned." +
+                    NON_GUARANTEED_ENDPOINT,
+            response = ExtensionMetadataContainer.class
     )
     @ApiResponses({
             @ApiResponse(code = 400, message = HttpStatusMessages.MESSAGE_400),
@@ -176,7 +180,9 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets all the extension tags known to this NiFi Registry instance.",
+            value = "Get extension tags",
+            notes = "Gets all the extension tags known to this NiFi Registry instance, along with the " +
+                    "number of extensions that have the given tag." + NON_GUARANTEED_ENDPOINT,
             response = TagCount.class,
             responseContainer = "List"
     )
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/FlowResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/FlowResource.java
index 9a1fe55..ec42130 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/FlowResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/FlowResource.java
@@ -79,7 +79,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Retrieves the available field names that can be used for searching or sorting on flows.",
+            value = "Get flow fields",
+            notes = "Retrieves the flow field names that can be used for searching or sorting on flows.",
             response = Fields.class
     )
     public Response getAvailableFlowFields() {
@@ -93,7 +94,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets a flow",
+            value = "Get flow",
+            notes = "Gets a flow by id.",
             nickname = "globalGetFlow",
             response = VersionedFlow.class,
             extensions = {
@@ -133,7 +135,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets summary information for all versions of a flow. Versions are ordered newest->oldest.",
+            value = "Get flow versions",
+            notes = "Gets summary information for all versions of a given flow. Versions are ordered newest->oldest.",
             nickname = "globalGetFlowVersions",
             response = VersionedFlowSnapshotMetadata.class,
             responseContainer = "List",
@@ -175,7 +178,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets the given version of a flow",
+            value = "Get flow version",
+            notes = "Gets the given version of a flow, including metadata and flow content.",
             nickname = "globalGetFlowVersion",
             response = VersionedFlowSnapshot.class,
             extensions = {
@@ -217,7 +221,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Get the latest version of a flow",
+            value = "Get latest flow version",
+            notes = "Gets the latest version of a flow, including metadata and flow content.",
             nickname = "globalGetLatestFlowVersion",
             response = VersionedFlowSnapshot.class,
             extensions = {
@@ -256,7 +261,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Get the metadata for the latest version of a flow",
+            value = "Get latest flow version metadata",
+            notes = "Gets the metadata for the latest version of a flow.",
             nickname = "globalGetLatestFlowVersionMetadata",
             response = VersionedFlowSnapshotMetadata.class,
             extensions = {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ItemResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ItemResource.java
index b137569..56ee286 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ItemResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/ItemResource.java
@@ -87,8 +87,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Get items across all buckets",
-            notes = "The returned items will include only items from buckets for which the user is authorized. " +
+            value = "Get all items",
+            notes = "Get items across all buckets. The returned items will include only items from buckets for which the user is authorized. " +
                     "If the user is not authorized to any buckets, an empty list will be returned.",
             response = BucketItem.class,
             responseContainer = "List"
@@ -125,7 +125,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Gets items of the given bucket",
+            value = "Get bucket items",
+            notes = "Gets the items located in the given bucket.",
             response = BucketItem.class,
             responseContainer = "List",
             nickname = "getItemsInBucket",
@@ -159,7 +160,8 @@
     @Consumes(MediaType.WILDCARD)
     @Produces(MediaType.APPLICATION_JSON)
     @ApiOperation(
-            value = "Retrieves the available field names for searching or sorting on bucket items.",
+            value = "Get item fields",
+            notes = "Retrieves the item field names for searching or sorting on bucket items.",
             response = Fields.class
     )
     public Response getAvailableBucketItemFields() {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/TenantResource.java b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/TenantResource.java
index 11ed1e1..d9d3521 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/TenantResource.java
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/java/org/apache/nifi/registry/web/api/TenantResource.java
@@ -92,7 +92,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("users")
     @ApiOperation(
-            value = "Creates a user",
+            value = "Create user",
             notes = NON_GUARANTEED_ENDPOINT,
             response = User.class,
             extensions = {
@@ -144,7 +144,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("users")
     @ApiOperation(
-            value = "Gets all users",
+            value = "Get all users",
             notes = NON_GUARANTEED_ENDPOINT,
             response = User.class,
             responseContainer = "List",
@@ -182,7 +182,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("users/{id}")
     @ApiOperation(
-            value = "Gets a user",
+            value = "Get user",
             notes = NON_GUARANTEED_ENDPOINT,
             response = User.class,
             extensions = {
@@ -225,7 +225,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("users/{id}")
     @ApiOperation(
-            value = "Updates a user",
+            value = "Update user",
             notes = NON_GUARANTEED_ENDPOINT,
             response = User.class,
             extensions = {
@@ -283,7 +283,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("users/{id}")
     @ApiOperation(
-            value = "Deletes a user",
+            value = "Delete user",
             notes = NON_GUARANTEED_ENDPOINT,
             response = User.class,
             extensions = {
@@ -334,7 +334,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("user-groups")
     @ApiOperation(
-            value = "Creates a user group",
+            value = "Create user group",
             notes = NON_GUARANTEED_ENDPOINT,
             response = UserGroup.class,
             extensions = {
@@ -385,7 +385,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("user-groups")
     @ApiOperation(
-            value = "Gets all user groups",
+            value = "Get user groups",
             notes = NON_GUARANTEED_ENDPOINT,
             response = UserGroup.class,
             responseContainer = "List",
@@ -420,7 +420,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("user-groups/{id}")
     @ApiOperation(
-            value = "Gets a user group",
+            value = "Get user group",
             notes = NON_GUARANTEED_ENDPOINT,
             response = UserGroup.class,
             extensions = {
@@ -464,7 +464,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("user-groups/{id}")
     @ApiOperation(
-            value = "Updates a user group",
+            value = "Update user group",
             notes = NON_GUARANTEED_ENDPOINT,
             response = UserGroup.class,
             extensions = {
@@ -523,7 +523,7 @@
     @Produces(MediaType.APPLICATION_JSON)
     @Path("user-groups/{id}")
     @ApiOperation(
-            value = "Deletes a user group",
+            value = "Delete user group",
             notes = NON_GUARANTEED_ENDPOINT,
             response = UserGroup.class,
             extensions = {
diff --git a/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/index.html.hbs b/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/index.html.hbs
index 97a8fc5..aca97fe 100644
--- a/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/index.html.hbs
+++ b/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/index.html.hbs
@@ -441,6 +441,10 @@
                 // organize the endpoints
                 organizeEndpoints('/buckets', $('#bucket-endpoints'));
                 organizeEndpoints('/items', $('#item-endpoints'));
+                organizeEndpoints('/flows', $('#flow-endpoints'));
+                organizeEndpoints('/bundles', $('#bundle-endpoints'));
+                organizeEndpoints('/extensions', $('#extension-endpoints'));
+                organizeEndpoints('/extension-repository', $('#extension-repository-endpoints'));
                 organizeEndpoints('/tenants', $('#tenant-endpoints'));
                 organizeEndpoints('/policies', $('#policy-endpoints'));
                 organizeEndpoints('/access', $('#access-endpoints'));
@@ -479,6 +483,38 @@
         </div>
         <div class="section">
             <div class="section-header">
+                <div class="title link">Flows</div>
+                <div class="sub-title section-description">Flow endpoints</div>
+                <div class="clear"></div>
+            </div>
+            <div id="flow-endpoints" class="section-endpoints hidden"></div>
+        </div>
+        <div class="section">
+            <div class="section-header">
+                <div class="title link">Bundles</div>
+                <div class="sub-title section-description">Bundle endpoints</div>
+                <div class="clear"></div>
+            </div>
+            <div id="bundle-endpoints" class="section-endpoints hidden"></div>
+        </div>
+        <div class="section">
+            <div class="section-header">
+                <div class="title link">Extensions</div>
+                <div class="sub-title section-description">Extension endpoints</div>
+                <div class="clear"></div>
+            </div>
+            <div id="extension-endpoints" class="section-endpoints hidden"></div>
+        </div>
+        <div class="section">
+            <div class="section-header">
+                <div class="title link">Extension Repository</div>
+                <div class="sub-title section-description">Extension Repository endpoints</div>
+                <div class="clear"></div>
+            </div>
+            <div id="extension-repository-endpoints" class="section-endpoints hidden"></div>
+        </div>
+        <div class="section">
+            <div class="section-header">
                 <div class="title link">Tenants</div>
                 <div class="sub-title section-description">Tenant endpoints</div>
                 <div class="clear"></div>
diff --git a/nifi-registry-core/nifi-registry-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp b/nifi-registry-core/nifi-registry-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp
index 63a7886..402e841 100644
--- a/nifi-registry-core/nifi-registry-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp
+++ b/nifi-registry-core/nifi-registry-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp
@@ -68,7 +68,7 @@
                         <div class="header">Developer</div>
                         <div id="developer-links" class="component-links">
                             <ul>
-                                <li class="component-item"><a class="document-link rest-api" href="rest-api/index.html" target="component-usage">Rest Api</a></li>
+                                <li class="component-item"><a class="document-link rest-api" href="rest-api/rest-api.html" target="component-usage">Rest Api</a></li>
                             </ul>
                             <span class="no-matching no-components hidden">No matching developer guides</span>
                         </div>
diff --git a/pom.xml b/pom.xml
index 7c3eddf..b26438a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -139,6 +139,17 @@
         </repository>
     </repositories>
 
+    <pluginRepositories>
+        <pluginRepository>
+            <id>jcenter-releases</id>
+            <name>jcenter</name>
+            <url>http://jcenter.bintray.com</url>
+            <snapshots>
+                <enabled>false</enabled>
+            </snapshots>
+        </pluginRepository>
+    </pluginRepositories>
+
 
     <dependencyManagement>
         <dependencies>