diff --git a/docs/api/admin/methods/delete/projects/index.md b/docs/api/admin/methods/delete/projects/index.md
new file mode 100644
index 00000000..e5a0579b
--- /dev/null
+++ b/docs/api/admin/methods/delete/projects/index.md
@@ -0,0 +1,39 @@
+---
+layout: docs-api
+toc: toc-api-admin.html
+title: DELETE /projects/:id
+slug:
+  - url: "/docs/api/admin"
+    label: "admin"
+  - url: "/docs/api/admin/methods"
+    label: "methods"
+  - delete project
+---
+
+Delete an individual project.
+
+Deleting an active project is an error.
+
+Requires permission: projects.write
+
+### Headers
+
+Header          | Value
+----------------|-------
+`Authorization` | `Bearer [token]` - if authentication is enabled
+
+### Arguments
+
+Path Component | Description
+---------------|------------
+`id`           | The id of the project
+
+### Response
+
+Status Code | Reason         | Response
+------------|----------------|------------
+`204`       | Success        | _none_
+`400`       | Bad request    | An [Error response](/docs/api/admin/errors).
+`401`       | Not authorized | _none_
+
+
diff --git a/docs/api/admin/methods/get/projects/index.md b/docs/api/admin/methods/get/projects/index.md
new file mode 100644
index 00000000..b4b8e6be
--- /dev/null
+++ b/docs/api/admin/methods/get/projects/index.md
@@ -0,0 +1,37 @@
+---
+layout: docs-api
+toc: toc-api-admin.html
+title: GET /projects
+slug:
+  - url: "/docs/api/admin"
+    label: "admin"
+  - url: "/docs/api/admin/methods"
+    label: "methods"
+  - get projects
+---
+
+Get list of projects.
+
+Requires permission: projects.read
+
+### Headers
+
+Header                 | Value
+-----------------------|-------
+`Authorization`        | `Bearer [token]` - if authentication is enabled
+
+### Response
+
+Status Code | Reason              | Response
+------------|---------------------|--------------
+`200`       | Success             | An object with array of project names and active project name
+`400`        | Runtime error       | _none_
+`401`       | Not authorized      | _none_
+
+
+{% highlight json %}
+{
+  "projects": ["PJ00", "PJ01"],
+  "active": "PJ01"
+}
+{% endhighlight %}
diff --git a/docs/api/admin/methods/index.md b/docs/api/admin/methods/index.md
index 059e78a5..f54a2826 100644
--- a/docs/api/admin/methods/index.md
+++ b/docs/api/admin/methods/index.md
@@ -15,6 +15,9 @@ slug:
 [POST/auth/token](post/auth/token)             | Exchange credentials for access token
 [POST/auth/revoke](post/auth/revoke)           | Revoke an access token
 [GET/settings](get/settings)                   | Get the runtime settings
+[GET/projects](get/projects)                   | Get the list of projects
+[POST/projects](post/projects)                 | Create a project
+[DELETE/projects/:id](delete/projects)          | Delete an individual project
 [GET/flows](get/flows)                         | Get the active flow configuration
 [POST/flows](post/flows)                       | Set the active flow configuration
 [POST/flow](post/flow)                         | Add a flow to the active configuration
diff --git a/docs/api/admin/methods/post/projects/index.md b/docs/api/admin/methods/post/projects/index.md
new file mode 100644
index 00000000..14f38e40
--- /dev/null
+++ b/docs/api/admin/methods/post/projects/index.md
@@ -0,0 +1,59 @@
+---
+layout: docs-api
+toc: toc-api-admin.html
+title: POST /projects
+slug:
+  - url: "/docs/api/admin"
+    label: "admin"
+  - url: "/docs/api/admin/methods"
+    label: "methods"
+  - add project
+---
+
+Add a new project.  The created project becomes active one.
+
+Requires permission: projects.write
+
+### Headers
+
+Header                     | Value
+---------------------------|----------
+`Authorization`            | `Bearer [token]` - if authentication is enabled
+`Content-type`             | `application/json`
+
+### Arguments
+
+The request body must be a single project configuration object.
+
+{% highlight json %}
+{
+  "name": "PJ00",
+  "summary": "Summary of PJ00",
+  "path": "path/to/project",
+  "files": {
+    flow: "flow.json"
+  }
+  "credentialSecret": false,
+  "git": {
+    "remotes": {
+      "origin": {
+        "username": "user",
+        "password": "pass"
+      }
+    }
+  }
+}
+{% endhighlight %}
+
+The configuration object must, at a minimum, include the `name`, `files`, and `path` property. `summary` and `credentialSecret` specify summary text and credential secret string (or `false` if encryption disabled).  If git service is used as backend of the project, `git`property represents git remote configuration information.
+
+### Response
+
+Status Code | Reason         | Response
+------------|----------------|--------------
+`204`       | Success        | _none_
+`400`       | Bad request    | An [Error response](/docs/api/admin/errors)
+
+Returns the configuration object of the project.
+
+