You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description: Step-by-step guide for developers to build and integrate an app with Plane.so using OAuth-based authentication and authorization workflow.
2
+
title: Build a Plane App (Beta)
3
+
sidebarTitle: Build a Plane App (Beta)
4
+
description: Step-by-step guide for developers to build and integrate an app with Plane using OAuth-based authentication and authorization workflow.
5
5
---
6
6
7
-
This guide provides step-by-step instructions for developers to build and integrate an app with Plane.so using an OAuth-based authentication and authorization workflow.
7
+
<Note>Plane apps are currently in **Beta**. Please send any feedback to support@plane.so.</Note>
8
8
9
9
## Introduction
10
+
Plane apps (beta) seamlessly integrate tools and services with Plane so you can use them without ever leaving your Workspace. Apps are conveniently available from our [marketplace](https://plane.so/marketplace/integrations), helping you stay focused and productive.
10
11
11
-
Plane.so supports OAuth 2.0 for secure authentication and authorization of third-party applications. This ensures that apps can request and obtain access tokens on behalf of users, enabling seamless integration while maintaining security standards.
12
+
## Why Build a Plane App?
13
+
Plane has a large ecosystem of users, build community integrations to highlight your product or service to the Plane community, or simply build an integration for your own internal requirements.
14
+
15
+
Stop doing manual work. Plane integrations eliminate repetitive tasks like copying updates between tools, creating work items from support tickets, or generating status reports. Instead of spending hours on administrative work, let your integration handle it automatically.
16
+
17
+
Connect everything you already use. Your team probably uses 5-10 different tools. Plane integrations create a unified workflow by connecting your CRM, time tracking, CI/CD pipelines, communication tools, and more. One change in Plane can trigger updates across your entire tech stack.
18
+
19
+
Build exactly what you need. Unlike rigid SaaS platforms, Plane's open-source nature means you can create integrations that fit your specific workflow.
20
+
21
+
### Promote Your Plane Integration
22
+
Contact us to help promote your Plane integration and feature it within blogs and Plane itself: [email protected]
12
23
13
24
## Prerequisites
14
25
15
-
* A Plane.so workspace.
16
-
* Access to Plane.so developer portal.
17
-
* Familiarity with OAuth 2.0 concepts (authorization code flow).
18
-
* A backend server to handle OAuth token exchange.
26
+
- A [Plane](https://app.plane.so) workspace
27
+
- Admin access to your workspace settings
28
+
- Familiarity with OAuth 2.0 concepts (authorization code flow).
29
+
- A backend server to handle OAuth token exchange.
19
30
20
31
## High-Level Workflow
21
32
22
-
1.**Register your app on Plane.so developer portal**
23
-
2.**Implement OAuth authorization code flow**
24
-
3.**Obtain and store access tokens securely**
25
-
4.**Make authenticated API requests to Plane.so**
26
-
5.**Handle token refresh**
33
+
1.[Register your app on Plane developer portal](/guides/build-plane-app/#registering-your-app)
1. Navigate to `https://app.plane.so/<workspace_slug>/settings/applications/`.
33
44
2. Click on the **Build your own** button.
34
45
3. Fill out the form with the required details:
35
46
36
-
***Redirect URIs**: Provide the URIs where Plane.so will send the authorization code.
37
-
***Contact Details**: Add your email or other contact information.
38
-
***Webhook URL Endpoint**: Update this with your service's webhook endpoint. Plane.so will send webhooks for all changes that happen in the installed workspace.
39
-
***Organization Details**: Include contact email, privacy policy URL, terms of service URL, and any other relevant information. This helps Plane.so validate and approve your application for listing in the marketplace.
47
+
-**Redirect URIs**: Provide the URIs where Plane will send the authorization code.
48
+
-**Contact Details**: Add your email or other contact information.
49
+
-**Webhook URL Endpoint**: Update this with your service's webhook endpoint. Plane will send webhooks for all changes that happen in the installed workspace.
50
+
-**Organization Details**: Include contact email, privacy policy URL, terms of service URL, and any other relevant information. This helps Plane validate and approve your application for listing in the marketplace.
51
+
40
52
4. If you're building an agent (with or without using Plane's ADK) capable of performing operations when assigned or mentioned, enable the **Is Mentionable** checkbox during app creation.
41
-
5. Once the app is created, securely store the **Client ID** and **Client Secret**. You will need these credentials to interact with Plane.so's API during the OAuth flow and for making authenticated API requests.
53
+
5. Once the app is created, securely store the **Client ID** and **Client Secret**. You will need these credentials to interact with Plane's API during the OAuth flow and for making authenticated API requests.
42
54
43
55
## Authentication Setup
44
56
45
57
### Generating Consent URL
46
58
47
-
Before handling types of authentication, if your app manages installation, you must generate the consent (authorization) URL to initiate the OAuth flow. Below is a sample implementation:
59
+
Before handling authentication, if your app manages installation, you must generate the consent (authorization) URL to initiate the OAuth flow. Below is a sample Python implementation:
There are two types of authenticated actions your application can perform:
61
73
62
-
1.**User-authorized actions** — Actions performed on behalf of a user after they grant permission to your app via OAuth.
63
-
2.**App-authorized actions** — Actions that the app can perform independently within the workspace where it is installed (such as responding to webhooks or automation triggers).
74
+
1.**User-authorized actions**: Actions performed on behalf of a user after they grant permission to your app via OAuth.
75
+
2.**App-authorized actions**: Actions that the app can perform independently within the workspace where it is installed (such as responding to webhooks or automation triggers).
64
76
65
77
We will describe how to configure and use each type in the following sections.
When the user or admin installs the app, Plane.so will send an `app_installation_id` as part of the callback to the `redirect_uri` provided during consent URL generation. You can use this `app_installation_id` to request a bot token for your app.
81
+
When the app is installed, Plane will send an `app_installation_id` as part of the callback to the `redirect_uri` provided during consent URL generation. You can use this `app_installation_id` to request a bot token for your app.
70
82
71
-
#### Example Pseudo-code
83
+
#### Examples
72
84
73
85
```python
86
+
import base64
87
+
import requests
88
+
74
89
# Prepare basic auth header using client_id and client_secret
In this flow, your app exchanges the `code` received as a query parameter on the callback (to your `redirect_uri`) for an access token and refresh token. The access token is short-lived and must be refreshed using the refresh token when it expires. Both tokens should be securely stored.
98
117
99
-
#### Example Pseudo-code
118
+
#### Examples
100
119
101
120
```python
121
+
import requests
122
+
102
123
# Exchange authorization code for access and refresh tokens
In both user-authorized and app-authorized flows, the `app_installation_id` identifies the app's installation within a specific workspace. It is recommended that developers fetch workspace details after OAuth is successfully completed. Plane.so provides an `app-installation` endpoint that works with both types of tokens.
170
+
In both user-authorized and app-authorized flows, the `app_installation_id` identifies the app's installation within a specific workspace. It is recommended that developers fetch workspace details after OAuth is successfully completed. Plane provides an `app-installation` endpoint that works with both types of tokens.
141
171
142
-
#### Example Pseudo-code
172
+
#### Examples
143
173
144
174
```python
175
+
import requests
176
+
145
177
# Set authorization header with either access token or bot token
146
178
headers = {
147
179
"Authorization": f"Bearer {token}",
148
180
}
149
181
150
182
# Make GET request to fetch installation/workspace details
To simplify the OAuth flow and make it easier to build Plane apps, official SDKs are available:
186
219
187
-
***Node.js**: `npm i @makeplane/plane-node-sdk`
188
-
***Python**: `pip install plane-sdk`
220
+
-**Node.js**: `npm i @makeplane/plane-node-sdk`
221
+
-**Python**: `pip install plane-sdk`
189
222
190
223
These SDKs provide helpers for OAuth and other common tasks, allowing developers to implement the above flows efficiently.
191
224
192
225
## Listing Your App on Plane Marketplace
193
226
194
227
Apps built using the OAuth flow can be listed on the Plane Marketplace: [https://plane.so/marketplace/integrations](https://plane.so/marketplace/integrations)
0 commit comments