Skip to content

Commit a9bac27

Browse files
Members API endpoint, Cloud API Base URL, K8s configuration settings, and Reverse proxy config updates #92
2 parents 2614727 + a121ab4 commit a9bac27

File tree

7 files changed

+360
-58
lines changed

7 files changed

+360
-58
lines changed

api-reference/introduction.mdx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@ sidebarTitle: Introduction
44
description: The Plane API is organized around REST. Our API has predictable resource-oriented URLs, accepts application/json request bodies, returns JSON responses, and uses standard HTTP response codes, authentication, and verbs.
55
---
66

7+
### Base URL
8+
All requests to the Plane Cloud API must be made to the following base URL:
9+
```
10+
https://api.plane.so/
11+
```
12+
This URL should be prefixed to all endpoint paths.
13+
14+
For example, to retrieve all projects in a workspace:
15+
```
16+
GET https://api.plane.so/api/v1/workspaces/:workspace-slug/projects/
17+
```
18+
<Note>
19+
💡 If you're using a self-hosted instance of Plane, your API base URL will differ based on your custom domain and setup.
20+
</Note>
21+
722
### Authentication
823

924
Our APIs use a key for authentication. The API key should be included in the header of each request to verify the client's identity and permissions. The key should be passed as the value of the `X-API-Key` header.
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
---
2+
title: Get project members
3+
sidebarTitle: Project members
4+
description: Retrieve the list of all members in a project.
5+
api: GET /api/v1/workspaces/:workspace-slug/projects/:project_id/members/
6+
---
7+
8+
### Path parameters
9+
10+
<ParamField path="workspace-slug" type="string" required>
11+
The workspace-slug represents the unique workspace identifier for a workspace in Plane. It can be found in the URL. For example, in the URL `https://app.plane.so/my-team/projects/`, the workspace slug is `my-team`.
12+
13+
</ParamField>
14+
<ParamField path="project_id" type="string" required>The unique identifier of the project</ParamField>
15+
16+
### Response
17+
18+
```json
19+
[
20+
{
21+
"id": "00000000-0000-0000-0000-000000000001",
22+
"first_name": "User",
23+
"last_name": "One",
24+
"email": "[email protected]",
25+
"avatar": "",
26+
"avatar_url": null,
27+
"display_name": "user1",
28+
},
29+
{
30+
"id": "00000000-0000-0000-0000-000000000002",
31+
"first_name": "",
32+
"last_name": "",
33+
"email": "[email protected]",
34+
"avatar": "",
35+
"avatar_url": null,
36+
"display_name": "user2",
37+
},
38+
{
39+
"id": "00000000-0000-0000-0000-000000000003",
40+
"first_name": "User",
41+
"last_name": "Three",
42+
"email": "[email protected]",
43+
"avatar": "",
44+
"avatar_url": null,
45+
"display_name": "user3",
46+
}
47+
]
48+
```
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
title: Get workspace members
3+
sidebarTitle: Workspace members
4+
description: Retrieve the list of all members in a workspace.
5+
api: GET /api/v1/workspaces/:workspace-slug/members/
6+
---
7+
8+
### Path parameters
9+
10+
<ParamField path="workspace-slug" type="string" required>
11+
The workspace-slug represents the unique workspace identifier for a workspace in Plane. It can be found in the URL. For example, in the URL `https://app.plane.so/my-team/projects/`, the workspace slug is `my-team`.
12+
13+
</ParamField>
14+
15+
### Response
16+
17+
```json
18+
[
19+
{
20+
"id": "00000000-0000-0000-0000-000000000001",
21+
"first_name": "User",
22+
"last_name": "One",
23+
"email": "[email protected]",
24+
"avatar": "",
25+
"avatar_url": null,
26+
"display_name": "user1",
27+
"role": 15
28+
},
29+
{
30+
"id": "00000000-0000-0000-0000-000000000002",
31+
"first_name": "",
32+
"last_name": "",
33+
"email": "[email protected]",
34+
"avatar": "",
35+
"avatar_url": null,
36+
"display_name": "user2",
37+
"role": 15
38+
},
39+
{
40+
"id": "00000000-0000-0000-0000-000000000003",
41+
"first_name": "User",
42+
"last_name": "Three",
43+
"email": "[email protected]",
44+
"avatar": "",
45+
"avatar_url": null,
46+
"display_name": "user3",
47+
"role": 20
48+
}
49+
]
50+
```

