You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by su...@apache.org on 2021/02/25 08:27:30 UTC

[apisix-dashboard] branch master updated: chore: improve docs structure (#1511)

This is an automated email from the ASF dual-hosted git repository.

sunyi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-dashboard.git


The following commit(s) were added to refs/heads/master by this push:
     new e82c0c0  chore: improve docs structure (#1511)
e82c0c0 is described below

commit e82c0c07dcea848808f2984b260709ce5dadcd0b
Author: 琚致远 <ju...@apache.org>
AuthorDate: Thu Feb 25 16:27:25 2021 +0800

    chore: improve docs structure (#1511)
---
 README.md                                          |  14 +-
 docs/api/api.md                                    | 369 --------------------
 docs/{ => assets}/images/architecture.png          | Bin
 docs/{ => assets}/images/manager-api.png           | Bin
 docs/{ => assets}/images/metrics-cn.png            | Bin
 docs/{ => assets}/images/metrics-en.png            | Bin
 .../images/route-create-done-list-cn.png           | Bin
 .../images/route-create-done-list-en.png           | Bin
 docs/{ => assets}/images/route-create-step1-cn.png | Bin
 docs/{ => assets}/images/route-create-step1-en.png | Bin
 docs/{ => assets}/images/route-create-step2-cn.png | Bin
 docs/{ => assets}/images/route-create-step2-en.png | Bin
 docs/{ => assets}/images/route-create-step3-cn.png | Bin
 docs/{ => assets}/images/route-create-step3-en.png | Bin
 docs/{ => assets}/images/route-create-step4-cn.png | Bin
 docs/{ => assets}/images/route-create-step4-en.png | Bin
 .../{ => assets}/images/route-debug-basic-auth.png | Bin
 .../images/route-debug-body-params.png             | Bin
 .../images/route-debug-header-params.png           | Bin
 docs/{ => assets}/images/route-debug-offline.png   | Bin
 docs/{ => assets}/images/route-debug-published.png | Bin
 .../images/route-debug-query-params.png            | Bin
 docs/{ => assets}/images/route-list-en.png         | Bin
 docs/{ => assets}/images/setting-cn.png            | Bin
 docs/{ => assets}/images/setting-en.png            | Bin
 docs/{ => assets}/images/ssl-list-cn.png           | Bin
 docs/{ => assets}/images/ssl-list-en.png           | Bin
 docs/{ => en/latest}/FAQ.md                        |  15 +-
 docs/{ => en/latest}/I18N_USER_GUIDE.md            |   7 +
 docs/{ => en/latest}/IMPORT_OPENAPI_USER_GUIDE.md  |  41 ++-
 docs/{ => en/latest}/USER_GUIDE.md                 |  35 +-
 docs/en/latest/api/api.md                          | 376 +++++++++++++++++++++
 docs/{ => en/latest}/back-end-e2e.md               |  27 +-
 docs/en/latest/config.json                         |  18 +
 docs/{ => en/latest}/deploy-with-docker.md         |   7 +
 docs/{ => en/latest}/deploy-with-rpm.md            |   7 +
 docs/{ => en/latest}/deploy.md                     |   7 +
 docs/{ => en/latest}/develop.md                    |   7 +
 docs/{ => en/latest}/front-end-e2e.md              |   7 +
 39 files changed, 516 insertions(+), 421 deletions(-)

diff --git a/README.md b/README.md
index c97ffc0..19719d3 100644
--- a/README.md
+++ b/README.md
@@ -43,7 +43,7 @@ This project includes `Manager API`, which will gradually replace `Admin API` in
 
 Note: Currently the Dashboard does not have complete coverage of Apache APISIX features, [visit here](https://github.com/apache/apisix-dashboard/milestones) to view the milestones.
 
-![architecture](./docs/images/architecture.png)
+![architecture](./docs/assets/images/architecture.png)
 
 ## Demo
 
@@ -78,19 +78,19 @@ Password: admin
 
 Support the following ways currently.
 
-- [Source Codes](./docs/deploy.md)
-- [Docker](./docs/deploy-with-docker.md)
-- [RPM package(only for CentOS 7)](./docs/deploy-with-rpm.md)
+- [Source Codes](./docs/en/latest/deploy.md)
+- [Docker](./docs/en/latest/deploy-with-docker.md)
+- [RPM package(only for CentOS 7)](./docs/en/latest/deploy-with-rpm.md)
 
 ## Development
 
 Pull requests are encouraged and always welcome. [Pick an issue](https://github.com/apache/apisix-dashboard/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) and help us out!
 
-Please refer to the [Development Guide](./docs/develop.md).
+Please refer to the [Development Guide](./docs/en/latest/develop.md).
 
 ## User Guide
 
-Please refer to the [User Guide](./docs/USER_GUIDE.md).
+Please refer to the [User Guide](./docs/en/latest/USER_GUIDE.md).
 
 ## Contributing
 
@@ -98,7 +98,7 @@ Please refer to the [Contribution Guide](./CONTRIBUTING.md) for a more detailed
 
 ## FAQ
 
-Please refer to the [FAQ](./docs/FAQ.md) for more known issues.
+Please refer to the [FAQ](./docs/en/latest/FAQ.md) for more known issues.
 
 ## License
 
diff --git a/docs/api/api.md b/docs/api/api.md
deleted file mode 100644
index 7174239..0000000
--- a/docs/api/api.md
+++ /dev/null
@@ -1,369 +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.
-#
--->
-
-# API doc of Manager API.
-
-Manager API directly operates ETCD and provides data management for Apache APISIX, provides APIs for Front-end or other clients.
-
-**License:** [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0)
-
-### /apisix/admin/check_ssl_cert
-
-#### POST
-
-##### Summary:
-
-verify SSL cert and key.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| cert | body | cert of SSL | Yes | string |
-| key | body | key of SSL | Yes | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | SSL verify passed | [ApiError](#ApiError) |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/check_ssl_exists
-
-#### POST
-
-##### Summary:
-
-Check whether the SSL exists.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| cert | body | cert of SSL | Yes | string |
-| key | body | key of SSL | Yes | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | SSL exists | [ApiError](#ApiError) |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/consumers
-
-#### GET
-
-##### Summary:
-
-Return the consumer list according to the specified page number and page size, and can search consumers by username.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| page | query | page number | No | integer |
-| page_size | query | page size | No | integer |
-| username | query | username of consumer | No | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | list response | [ [consumer](#consumer) ] |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/notexist/routes
-
-#### GET
-
-##### Summary:
-
-Return result of route exists checking by name and exclude id.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| name | query | name of route | No | string |
-| exclude | query | id of route that exclude checking | No | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | route not exists | [ApiError](#ApiError) |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/routes
-
-#### GET
-
-##### Summary:
-
-Return the route list according to the specified page number and page size, and can search routes by name and uri.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| page | query | page number | No | integer |
-| page_size | query | page size | No | integer |
-| name | query | name of route | No | string |
-| uri | query | uri of route | No | string |
-| label | query | label of route | No | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | list response | [ [route](#route) ] |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/services
-
-#### GET
-
-##### Summary:
-
-Return the service list according to the specified page number and page size, and can search services by name.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| page | query | page number | No | integer |
-| page_size | query | page size | No | integer |
-| name | query | name of service | No | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | list response | [ [service](#service) ] |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/ssl
-
-#### GET
-
-##### Summary:
-
-Return the SSL list according to the specified page number and page size, and can SSLs search by sni.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| page | query | page number | No | integer |
-| page_size | query | page size | No | integer |
-| sni | query | sni of SSL | No | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | list response | [ [ssl](#ssl) ] |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/upstreams
-
-#### GET
-
-##### Summary:
-
-Return the upstream list according to the specified page number and page size, and can search upstreams by name.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| page | query | page number | No | integer |
-| page_size | query | page size | No | integer |
-| name | query | name of upstream | No | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | list response | [ [upstream](#upstream) ] |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### /apisix/admin/user/login
-
-#### POST
-
-##### Summary:
-
-user login.
-
-##### Parameters
-
-| Name | Located in | Description | Required | Schema |
-| ---- | ---------- | ----------- | -------- | ---- |
-| username | body | user name | Yes | string |
-| password | body | password | Yes | string |
-
-##### Responses
-
-| Code | Description | Schema |
-| ---- | ----------- | ------ |
-| 0 | login success | [ApiError](#ApiError) |
-| default | unexpected error | [ApiError](#ApiError) |
-
-### Models
-
-#### ApiError
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| code | long | response code | No |
-| message | string | response message | No |
-
-#### BaseInfo
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| create_time | long |  | No |
-| id | object |  | No |
-| update_time | long |  | No |
-
-#### Consumer
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| create_time | long |  | No |
-| desc | string |  | No |
-| id | object |  | No |
-| labels | object |  | No |
-| plugins | object |  | No |
-| update_time | long |  | No |
-| username | string |  | No |
-
-#### LoginInput
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| password | string | password | No |
-| username | string | user name | No |
-
-#### Route
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| create_time | long |  | No |
-| desc | string |  | No |
-| enable_websocket | boolean |  | No |
-| filter_func | string |  | No |
-| host | string |  | No |
-| hosts | [ string ] |  | No |
-| id | object |  | No |
-| labels | object |  | No |
-| methods | [ string ] |  | No |
-| name | string |  | No |
-| plugins | object |  | No |
-| priority | long |  | No |
-| remote_addr | string |  | No |
-| remote_addrs | [ string ] |  | No |
-| script | object |  | No |
-| service_id | object |  | No |
-| service_protocol | string |  | No |
-| update_time | long |  | No |
-| upstream | [UpstreamDef](#UpstreamDef) |  | No |
-| upstream_id | object |  | No |
-| uri | string |  | No |
-| uris | [ string ] |  | No |
-| vars | object |  | No |
-
-#### SSL
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| cert | string |  | No |
-| certs | [ string ] |  | No |
-| create_time | long |  | No |
-| exptime | long |  | No |
-| id | object |  | No |
-| key | string |  | No |
-| keys | [ string ] |  | No |
-| labels | object |  | No |
-| sni | string |  | No |
-| snis | [ string ] |  | No |
-| status | long |  | No |
-| update_time | long |  | No |
-| validity_end | long |  | No |
-| validity_start | long |  | No |
-
-#### Service
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| create_time | long |  | No |
-| desc | string |  | No |
-| enable_websocket | boolean |  | No |
-| id | object |  | No |
-| labels | object |  | No |
-| name | string |  | No |
-| plugins | object |  | No |
-| script | string |  | No |
-| update_time | long |  | No |
-| upstream | [UpstreamDef](#UpstreamDef) |  | No |
-| upstream_id | object |  | No |
-
-#### Upstream
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| checks | object |  | No |
-| create_time | long |  | No |
-| desc | string |  | No |
-| hash_on | string |  | No |
-| id | object |  | No |
-| k8s_deployment_info | object |  | No |
-| key | string |  | No |
-| labels | object |  | No |
-| name | string |  | No |
-| nodes | object |  | No |
-| pass_host | string |  | No |
-| retries | long |  | No |
-| service_name | string |  | No |
-| timeout | object |  | No |
-| type | string |  | No |
-| update_time | long |  | No |
-| upstream_host | string |  | No |
-
-#### UpstreamDef
-
-| Name | Type | Description | Required |
-| ---- | ---- | ----------- | -------- |
-| checks | object |  | No |
-| desc | string |  | No |
-| hash_on | string |  | No |
-| k8s_deployment_info | object |  | No |
-| key | string |  | No |
-| labels | object |  | No |
-| name | string |  | No |
-| nodes | object |  | No |
-| pass_host | string |  | No |
-| retries | long |  | No |
-| service_name | string |  | No |
-| timeout | object |  | No |
-| type | string |  | No |
-| upstream_host | string |  | No |
diff --git a/docs/images/architecture.png b/docs/assets/images/architecture.png
similarity index 100%
rename from docs/images/architecture.png
rename to docs/assets/images/architecture.png
diff --git a/docs/images/manager-api.png b/docs/assets/images/manager-api.png
similarity index 100%
rename from docs/images/manager-api.png
rename to docs/assets/images/manager-api.png
diff --git a/docs/images/metrics-cn.png b/docs/assets/images/metrics-cn.png
similarity index 100%
rename from docs/images/metrics-cn.png
rename to docs/assets/images/metrics-cn.png
diff --git a/docs/images/metrics-en.png b/docs/assets/images/metrics-en.png
similarity index 100%
rename from docs/images/metrics-en.png
rename to docs/assets/images/metrics-en.png
diff --git a/docs/images/route-create-done-list-cn.png b/docs/assets/images/route-create-done-list-cn.png
similarity index 100%
rename from docs/images/route-create-done-list-cn.png
rename to docs/assets/images/route-create-done-list-cn.png
diff --git a/docs/images/route-create-done-list-en.png b/docs/assets/images/route-create-done-list-en.png
similarity index 100%
rename from docs/images/route-create-done-list-en.png
rename to docs/assets/images/route-create-done-list-en.png
diff --git a/docs/images/route-create-step1-cn.png b/docs/assets/images/route-create-step1-cn.png
similarity index 100%
rename from docs/images/route-create-step1-cn.png
rename to docs/assets/images/route-create-step1-cn.png
diff --git a/docs/images/route-create-step1-en.png b/docs/assets/images/route-create-step1-en.png
similarity index 100%
rename from docs/images/route-create-step1-en.png
rename to docs/assets/images/route-create-step1-en.png
diff --git a/docs/images/route-create-step2-cn.png b/docs/assets/images/route-create-step2-cn.png
similarity index 100%
rename from docs/images/route-create-step2-cn.png
rename to docs/assets/images/route-create-step2-cn.png
diff --git a/docs/images/route-create-step2-en.png b/docs/assets/images/route-create-step2-en.png
similarity index 100%
rename from docs/images/route-create-step2-en.png
rename to docs/assets/images/route-create-step2-en.png
diff --git a/docs/images/route-create-step3-cn.png b/docs/assets/images/route-create-step3-cn.png
similarity index 100%
rename from docs/images/route-create-step3-cn.png
rename to docs/assets/images/route-create-step3-cn.png
diff --git a/docs/images/route-create-step3-en.png b/docs/assets/images/route-create-step3-en.png
similarity index 100%
rename from docs/images/route-create-step3-en.png
rename to docs/assets/images/route-create-step3-en.png
diff --git a/docs/images/route-create-step4-cn.png b/docs/assets/images/route-create-step4-cn.png
similarity index 100%
rename from docs/images/route-create-step4-cn.png
rename to docs/assets/images/route-create-step4-cn.png
diff --git a/docs/images/route-create-step4-en.png b/docs/assets/images/route-create-step4-en.png
similarity index 100%
rename from docs/images/route-create-step4-en.png
rename to docs/assets/images/route-create-step4-en.png
diff --git a/docs/images/route-debug-basic-auth.png b/docs/assets/images/route-debug-basic-auth.png
similarity index 100%
rename from docs/images/route-debug-basic-auth.png
rename to docs/assets/images/route-debug-basic-auth.png
diff --git a/docs/images/route-debug-body-params.png b/docs/assets/images/route-debug-body-params.png
similarity index 100%
rename from docs/images/route-debug-body-params.png
rename to docs/assets/images/route-debug-body-params.png
diff --git a/docs/images/route-debug-header-params.png b/docs/assets/images/route-debug-header-params.png
similarity index 100%
rename from docs/images/route-debug-header-params.png
rename to docs/assets/images/route-debug-header-params.png
diff --git a/docs/images/route-debug-offline.png b/docs/assets/images/route-debug-offline.png
similarity index 100%
rename from docs/images/route-debug-offline.png
rename to docs/assets/images/route-debug-offline.png
diff --git a/docs/images/route-debug-published.png b/docs/assets/images/route-debug-published.png
similarity index 100%
rename from docs/images/route-debug-published.png
rename to docs/assets/images/route-debug-published.png
diff --git a/docs/images/route-debug-query-params.png b/docs/assets/images/route-debug-query-params.png
similarity index 100%
rename from docs/images/route-debug-query-params.png
rename to docs/assets/images/route-debug-query-params.png
diff --git a/docs/images/route-list-en.png b/docs/assets/images/route-list-en.png
similarity index 100%
rename from docs/images/route-list-en.png
rename to docs/assets/images/route-list-en.png
diff --git a/docs/images/setting-cn.png b/docs/assets/images/setting-cn.png
similarity index 100%
rename from docs/images/setting-cn.png
rename to docs/assets/images/setting-cn.png
diff --git a/docs/images/setting-en.png b/docs/assets/images/setting-en.png
similarity index 100%
rename from docs/images/setting-en.png
rename to docs/assets/images/setting-en.png
diff --git a/docs/images/ssl-list-cn.png b/docs/assets/images/ssl-list-cn.png
similarity index 100%
rename from docs/images/ssl-list-cn.png
rename to docs/assets/images/ssl-list-cn.png
diff --git a/docs/images/ssl-list-en.png b/docs/assets/images/ssl-list-en.png
similarity index 100%
rename from docs/images/ssl-list-en.png
rename to docs/assets/images/ssl-list-en.png
diff --git a/docs/FAQ.md b/docs/en/latest/FAQ.md
similarity index 93%
rename from docs/FAQ.md
rename to docs/en/latest/FAQ.md
index 2218473..d378970 100644
--- a/docs/FAQ.md
+++ b/docs/en/latest/FAQ.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: fqa
+title: FAQ
+
+---
+
 # FAQ
 
 ### 1. Vue.js version of the Dashboard
@@ -36,8 +43,8 @@ If you are using Apache APISIX below v2.0, be aware that the data from the etcd
 Since the Dashboard caches the jsonschema data of the plugins in Apache APISIX, you need to synchronize the data in the Dashboard after you create your custom plugins in Apache APISIX, which currently **only supports manual operation**. Please follow the following guide.
 
 1. Confirm that your APISIX is running and has enabled control API (enabled by default and only runs local access)
-Refer to the beginning in:
-https://github.com/apache/apisix/blob/master/doc/control-api.md
+   Refer to the beginning in:
+   https://github.com/apache/apisix/blob/master/doc/control-api.md
 
 2. Execute the following commands to export jsonchema on your APISIX server (if it is configured for non-local access, it does not need to be executed on your APISIX server, and the access IP and port should be modified accordingly)
 
@@ -60,11 +67,11 @@ We use [go-swagger](https://github.com/go-swagger/go-swagger) to generate Swagge
 2. Use the `go-swagger` tool to generate Swagger 2.0 documents.
 
 ```shell
-$ swagger generate spec -o ./docs/api/api.yaml --scan-models
+$ swagger generate spec -o ./docs/en/latest/api/api.yaml --scan-models
 ```
 
 3. Use the `swagger-markdown` tool to convert Swagger 2.0 documents into markdown documents.
 
 ```shell
-$ swagger-markdown -i ./docs/api/api.yaml
+$ swagger-markdown -i ./docs/en/latest/api/api.yaml
 ```
diff --git a/docs/I18N_USER_GUIDE.md b/docs/en/latest/I18N_USER_GUIDE.md
similarity index 99%
rename from docs/I18N_USER_GUIDE.md
rename to docs/en/latest/I18N_USER_GUIDE.md
index d05a16a..d51ec95 100644
--- a/docs/I18N_USER_GUIDE.md
+++ b/docs/en/latest/I18N_USER_GUIDE.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: i18n-guide
+title: i18n Guide
+
+---
+
 # Apache APISIX Dashboard I18N User Guide
 
 The Apache APISIX Dashboard uses [@umijs/plugin-locale](https://umijs.org/plugins/plugin-locale) to solve the i18n issues, in order to make the i18n more clear and reasonable, we would recommend to obey the following rules
diff --git a/docs/IMPORT_OPENAPI_USER_GUIDE.md b/docs/en/latest/IMPORT_OPENAPI_USER_GUIDE.md
similarity index 71%
rename from docs/IMPORT_OPENAPI_USER_GUIDE.md
rename to docs/en/latest/IMPORT_OPENAPI_USER_GUIDE.md
index 1c657f4..988baf9 100644
--- a/docs/IMPORT_OPENAPI_USER_GUIDE.md
+++ b/docs/en/latest/IMPORT_OPENAPI_USER_GUIDE.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: import-openapi-guide
+title: Import OpenAPI Guide
+
+---
+
 # Import OpenApi User Guide
 
 > The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection.
@@ -41,20 +48,20 @@ when we import routes from OAS3.0, some fields in OAS will be missed because the
 
 There are some fields required in APISIX Route but are not included in the properties of OAS3.0, we added some extended fields such as upstream, plugins, hosts and so on. All extensions start with x-apisix. See [reference](https://github.com/apache/apisix/blob/master/doc/admin-api.md#route) For more details of the APISIX Route Properties
 
-| Extended fields           | APISIX Route Properties          |
-| --------------------------| -------------------------------- |
-| x-apisix-plugins          | plugins                          |
-| x-apisix-script           | script                           |
-| x-apisix-upstream         | upstream                         |
-| x-apisix-service_protocol | service_protocol                 |
-| x-apisix-host             | host                             |
-| x-apisix-hosts            | hosts                            |
-| x-apisix-remote_addr      | remote_addr                      |
-| x-apisix-priority         | priority                         |
-| x-apisix-vars             | vars                             |
-| x-apisix-filter_func      | filter_func                      |
-| x-apisix-labels           | labels                           |
-| x-apisix-enable_websocket | enable_websocket                 |
-| x-apisix-status           | status                           |
-| x-apisix-create_time      | create_time                      |
-| x-apisix-update_time      | update_time                      |
+| Extended fields           | APISIX Route Properties |
+| ------------------------- | ----------------------- |
+| x-apisix-plugins          | plugins                 |
+| x-apisix-script           | script                  |
+| x-apisix-upstream         | upstream                |
+| x-apisix-service_protocol | service_protocol        |
+| x-apisix-host             | host                    |
+| x-apisix-hosts            | hosts                   |
+| x-apisix-remote_addr      | remote_addr             |
+| x-apisix-priority         | priority                |
+| x-apisix-vars             | vars                    |
+| x-apisix-filter_func      | filter_func             |
+| x-apisix-labels           | labels                  |
+| x-apisix-enable_websocket | enable_websocket        |
+| x-apisix-status           | status                  |
+| x-apisix-create_time      | create_time             |
+| x-apisix-update_time      | update_time             |
diff --git a/docs/USER_GUIDE.md b/docs/en/latest/USER_GUIDE.md
similarity index 64%
rename from docs/USER_GUIDE.md
rename to docs/en/latest/USER_GUIDE.md
index 8e9c237..d3b2494 100644
--- a/docs/USER_GUIDE.md
+++ b/docs/en/latest/USER_GUIDE.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: userguide
+title: User Guide
+
+---
+
 # User Guide
 
 The following are parts of the modules' snapshot.
@@ -25,7 +32,7 @@ The following are parts of the modules' snapshot.
 
 We support the monitor page by referencing it in [iframe](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe). Before accessing [Grafana](https://grafana.com/), please Enable [`allow_embedding=true`](https://grafana.com/docs/grafana/latest/administration/configuration/#allow_embedding), which defaults to `false`. This causes the browser to fail to render Grafana pages properly due to security policies.
 
-![metrics-en](./images/metrics-en.png)
+![metrics-en](../../assets/images/metrics-en.png)
 
 ## Route
 
@@ -33,19 +40,19 @@ The Route module aims to control routes by UI instead of calling APIs.
 
 ### List
 
-![route-list](./images/route-list-en.png)
+![route-list](../../assets/images/route-list-en.png)
 
 ### Create
 
-![route-create-step1-en](./images/route-create-step1-en.png)
+![route-create-step1-en](../../assets/images/route-create-step1-en.png)
 
-![route-create-step2-en](./images/route-create-step2-en.png)
+![route-create-step2-en](../../assets/images/route-create-step2-en.png)
 
-![route-create-step3-en](./images/route-create-step3-en.png)
+![route-create-step3-en](../../assets/images/route-create-step3-en.png)
 
-![route-create-step4-en](./images/route-create-step4-en.png)
+![route-create-step4-en](../../assets/images/route-create-step4-en.png)
 
-![route-create-done-list-en](./images/route-create-done-list-en.png)
+![route-create-done-list-en](../../assets/images/route-create-done-list-en.png)
 
 ### Online debug
 
@@ -53,28 +60,28 @@ We can debug a route both published or offline with the online debug function, w
 
 1. Debug a published route
 
-![route-debug-published](./images/route-debug-published.png)
+![route-debug-published](../../assets/images/route-debug-published.png)
 
 2. Debug a offline route
 
-![route-debug-offline](./images/route-debug-offline.png)
+![route-debug-offline](../../assets/images/route-debug-offline.png)
 
 3. Debug a published route with query params
 
-![route-debug-query-params](./images/route-debug-query-params.png)
+![route-debug-query-params](../../assets/images/route-debug-query-params.png)
 
 4. Debug a published route with header params
 
-![route-debug-header-params](./images/route-debug-header-params.png)
+![route-debug-header-params](../../assets/images/route-debug-header-params.png)
 
 5. Debug a published route with body params
 
-![route-debug-body-params](./images/route-debug-body-params.png)
+![route-debug-body-params](../../assets/images/route-debug-body-params.png)
 
 6. Debug a published route with basic auth
 
-![route-debug-basic-auth](./images/route-debug-basic-auth.png)
+![route-debug-basic-auth](../../assets/images/route-debug-basic-auth.png)
 
 ## Setting
 
-![setting](./images/setting-en.png)
+![setting](../../assets/images/setting-en.png)
diff --git a/docs/en/latest/api/api.md b/docs/en/latest/api/api.md
new file mode 100644
index 0000000..58970a2
--- /dev/null
+++ b/docs/en/latest/api/api.md
@@ -0,0 +1,376 @@
+<!--
+#
+# 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.
+#
+-->
+
+---
+
+id: api
+title: API Guide
+
+---
+
+# API doc of Manager API.
+
+Manager API directly operates ETCD and provides data management for Apache APISIX, provides APIs for Front-end or other clients.
+
+**License:** [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0)
+
+### /apisix/admin/check_ssl_cert
+
+#### POST
+
+##### Summary:
+
+verify SSL cert and key.
+
+##### Parameters
+
+| Name | Located in | Description | Required | Schema |
+| ---- | ---------- | ----------- | -------- | ------ |
+| cert | body       | cert of SSL | Yes      | string |
+| key  | body       | key of SSL  | Yes      | string |
+
+##### Responses
+
+| Code    | Description       | Schema                |
+| ------- | ----------------- | --------------------- |
+| 0       | SSL verify passed | [ApiError](#ApiError) |
+| default | unexpected error  | [ApiError](#ApiError) |
+
+### /apisix/admin/check_ssl_exists
+
+#### POST
+
+##### Summary:
+
+Check whether the SSL exists.
+
+##### Parameters
+
+| Name | Located in | Description | Required | Schema |
+| ---- | ---------- | ----------- | -------- | ------ |
+| cert | body       | cert of SSL | Yes      | string |
+| key  | body       | key of SSL  | Yes      | string |
+
+##### Responses
+
+| Code    | Description      | Schema                |
+| ------- | ---------------- | --------------------- |
+| 0       | SSL exists       | [ApiError](#ApiError) |
+| default | unexpected error | [ApiError](#ApiError) |
+
+### /apisix/admin/consumers
+
+#### GET
+
+##### Summary:
+
+Return the consumer list according to the specified page number and page size, and can search consumers by username.
+
+##### Parameters
+
+| Name      | Located in | Description          | Required | Schema  |
+| --------- | ---------- | -------------------- | -------- | ------- |
+| page      | query      | page number          | No       | integer |
+| page_size | query      | page size            | No       | integer |
+| username  | query      | username of consumer | No       | string  |
+
+##### Responses
+
+| Code    | Description      | Schema                    |
+| ------- | ---------------- | ------------------------- |
+| 0       | list response    | [ [consumer](#consumer) ] |
+| default | unexpected error | [ApiError](#ApiError)     |
+
+### /apisix/admin/notexist/routes
+
+#### GET
+
+##### Summary:
+
+Return result of route exists checking by name and exclude id.
+
+##### Parameters
+
+| Name    | Located in | Description                       | Required | Schema |
+| ------- | ---------- | --------------------------------- | -------- | ------ |
+| name    | query      | name of route                     | No       | string |
+| exclude | query      | id of route that exclude checking | No       | string |
+
+##### Responses
+
+| Code    | Description      | Schema                |
+| ------- | ---------------- | --------------------- |
+| 0       | route not exists | [ApiError](#ApiError) |
+| default | unexpected error | [ApiError](#ApiError) |
+
+### /apisix/admin/routes
+
+#### GET
+
+##### Summary:
+
+Return the route list according to the specified page number and page size, and can search routes by name and uri.
+
+##### Parameters
+
+| Name      | Located in | Description    | Required | Schema  |
+| --------- | ---------- | -------------- | -------- | ------- |
+| page      | query      | page number    | No       | integer |
+| page_size | query      | page size      | No       | integer |
+| name      | query      | name of route  | No       | string  |
+| uri       | query      | uri of route   | No       | string  |
+| label     | query      | label of route | No       | string  |
+
+##### Responses
+
+| Code    | Description      | Schema                |
+| ------- | ---------------- | --------------------- |
+| 0       | list response    | [ [route](#route) ]   |
+| default | unexpected error | [ApiError](#ApiError) |
+
+### /apisix/admin/services
+
+#### GET
+
+##### Summary:
+
+Return the service list according to the specified page number and page size, and can search services by name.
+
+##### Parameters
+
+| Name      | Located in | Description     | Required | Schema  |
+| --------- | ---------- | --------------- | -------- | ------- |
+| page      | query      | page number     | No       | integer |
+| page_size | query      | page size       | No       | integer |
+| name      | query      | name of service | No       | string  |
+
+##### Responses
+
+| Code    | Description      | Schema                  |
+| ------- | ---------------- | ----------------------- |
+| 0       | list response    | [ [service](#service) ] |
+| default | unexpected error | [ApiError](#ApiError)   |
+
+### /apisix/admin/ssl
+
+#### GET
+
+##### Summary:
+
+Return the SSL list according to the specified page number and page size, and can SSLs search by sni.
+
+##### Parameters
+
+| Name      | Located in | Description | Required | Schema  |
+| --------- | ---------- | ----------- | -------- | ------- |
+| page      | query      | page number | No       | integer |
+| page_size | query      | page size   | No       | integer |
+| sni       | query      | sni of SSL  | No       | string  |
+
+##### Responses
+
+| Code    | Description      | Schema                |
+| ------- | ---------------- | --------------------- |
+| 0       | list response    | [ [ssl](#ssl) ]       |
+| default | unexpected error | [ApiError](#ApiError) |
+
+### /apisix/admin/upstreams
+
+#### GET
+
+##### Summary:
+
+Return the upstream list according to the specified page number and page size, and can search upstreams by name.
+
+##### Parameters
+
+| Name      | Located in | Description      | Required | Schema  |
+| --------- | ---------- | ---------------- | -------- | ------- |
+| page      | query      | page number      | No       | integer |
+| page_size | query      | page size        | No       | integer |
+| name      | query      | name of upstream | No       | string  |
+
+##### Responses
+
+| Code    | Description      | Schema                    |
+| ------- | ---------------- | ------------------------- |
+| 0       | list response    | [ [upstream](#upstream) ] |
+| default | unexpected error | [ApiError](#ApiError)     |
+
+### /apisix/admin/user/login
+
+#### POST
+
+##### Summary:
+
+user login.
+
+##### Parameters
+
+| Name     | Located in | Description | Required | Schema |
+| -------- | ---------- | ----------- | -------- | ------ |
+| username | body       | user name   | Yes      | string |
+| password | body       | password    | Yes      | string |
+
+##### Responses
+
+| Code    | Description      | Schema                |
+| ------- | ---------------- | --------------------- |
+| 0       | login success    | [ApiError](#ApiError) |
+| default | unexpected error | [ApiError](#ApiError) |
+
+### Models
+
+#### ApiError
+
+| Name    | Type   | Description      | Required |
+| ------- | ------ | ---------------- | -------- |
+| code    | long   | response code    | No       |
+| message | string | response message | No       |
+
+#### BaseInfo
+
+| Name        | Type   | Description | Required |
+| ----------- | ------ | ----------- | -------- |
+| create_time | long   |             | No       |
+| id          | object |             | No       |
+| update_time | long   |             | No       |
+
+#### Consumer
+
+| Name        | Type   | Description | Required |
+| ----------- | ------ | ----------- | -------- |
+| create_time | long   |             | No       |
+| desc        | string |             | No       |
+| id          | object |             | No       |
+| labels      | object |             | No       |
+| plugins     | object |             | No       |
+| update_time | long   |             | No       |
+| username    | string |             | No       |
+
+#### LoginInput
+
+| Name     | Type   | Description | Required |
+| -------- | ------ | ----------- | -------- |
+| password | string | password    | No       |
+| username | string | user name   | No       |
+
+#### Route
+
+| Name             | Type                        | Description | Required |
+| ---------------- | --------------------------- | ----------- | -------- |
+| create_time      | long                        |             | No       |
+| desc             | string                      |             | No       |
+| enable_websocket | boolean                     |             | No       |
+| filter_func      | string                      |             | No       |
+| host             | string                      |             | No       |
+| hosts            | [ string ]                  |             | No       |
+| id               | object                      |             | No       |
+| labels           | object                      |             | No       |
+| methods          | [ string ]                  |             | No       |
+| name             | string                      |             | No       |
+| plugins          | object                      |             | No       |
+| priority         | long                        |             | No       |
+| remote_addr      | string                      |             | No       |
+| remote_addrs     | [ string ]                  |             | No       |
+| script           | object                      |             | No       |
+| service_id       | object                      |             | No       |
+| service_protocol | string                      |             | No       |
+| update_time      | long                        |             | No       |
+| upstream         | [UpstreamDef](#UpstreamDef) |             | No       |
+| upstream_id      | object                      |             | No       |
+| uri              | string                      |             | No       |
+| uris             | [ string ]                  |             | No       |
+| vars             | object                      |             | No       |
+
+#### SSL
+
+| Name           | Type       | Description | Required |
+| -------------- | ---------- | ----------- | -------- |
+| cert           | string     |             | No       |
+| certs          | [ string ] |             | No       |
+| create_time    | long       |             | No       |
+| exptime        | long       |             | No       |
+| id             | object     |             | No       |
+| key            | string     |             | No       |
+| keys           | [ string ] |             | No       |
+| labels         | object     |             | No       |
+| sni            | string     |             | No       |
+| snis           | [ string ] |             | No       |
+| status         | long       |             | No       |
+| update_time    | long       |             | No       |
+| validity_end   | long       |             | No       |
+| validity_start | long       |             | No       |
+
+#### Service
+
+| Name             | Type                        | Description | Required |
+| ---------------- | --------------------------- | ----------- | -------- |
+| create_time      | long                        |             | No       |
+| desc             | string                      |             | No       |
+| enable_websocket | boolean                     |             | No       |
+| id               | object                      |             | No       |
+| labels           | object                      |             | No       |
+| name             | string                      |             | No       |
+| plugins          | object                      |             | No       |
+| script           | string                      |             | No       |
+| update_time      | long                        |             | No       |
+| upstream         | [UpstreamDef](#UpstreamDef) |             | No       |
+| upstream_id      | object                      |             | No       |
+
+#### Upstream
+
+| Name                | Type   | Description | Required |
+| ------------------- | ------ | ----------- | -------- |
+| checks              | object |             | No       |
+| create_time         | long   |             | No       |
+| desc                | string |             | No       |
+| hash_on             | string |             | No       |
+| id                  | object |             | No       |
+| k8s_deployment_info | object |             | No       |
+| key                 | string |             | No       |
+| labels              | object |             | No       |
+| name                | string |             | No       |
+| nodes               | object |             | No       |
+| pass_host           | string |             | No       |
+| retries             | long   |             | No       |
+| service_name        | string |             | No       |
+| timeout             | object |             | No       |
+| type                | string |             | No       |
+| update_time         | long   |             | No       |
+| upstream_host       | string |             | No       |
+
+#### UpstreamDef
+
+| Name                | Type   | Description | Required |
+| ------------------- | ------ | ----------- | -------- |
+| checks              | object |             | No       |
+| desc                | string |             | No       |
+| hash_on             | string |             | No       |
+| k8s_deployment_info | object |             | No       |
+| key                 | string |             | No       |
+| labels              | object |             | No       |
+| name                | string |             | No       |
+| nodes               | object |             | No       |
+| pass_host           | string |             | No       |
+| retries             | long   |             | No       |
+| service_name        | string |             | No       |
+| timeout             | object |             | No       |
+| type                | string |             | No       |
+| upstream_host       | string |             | No       |
diff --git a/docs/back-end-e2e.md b/docs/en/latest/back-end-e2e.md
similarity index 95%
rename from docs/back-end-e2e.md
rename to docs/en/latest/back-end-e2e.md
index 1dc794f..de3d791 100644
--- a/docs/back-end-e2e.md
+++ b/docs/en/latest/back-end-e2e.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: backend-e2e
+title: Backend E2E
+
+---
+
 This document describes how to use E2E test locally.
 
 ## Start with source code
@@ -80,16 +87,16 @@ This document describes how to use E2E test locally.
 
 **NOTE:** In order to run docker compose locally, please change the values of `listen.host` and `etcd.endpoints` within `./api/conf/conf.yaml` as follows:
 
-   ```sh
-   listen:
-      host: 0.0.0.0
-      port: 9000
-   etcd:
-      endpoints:
-        - 172.16.238.10:2379
-        - 172.16.238.11:2379
-        - 172.16.238.12:2379
-   ```
+```sh
+listen:
+   host: 0.0.0.0
+   port: 9000
+etcd:
+   endpoints:
+     - 172.16.238.10:2379
+     - 172.16.238.11:2379
+     - 172.16.238.12:2379
+```
 
 2. Use `docker-compose` to run services such as `manager-api`, `apisix`, `etcd` and `upstream-node`, run the command.
 
diff --git a/docs/en/latest/config.json b/docs/en/latest/config.json
new file mode 100644
index 0000000..87e01fd
--- /dev/null
+++ b/docs/en/latest/config.json
@@ -0,0 +1,18 @@
+{
+  "version": 2.4,
+  "docs": {
+    "Getting Started": ["userguide", "import-openapi-guide", "api"],
+    "Installation": [
+      "deploy-with-source-codes",
+      "deploy-with-docker",
+      "deploy-with-rpm"
+    ],
+    "Contributing": [
+      "development-guide",
+      "frontend-e2e",
+      "backend-e2e",
+      "i18n-guide"
+    ],
+    "FAQ": ["faq"]
+  }
+}
diff --git a/docs/deploy-with-docker.md b/docs/en/latest/deploy-with-docker.md
similarity index 98%
rename from docs/deploy-with-docker.md
rename to docs/en/latest/deploy-with-docker.md
index a97efe0..78e40a7 100644
--- a/docs/deploy-with-docker.md
+++ b/docs/en/latest/deploy-with-docker.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: deploy-with-docker
+title: Deploy with Docker
+
+---
+
 # Building and Launching with Docker
 
 **NOTE:** We support Docker Image, please visit [DockerHub](https://hub.docker.com/r/apache/apisix-dashboard) for more information. The following steps are for building Docker Image manually.
diff --git a/docs/deploy-with-rpm.md b/docs/en/latest/deploy-with-rpm.md
similarity index 96%
rename from docs/deploy-with-rpm.md
rename to docs/en/latest/deploy-with-rpm.md
index 0582d2e..f80854d 100644
--- a/docs/deploy-with-rpm.md
+++ b/docs/en/latest/deploy-with-rpm.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: deploy-with-rpm
+title: Deploy with RPM
+
+---
+
 # Deploy with RPM
 
 **NOTE:** Only support CentOS 7 currently, for more information, please refer to [here](./deploy.md).
diff --git a/docs/deploy.md b/docs/en/latest/deploy.md
similarity index 97%
rename from docs/deploy.md
rename to docs/en/latest/deploy.md
index 611145a..37ae5cc 100644
--- a/docs/deploy.md
+++ b/docs/en/latest/deploy.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: deploy-with-source-codes
+title: Deploy with Source Codes
+
+---
+
 # Build and launch with source codes
 
 The Dashboard contains both `manager-api` and `web`, but `web` is _optional_.
diff --git a/docs/develop.md b/docs/en/latest/develop.md
similarity index 97%
rename from docs/develop.md
rename to docs/en/latest/develop.md
index 75d470b..b9fb7f2 100644
--- a/docs/develop.md
+++ b/docs/en/latest/develop.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: development-guide
+title: Development Guide
+
+---
+
 # Development Guide
 
 The Dashboard contains both `manager-api` and `web` parts, so you need to start the development environment separately.
diff --git a/docs/front-end-e2e.md b/docs/en/latest/front-end-e2e.md
similarity index 97%
rename from docs/front-end-e2e.md
rename to docs/en/latest/front-end-e2e.md
index 4551a3b..44bbd78 100644
--- a/docs/front-end-e2e.md
+++ b/docs/en/latest/front-end-e2e.md
@@ -17,6 +17,13 @@
 #
 -->
 
+---
+
+id: frontend-e2e
+title: Frontend E2E
+
+---
+
 This project uses [Cypress](https://www.cypress.io/) as the front-end E2E test framework.
 
 1. To start the front-end project locally, please refer to [develop](./develop.md) web section.