You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by bb...@apache.org on 2022/01/26 14:03:43 UTC
[nifi] branch main updated: NIFI-9630 Migrated Registry REST API docs to swagger-codegen (#5715)
This is an automated email from the ASF dual-hosted git repository.
bbende pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new 5022a5e NIFI-9630 Migrated Registry REST API docs to swagger-codegen (#5715)
5022a5e is described below
commit 5022a5ee07e61614e585b3fd86c410ac9e04e750
Author: exceptionfactory <ex...@apache.org>
AuthorDate: Wed Jan 26 08:03:26 2022 -0600
NIFI-9630 Migrated Registry REST API docs to swagger-codegen (#5715)
- Added swagger-codegen-maven-plugin configuration
- Removed swagger2markup-maven-plugin and asciidoctor-maven-plugin configurations
- Removed generation of legacy REST API documentation and associated templates
---
.../nifi-registry-core/nifi-registry-docs/pom.xml | 16 +-
.../src/main/asciidoc/user-guide.adoc | 2 +-
.../nifi-registry-web-api/pom.xml | 80 +--
.../src/main/resources/templates/endpoint.hbs | 61 ---
.../src/main/resources/templates/example.hbs | 18 -
.../src/main/resources/templates/index.html.hbs | 550 ---------------------
.../src/main/resources/templates/operation.hbs | 110 -----
.../main/resources/templates/style.css.mustache | 138 ++++++
.../src/main/resources/templates/type.hbs | 57 ---
.../src/main/webapp/WEB-INF/jsp/documentation.jsp | 2 +-
10 files changed, 167 insertions(+), 867 deletions(-)
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-docs/pom.xml b/nifi-registry/nifi-registry-core/nifi-registry-docs/pom.xml
index c507811..2dfdc24 100644
--- a/nifi-registry/nifi-registry-core/nifi-registry-docs/pom.xml
+++ b/nifi-registry/nifi-registry-core/nifi-registry-docs/pom.xml
@@ -85,7 +85,7 @@
</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 -->
+ <!-- Unpack rest-api/index.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>
@@ -100,15 +100,15 @@
<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>
+ <outputDirectory>${project.build.directory}/nifi-registry-web-api</outputDirectory>
+ <includes>docs/rest-api/index.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
+ <!-- Copy rest-api/index.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>
@@ -125,10 +125,10 @@
<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="**" />
+ <echo>Copy unpacked rest-api/index.html to generated-docs dir</echo>
+ <copy tofile="${project.build.directory}/generated-docs/rest-api.html">
+ <fileset dir="${project.build.directory}/nifi-registry-web-api/docs/rest-api">
+ <include name="index.html" />
</fileset>
</copy>
</sequential>
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-docs/src/main/asciidoc/user-guide.adoc b/nifi-registry/nifi-registry-core/nifi-registry-docs/src/main/asciidoc/user-guide.adoc
index 67fe5a4..b501e54 100644
--- a/nifi-registry/nifi-registry-core/nifi-registry-docs/src/main/asciidoc/user-guide.adoc
+++ b/nifi-registry/nifi-registry-core/nifi-registry-docs/src/main/asciidoc/user-guide.adoc
@@ -483,4 +483,4 @@ An example of using `curl` to download `my-processors-1.0.0.nar` by id and versi
=== Additional Actions
-For additional actions that can be performed related to bundles, please consult the link:rest-api.html[REST API documentation].
+For additional actions that can be performed related to bundles, please consult the link:../rest-api/index.html[REST API documentation].
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/pom.xml b/nifi-registry/nifi-registry-core/nifi-registry-web-api/pom.xml
index e0ba88f..d6b032e 100644
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-api/pom.xml
+++ b/nifi-registry/nifi-registry-core/nifi-registry-web-api/pom.xml
@@ -94,8 +94,6 @@
<jsonPath>${swagger.source.dir}/security-definitions.json</jsonPath>
</securityDefinition>
</securityDefinitions>
- <templatePath>classpath:/templates/index.html.hbs</templatePath>
- <outputPath>${docs.dir}/rest-api/index.html</outputPath>
<swaggerDirectory>${swagger.generated.dir}</swaggerDirectory>
</apiSource>
</apiSources>
@@ -124,6 +122,25 @@
</executions>
</plugin>
<plugin>
+ <groupId>io.swagger.codegen.v3</groupId>
+ <artifactId>swagger-codegen-maven-plugin</artifactId>
+ <version>3.0.31</version>
+ <executions>
+ <execution>
+ <phase>compile</phase>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <configuration>
+ <inputSpec>${swagger.generated.dir}/swagger.json</inputSpec>
+ <output>${docs.dir}/rest-api</output>
+ <language>html</language>
+ <templateDirectory>src/main/resources/templates</templateDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
<groupId>com.googlecode.maven-download-plugin</groupId>
<artifactId>download-maven-plugin</artifactId>
<version>1.2.1</version>
@@ -188,65 +205,6 @@
</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.8</version>
- <configuration>
- <sourceDirectory>${asciidoc.source.dir}</sourceDirectory>
- <sourceDocumentName>rest-api.adoc</sourceDocumentName>
- <attributes>
- <doctype>article</doctype>
- <toc />
- <toclevels>3</toclevels>
- <numbered />
- <hardbreaks />
- <sectlinks />
- <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>
<plugin>
<groupId>org.apache.rat</groupId>
<artifactId>apache-rat-plugin</artifactId>
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/endpoint.hbs b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/endpoint.hbs
deleted file mode 100644
index 1394136..0000000
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/endpoint.hbs
+++ /dev/null
@@ -1,61 +0,0 @@
-{{!--
- 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.
---}}
-<div class="endpoints">
- <span class="path hidden">{{@key}}</span>
- {{#post}}
- <div class="endpoint post">
- <div class="operation-handle">
- <div class="method">POST</div>
- <div class="path mono"></div>
- <div class="summary" title="{{summary}}">{{summary}}</div>
- <div class="clear"></div>
- </div>
- {{> operation}}
- </div>
- {{/post}}
- {{#get}}
- <div class="endpoint get">
- <div class="operation-handle">
- <div class="method">GET</div>
- <div class="path mono"></div>
- <div class="summary" title="{{summary}}">{{summary}}</div>
- <div class="clear"></div>
- </div>
- {{> operation}}
- </div>
- {{/get}}
- {{#put}}
- <div class="endpoint put">
- <div class="operation-handle">
- <div class="method">PUT</div>
- <div class="path mono"></div>
- <div class="summary" title="{{summary}}">{{summary}}</div>
- <div class="clear"></div>
- </div>
- {{> operation}}
- </div>
- {{/put}}
- {{#delete}}
- <div class="endpoint delete">
- <div class="operation-handle">
- <div class="method">DELETE</div>
- <div class="path mono"></div>
- <div class="summary" title="{{summary}}">{{summary}}</div>
- <div class="clear"></div>
- </div>
- {{> operation}}
- </div>
- {{/delete}}
-</div>
\ No newline at end of file
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/example.hbs b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/example.hbs
deleted file mode 100644
index 26a4283..0000000
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/example.hbs
+++ /dev/null
@@ -1,18 +0,0 @@
-{{!--
- 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.
---}}{{!-- formatting here matters... in whitespace: pre. this is not comprehensive but sufficent for our examples --}}
-{{#each properties}} {{#ifeq type "string"}}"{{@key}}": "value"{{/ifeq}}{{#ifeq type "boolean"}}"{{@key}}": true{{/ifeq}}{{#ifeq type "integer"}}"{{@key}}": 0{{/ifeq}}{{#ifeq type "number"}}"{{@key}}": 0.0{{/ifeq}}{{#if $ref}}"{{@key}}": <span class="nested collapsed"><span class="nested-id hidden">{{basename $ref}}</span><span class="nested-example"><span class="open-object">{…}</span></span></span>{{/if}}{{#ifeq type "array"}}"{{@key}}": [{{#if items.$ref}}<span clas [...]
- "name": {{#if additionalProperties.$ref}}<span class="nested collapsed"><span class="nested-id hidden">{{basename additionalProperties.$ref}}</span><span class="nested-example"><span class="open-object">{…}</span></span></span>{{else}}{{#ifeq additionalProperties.type "integer"}}0{{else}}"value"{{/ifeq}}{{/if}}
- }</span>{{/ifeq}}<span class="comma">,</span>
-{{/each}}
\ No newline at end of file
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/index.html.hbs b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/index.html.hbs
deleted file mode 100644
index aca97fe..0000000
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/index.html.hbs
+++ /dev/null
@@ -1,550 +0,0 @@
-<!DOCTYPE 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.
--->
-<html>
- <head>
- <title>{{info.title}}-{{info.version}}</title>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
- <link rel="shortcut icon" href="images/nifi16.ico"/>
- <script type="text/javascript" src="../../nifi/assets/jquery/dist/jquery.min.js"></script>
- <script type="text/javascript">
- if (typeof window.jQuery === 'undefined') {
- document.write(unescape('%3Cscript src="https://code.jquery.com/jquery-3.1.1.min.js" type="text/javascript" %3E%3C/script%3E'));
- }
- </script>
- <style>
- @import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic|Noto+Serif:400,400italic,700,700italic|Droid+Sans+Mono:400";
-
- html {
- overflow-y: scroll;
- }
-
- html, html a {
- -webkit-font-smoothing: antialiased;
- text-shadow: 1px 1px 1px rgba(0,0,0,0.004);
- }
-
- body {
- width: 62.5em;
- margin: 0 auto;
- display: block;
- font-family: "Open Sans", "DejaVu Sans", sans-serif;
- }
-
- div.header {
- margin-top: 10px;
- }
-
- img.logo {
- float: left;
- margin-right: 10px;
- }
-
- div.header > div.title {
- font-size: 30px;
- height: 50px;
- line-height: 50px;
- }
-
- .sub-title {
- font-style: italic;
- color: #aaa;
- }
-
- div.overview {
- margin-top: 10px;
- margin-bottom: 15px;
- }
-
- div.endpoint {
- margin-bottom: 10px;
- }
-
- /* get */
-
- div.endpoint.get {
- border: 1px solid #174961;
- }
-
- div.get div.operation-handle {
- background-color: rgba(23, 73, 97, .15);
- }
-
- div.get div.method {
- background-color: #174961;
- }
-
- div.get div.operation {
- border-top: 1px solid #174961;
- }
-
- /* post */
-
- div.endpoint.post {
- border: 1px solid #7298AC;
- }
-
- div.post div.operation-handle {
- background-color: rgba(114, 152, 172, .15);
- }
-
- div.post div.method {
- background-color: #7298AC;
- }
-
- div.post div.operation {
- border-top: 1px solid #7298AC;
- }
-
- /* put */
-
- div.endpoint.put {
- border: 1px solid #063046;
- }
-
- div.put div.operation-handle {
- background-color: rgba(6, 48, 70, .15);
- }
-
- div.put div.method {
- background-color: #063046;
- }
-
- div.put div.operation {
- border-top: 1px solid #063046;
- }
-
- /* delete */
-
- div.endpoint.delete {
- border: 1px solid #47758E;
- }
-
- div.delete div.operation-handle {
- background-color: rgba(71, 117, 142, .15);
- }
-
- div.delete div.method {
- background-color: #47758E;
- }
-
- div.delete div.operation {
- border-top: 1px solid #47758E;
- }
-
- /* operations */
-
- div.operation-handle {
- cursor: pointer;
- padding-right: 5px;
- height: 22px;
- }
-
- div.method {
- float: left;
- width: 75px;
- color: #fff;
- text-align: center;
- background-color: #7098ad;
- margin-right: 10px;
- font-weight: bold;
- }
-
- div.endpoint div.path {
- float: left;
- line-height: 22px;
- overflow: hidden;
- text-overflow: ellipsis;
- }
-
- div.summary {
- float: right;
- font-size: 12px;
- line-height: 22px;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- width: 40%;
- text-align: right;
- }
-
- div.operation {
- padding: 5px;
- font-size: 12px;
- }
-
- div.operation > div.title {
- font-weight: bold;
- color: #000;
- }
-
- div.operation > table {
- margin-left: 5px;
- margin-right: 5px;
- }
-
- div.operation div.details {
- margin-left: 5px;
- margin-bottom: 5px;
- color: #333;
- }
-
- div.operation div.description {
- margin-bottom: 10px;
- }
-
- div.mediatype {
- line-height: 16px;
- }
-
- div.mediatype > div.title {
- float: left;
- width: 70px;
- }
-
- div.mediatype div.title {
- float: left;
- }
-
- div.type {
- position: fixed;
- width: 800px;
- height: 500px;
- left: 50%;
- top: 50%;
- margin-left: -400px;
- margin-top: -250px;
- border: 3px solid #365C6A;
- box-shadow: 4px 4px 6px rgba(0, 0, 0, 0.9);
- padding: 10px;
- background-color: #eee;
- font-size: 12px;
- }
-
- div.type-container {
- overflow-y: auto;
- height: 415px;
- border-bottom: 1px solid #ccc;
- }
-
- div.close {
- border: 1px solid #aaa;
- background-color: #ddd;
- float: right;
- margin-top: 10px;
- font-weight: bold;
- height: 25px;
- line-height: 25px;
- padding: 0 10px;
- cursor: pointer;
- }
-
- div.close:hover {
- background-color: #d1d1d1;
- }
-
- div.section-header > div.title {
- font-size: 24px;
- float: left;
- }
-
- div.section-description {
- float: right;
- margin-top: 10px;
- }
-
- div.section-endpoints {
- margin-top: 10px;
- }
-
- /* tables */
-
- table {
- background-color: #fefefe;
- border: 1px solid #ccc;
- border-left: 6px solid #ccc;
- color: #555;
- display: block;
- margin-bottom: 12px;
- padding: 5px 8px;
- }
-
- table th {
- font-weight: bold;
- vertical-align:top;
- text-align:left;
- padding: 4px 15px;
- border-width: 0;
- white-space: nowrap;
- }
-
- table td {
- vertical-align:top;
- text-align:left;
- padding: 2px 15px;
- border-width: 0;
- white-space: nowrap;
- }
-
- table td:last-child {
- width: 99%;
- white-space: normal;
- }
-
- code.example {
- background-color: #fefefe;
- border: 1px solid #ccc;
- border-left: 6px solid #ccc;
- color: #555;
- margin-bottom: 10px;
- padding: 5px 8px;
- white-space: pre;
- display: block;
- tab-size: 4;
- -moz-tab-size: 4;
- -o-tab-size: 4;
- line-height: 20px
- }
-
- span.nested.collapsed {
- cursor: pointer;
- border: 1px solid #7298AC;
- background-color: rgba(114, 152, 172, .15);
- padding: 1px;
- }
-
- /* general */
-
- .mono {
- font-family: monospace;
- }
-
- div.clear {
- clear: both;
- }
-
- .hidden {
- display: none;
- }
-
- a, .link {
- cursor: pointer;
- color: #1e373f;
- font-weight: normal;
- }
-
- a:hover, .link:hover {
- color: #264c58;
- text-decoration: underline;
- }
- </style>
- <script type="text/javascript">
- $(document).ready(function () {
- // hide any open type dialogs
- $('html').on('click', function() {
- $('div.type').hide();
- }).on('keydown', function(e) {
- if (e.which === 27) {
- $('div.type').hide();
- }
- });
-
- // populate all paths - this is necessary because the @key
- // doesn't seem to reset after iterating through a nested
- // array or object
- $('span.path').each(function() {
- var path = $(this);
- var endpoint = path.parent();
- endpoint.find('div.path').text(path.text());
- });
-
- // toggles the visibility of a given operation
- $('div.operation-handle').on('click', function () {
- $(this).next('div.operation').slideToggle();
- });
-
- // add support for clicking to view the definition of a type
- $('a.type-link').on('click', function(e) {
- // hide any previously shown dialogs
- $('div.type').hide();
-
- // show the type selected
- var link = $(this);
- var typeId = link.text();
- $('#' + typeId).show();
- e.stopPropagation();
- });
-
- // prevent hiding when clicking on the type dialog
- $('div.type').on('click', function(e) {
- e.stopPropagation();
- });
-
- // due to lack of support for @last when iterating objects in
- // handlebars we need to remove the last comma from each example
- $('code.example').find('span.comma:last').remove();
-
- // populate nested examples
- $('code.example').on('click', 'span.nested', function(e) {
- var nested = $(this).removeClass('collapsed');
- var nestedId = nested.find('span.nested-id');
- var nestedExample = nested.find('span.nested-example');
-
- // get the id of the nested example
- var typeId = nestedId.text();
- var example = $('#' + typeId + ' code.example').html();
- var depth = nestedId.parents('span.open-object').length;
-
- // tab over as appropriate
- example = example.replace(/(\r\n|\r|\n)/g, function(match) {
- var tab = '\t';
- for (var i = 0; i < depth - 1; i++) {
- tab += '\t';
- }
- return match + tab;
- });
-
- // copy over the example
- nestedExample.html(example);
- e.stopPropagation();
- });
-
- // handle close button
- $('div.close').on('click', function() {
- $(this).closest('div.type').hide();
- });
-
- // function for organizing the endpoints
- var organizeEndpoints = function(term, container) {
- $('div.unorganized > div.endpoints').each(function() {
- var endpoints = $(this);
- var path = endpoints.find('div.path').text();
-
- if (term === null || path.indexOf(term) === 0) {
- endpoints.detach().appendTo(container);
- }
- });
- };
-
- // 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'));
-
- // handle expanding/collapsing the sections
- $('div.section-header > div.title').on('click', function() {
- $(this).parent('div.section-header').next('div.section-endpoints').slideToggle();
- });
- });
- </script>
- </head>
- <body>
- <div class="header">
- <img class="logo" src="images/bgNifiLogo.png" alt="NiFi Logo"/>
- <div class="title">{{basePath}}</div>
- <div class="sub-title">{{info.title}} {{info.version}}</div>
- <div class="clear"></div>
- </div>
- <div class="clear"></div>
- <div class="overview">{{info.description}}</div>
- <div class="section">
- <div class="section-header">
- <div class="title link">Buckets</div>
- <div class="sub-title section-description">Bucket endpoints</div>
- <div class="clear"></div>
- </div>
- <div id="bucket-endpoints" class="section-endpoints hidden"></div>
- </div>
- <div class="section">
- <div class="section-header">
- <div class="title link">Items</div>
- <div class="sub-title section-description">Item endpoints</div>
- <div class="clear"></div>
- </div>
- <div id="item-endpoints" class="section-endpoints hidden"></div>
- </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>
- </div>
- <div id="tenant-endpoints" class="section-endpoints hidden"></div>
- </div>
- <div class="section">
- <div class="section-header">
- <div class="title link">Policies</div>
- <div class="sub-title section-description">Policy endpoints</div>
- <div class="clear"></div>
- </div>
- <div id="policy-endpoints" class="section-endpoints hidden"></div>
- </div>
- <div class="section">
- <div class="section-header">
- <div class="title link">Access</div>
- <div class="sub-title section-description">Access endpoints</div>
- <div class="clear"></div>
- </div>
- <div id="access-endpoints" class="section-endpoints hidden"></div>
- </div>
-
- <div class="unorganized hidden">
- {{#each paths}}
- {{> endpoint}}
- {{/each}}
- </div>
- {{#each definitions}}
- {{> type}}
- {{/each}}
- </body>
-</html>
\ No newline at end of file
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/operation.hbs b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/operation.hbs
deleted file mode 100644
index 64bd582..0000000
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/operation.hbs
+++ /dev/null
@@ -1,110 +0,0 @@
-{{!--
- 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.
---}}
-<div class="operation hidden">
- {{#if description}}
- <div class="description">
- {{description}}
- </div>
- {{/if}}
- <div class="title">Request</div>
- <div class="mediatypes details">
- {{#if consumes}}
- <div class="mediatype"><div class="title">consumes:</div><div class="mono">{{join consumes ", "}}</div><div class="clear"></div></div>
- {{/if}}
- </div>
- {{#if parameters}}
- <table>
- <thead>
- <tr>
- <th>Name</th>
- <th>Location</th>
- <th>Type</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- {{/if}}
- {{#each parameters}}
- <tr>
- <td>{{#ifeq in "body"}}{{else}}{{name}}{{/ifeq}}</td>
- <td>{{in}}</td>
- {{#ifeq in "body"}}
- <td>
- {{#ifeq schema.type "array"}}Array[<a class="type-link" href="javascript:void(0);">{{basename schema.items.$ref}}</a>]{{/ifeq}}
- {{#schema.$ref}}<a class="type-link" href="javascript:void(0);">{{basename schema.$ref}}</a> {{/schema.$ref}}
- </td>
- {{else}}
- {{#ifeq type "array"}}
- <td>Array[{{items.type}}] ({{collectionFormat}})</td>
- {{else}}
- {{#ifeq type "ref"}}
- <td>string</td>
- {{else}}
- <td>{{type}} {{#format}}({{format}}){{/format}}</td>
- {{/ifeq}}
- {{/ifeq}}
- {{/ifeq}}
- <td>{{description}}</td>
- </tr>
- {{/each}}
- {{#if parameters}}
- </tbody>
- </table>
- {{/if}}
- <div class="title">Response</div>
- <div class="mediatypes details">
- {{#if produces}}
- <div class="mediatype"><div class="title">produces:</div><div class="mono">{{join produces ", "}}</div><div class="clear"></div></div>
- {{/if}}
- </div>
- <table>
- <thead>
- <tr>
- <th>Status Code</th>
- <th>Type</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- {{#each responses}}
- <tr>
- <td>{{@key}}</td>
- <td>
- {{#if schema}}
- {{#ifeq schema.type "array"}}
- {{#if schema.items.$ref}}
- array[<a class="type-link" href="javascript:void(0);">{{basename schema.items.$ref}}</a>]
- {{else}}
- array[{{schema.items.type}}]
- {{/if}}
- {{else}}
- {{#schema.$ref}}<a class="type-link" href="javascript:void(0);">{{basename schema.$ref}}</a>{{/schema.$ref}}
- {{/ifeq}}
- {{else}}
- string
- {{/if}}
- </td>
- <td>{{description}}</td>
- </tr>
- {{/each}}
- </tbody>
- </table>
- {{#if vendorExtensions.x-access-policy}}
- <div class="title">Authorization</div>
- <div class="authorization details">
- Requires access policy: {{vendorExtensions.x-access-policy.action}}:{{vendorExtensions.x-access-policy.resource}}
- </div>
- {{/if}}
-</div>
\ No newline at end of file
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/style.css.mustache b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/style.css.mustache
new file mode 100644
index 0000000..4dc8b82
--- /dev/null
+++ b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/style.css.mustache
@@ -0,0 +1,138 @@
+{{!--
+ 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.
+--}}
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 300;
+ font-stretch: normal;
+ src: url(https://fonts.gstatic.com/s/opensans/v27/memSYaGs126MiZpBA-UvWbX2vVnXBbObj2OVZyOOSr4dVJWUgsiH0B4gaVI.woff2) format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+body {
+ font-family: "Open Sans","DejaVu Sans",sans-serif;
+ margin: 0 auto;
+ width: 100%;
+ max-width: 62.5em;
+}
+
+h1 {
+ font-size: 2.75em;
+ color: rgba(0,0,0,0.85);
+ font-weight: 300;
+ font-style: normal;
+ line-height: 1.2;
+ word-spacing: -.05em;
+}
+
+h2 {
+ font-size: 2em;
+}
+
+h3 {
+ font-size: 1.5em;
+}
+
+h4 {
+ font-size: 1.25em;
+}
+
+h2, h3, h4, h5, h6 {
+ font-weight: 300;
+ font-style: normal;
+ color: #7a2518;
+ line-height: 1.2;
+ word-spacing: -.05em;
+}
+
+a {
+ color: #2156a5;
+ text-decoration: none;
+}
+
+h1 > a {
+ color: #7a2518;
+}
+
+h2 > a {
+ color: #7a2518;
+}
+
+h3 > a {
+ color: #7a2518;
+}
+
+h4 > a {
+ color: #7a2518;
+}
+
+h5 > a {
+ color: #7a2518;
+}
+
+h6 > a {
+ color: #7a2518;
+}
+
+pre {
+ background: #f7f7f8;
+ line-height: 1.45;
+ padding: 1em;
+ border-radius: 4px;
+}
+
+.app-desc {
+ margin-bottom: 10px;
+}
+
+.license-info {
+ margin-bottom: 10px;
+}
+
+.license-url {
+ margin-bottom: 10px;
+}
+
+.http-method {
+ text-transform: uppercase;
+}
+
+code {
+ white-space: pre;
+}
+
+code.huge {
+ font-size: 1.5em;
+}
+
+.up {
+ display: none;
+}
+
+.field-items {
+ margin-left: 10px;
+}
+
+.param-desc {
+ margin-bottom: 10px;
+}
+
+.param-type {
+ font-style: italic;
+}
+
+.param-header {
+ font-weight: bold;
+}
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/type.hbs b/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/type.hbs
deleted file mode 100644
index f6f117b..0000000
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-api/src/main/resources/templates/type.hbs
+++ /dev/null
@@ -1,57 +0,0 @@
-{{!--
- 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.
---}}
-<div id="{{@key}}" class="type hidden">
- <h3>{{@key}}</h3>
- <div class="type-container">
- <table>
- <tr>
- <th>Name</th>
- <th>Type</th>
- <th>Required</th>
- <th>Description</th>
- </tr>
- {{#each properties}}
- <tr>
- <td>{{@key}}</td>
- <td>
- {{#ifeq type "array"}}
- {{#items.$ref}}
- {{type}}[<a class="type-link" href="javascript:void(0);">{{basename items.$ref}}</a>]
- {{/items.$ref}}
- {{^items.$ref}}
- {{type}}[{{items.type}}]
- {{/items.$ref}}
- {{else}}
- {{#$ref}}
- <a class="type-link" href="javascript:void(0);">{{basename $ref}}</a>
- {{/$ref}}
- {{^$ref}}
- {{type}}{{#format}} ({{format}}){{/format}}
- {{/$ref}}
- {{/ifeq}}
- </td>
- <td>{{#required}}required{{/required}}{{^required}}optional{{/required}}</td>
- <td>{{#description}}{{{description}}}{{/description}}
- {{#if enum}} Allowable values: {{join enum ", "}}{{/if}}
- {{#if readOnly}} This property is read only.{{/if}}</td>
- </tr>
- {{/each}}
- </table>
- <h4>Example JSON</h4>
- <code class="example"><span class="open-object">{{{> example}}}</span></code>
- </div>
- <div class="close">Close</div>
- <div class="clear"></div>
-</div>
\ No newline at end of file
diff --git a/nifi-registry/nifi-registry-core/nifi-registry-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp b/nifi-registry/nifi-registry-core/nifi-registry-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp
index 0db7c41..c29fca2 100644
--- a/nifi-registry/nifi-registry-core/nifi-registry-web-docs/src/main/webapp/WEB-INF/jsp/documentation.jsp
+++ b/nifi-registry/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/rest-api.html" target="component-usage">REST API</a></li>
+ <li class="component-item"><a class="document-link rest-api" href="rest-api/index.html" target="component-usage">REST API</a></li>
</ul>
<span class="no-matching no-components hidden">No matching developer guides</span>
</div>