api-reference/members/overview.mdx

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
---
2+
title: Overview
3+
description: APIs to retrieve members of a workspace and the individual projects within it.
4+
---
5+
6+
```http
7+
GET /api/v1/workspaces/:workspace-slug/members/
8+
GET /api/v1/workspaces/:workspace-slug/projects/:project_id/members/
9+
```
10+
11+
## Member object
12+
**Attributes**
13+
14+
* `id` _string_
15+
Unique identifier for the Member
16+
17+
* `first_name` _string_
18+
First name of the Member
19+
20+
* `last_name` _string_
21+
Last name of the Member
22+
23+
* `email` _string_
24+
Email address of the Member
25+
26+
* `avatar` _string_
27+
Optional avatar image file reference
28+
29+
* `avatar_url` _string_
30+
Publicly accessible URL for the avatar image
31+
32+
* `display_name` _string_
33+
Display name shown across the application
34+
35+
* `role` _integer_
36+
Role of the Member in the Workspace or Project
37+
38+
39+
<ResponseExample>
40+
```json JSON
41+
{
42+
"id": "00000000-0000-0000-0000-000000000001",
43+
"first_name": "User",
44+
"last_name": "One",
45+
"email": "[email protected]",
46+
"avatar": "",
47+
"avatar_url": null,
48+
"display_name": "user1",
49+
"role": 15
50+
}
51+
```
52+
</ResponseExample>

mint.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,14 @@
324324
"api-reference/worklogs/update-worklog",
325325
"api-reference/worklogs/delete-worklog"
326326
]
327+
},
328+
{
329+
"group": "Members",
330+
"pages": [
331+
"api-reference/members/overview",
332+
"api-reference/members/get-workspace-members",
333+
"api-reference/members/get-project-members"
334+
]
327335
}
328336
]
329337
},

self-hosting/govern/reverse-proxy.mdx

Lines changed: 38 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,44 @@
11
---
2-
title: Configure external reverse proxy
2+
title: Configure external reverse proxy • Commercial Edition
33
sidebarTitle: External reverse proxy
44
---
55

6-
This guide provides configuration templates for setting up external reverse proxies with Plane using NGINX, Caddy, or Traefik.
6+
This page provides configuration for setting up an external reverse proxy with Plane.
7+
8+
## Plane environment setup
9+
10+
Make sure to update the following environment variables in your plane.env file.
11+
12+
1. Assign free ports for Plane to listen on. Update the following variables with two different unsused ports:
13+
```bash
14+
LISTEN_HTTP_PORT=
15+
LISTEN_HTTPS_PORT=
16+
```
17+
18+
2. Update the SITE_ADDRESS variable to `:80`
19+
```bash
20+
SITE_ADDRESS=:80
21+
```
22+
This is required so that generated links and redirects work correctly behind the proxy:
23+
24+
## Proxy setup
25+
26+
1. Choose the appropriate [configuration template](#configuration-templates) for your reverse proxy.
27+
28+
2. Replace the following placeholders:
29+
- `<domain>`
30+
Your Plane application's domain name.
31+
- `<plane-host-ip>`
32+
The IP address where Plane is hosted.
33+
- `<plane-host-port>`
34+
The port Plane listens on.
35+
36+
3. For Traefik, also update `[email protected]` with your email.
37+
38+
Ensure that your reverse proxy setup follows the template provided, and that the forwarded headers and ports are correctly set to match the environment variable configuration.
39+
40+
41+
## Configuration templates
742

843
All configurations include:
944
- Automatic HTTPS redirection
@@ -14,9 +49,7 @@ All configurations include:
1449
- Caddy: Handles certificates automatically
1550
- Traefik: Uses Let’s Encrypt
1651

17-
## Configuration templates
1852

19-
### NGINX
2053
<Accordion title="NGINX configuration">
2154
```bash
2255
server {
@@ -59,7 +92,7 @@ server {
5992
6093
</Accordion>
6194
62-
### Caddy
95+
6396
<Accordion title="Caddy configuration">
6497
```bash
6598
<domain> {
@@ -94,7 +127,6 @@ server {
94127
95128
</Accordion>
96129
97-
### Traefik
98130
<Accordion title="Traefik configuration">
99131
```bash
100132
entryPoints:
@@ -153,16 +185,3 @@ providers:
153185
```
154186
</Accordion>
155187
156-
## Proxy setup
157-
158-
1. Choose the appropriate [configuration template](#configuration-templates) for your reverse proxy.
159-
160-
2. Replace the following placeholders:
161-
- `<domain>`
162-
Your Plane application's domain name.
163-
- `<plane-host-ip>`
164-
The IP address where Plane is hosted.
165-
- `<plane-host-port>`
166-
The port Plane listens on.
167-
168-
3. For Traefik, also update `[email protected]` with your email.

0 commit comments

Comments
 (0)