RFCs are a way for Atlassian to share what we’re working on with our valued developer community.
It’s a document for building shared understanding of a topic. It expresses a technical solution, but can also communicate how it should be built or even document standards. The most important aspect of an RFC is that a written specification facilitates feedback and drives consensus. It is not a tool for approving or committing to ideas, but more so a collaborative practice to shape an idea and to find serious flaws early.
Please respect our community guidelines: keep it welcoming and safe by commenting on the idea not the people (especially the author); keep it tidy by keeping on topic; empower the community by keeping comments constructive. Thanks!
Project Summary
We’re replacing Trello’s current authorization mechanism with OAuth 2.0 (3LO) (also known as “three-legged OAuth” or “authorization code grants”). Along with this change we’re introducing new scopes, resource restrictions, and token expiry for greater security.
We will start by adding support for OAuth 2.0 then announce a deprecation of the soon-to-be known as ‘legacy’ Trello User Token and OAuth 1.0 mechanisms. We are not announcing a deprecation at this time so this RFC will not have details on the enforcement policy or a dates for the deprecation.
- Publish: 14-03-2025
- Discuss: 11-04-2025
- Resolve: 30-09-2025
Problem
Trello’s API authorization mechanisms lack the controls and security capabilities that our customers expect.
Today’s Trello User Tokens and OAuth 1.0
- allow for tokens that do not expire
- have very coarse grained scopes
- can not be constrained to specific workspaces
- can be supplied within query params
The proposed solution will resolve all of these deficiencies in Trello’s current authorization mechanism.
Proposed Solution
Authorization
We’re adopting OAuth 2.0 - the industry standard protocol for authorization. OAuth 2.0 is already being used by other products at Atlassian.
Authorization Code Grant
All Trello OAuth 2.0 authorization will be performed using Authorization Code Grants.
PKCE
Proof Key for Code Exchange (PKCE), an extension to the Authorization Code flow, will be required to prevent CSRF and authorization code injection attacks.
All Trello OAuth2 authorization will require PKCE.
Refresh Token
Today Trello tokens have an optional expiry. Trello OAuth2 tokens will always enforce expiry. The Authorization Code Grant will issue refresh tokens alongside short-lived access tokens. The refresh token will allow power-ups to request a fresh access token and refresh token without requiring action or approval by the user. Refresh tokens are valid until they are explicitly revoked or expired.
Access tokens expire after 1 hour, refresh tokens expire after 30 days.
HTTP Request with Bearer Token
Trello’s API will accept access tokens as bearer token via the HTTP Authorization header.
Example:
GET /1/member/me HTTP/1.1
Host: trello.com
Authorization: Bearer <access_token>
Scopes
In addition to OAuth 2.0 we are also introducing new scopes. These scopes provide you with more granularity to specify only the permissions your power-up needs and offers our customers greater confidence that their data is protected.
The new scopes include:
read:board:trello
- Read list fields
- Read card fields and data. This includes:
- checklists
- comments
- attachments
- emojis
- stickers
- dates
- labels
read:organization:trello
- Read workspace fields and settings
- Read workspace boards and memberships
- Read all power-ups managed by the consenting user
read:enterprise:trello
- Read enterprises fields and settings
write:board:trello
- Create and update all list and card level data on boards.
- Update board preferences on permissions level, comments, invitations, self join, etc.
- Make comments on behalf of the user
- Delete boards
- Delete lists and cards
write:organization:trello
- Create and update workspaces
- Delete workspaces
- Update workspace permissions level preferences
- Update Power-ups on behalf of the user
write:enterprise:trello
- Update and manage Enterprises
read:member:trello
- Read the user’s email address
- See user’s board, workspace, and enterprise memberships
- See public name and avatar
write:member:trello
- Add the user to self-join boards & organizations
- Upload member-level assets: custom stickers, emojis, board backgrounds
Once the granularity of these scopes are agreed upon, a complete API mapping will be made available in Trello’s REST API documentation.
Resource Restrictions
Power-ups are installed on a workspace. When a user authorizes a power-up they do so within the context of the workspace where the power-up is installed. The resulting OAuth 2.0 access_token
is restricted such that only resources within the workspace are accessible. This restriction is applied in addition to scopes which are described above.
Integrations which are installed outside of the power-up installation flow will have no such workspace restriction.
Further Changes
We will be deprecating Trello’s existing auth mechanisms at a future date. This includes both token based authorization using 1/authorize
as well as OAuth 1.0.
Once Trello has launched OAuth 2.0 there will be another announcement detailing the deprecation timeline.
Asks
While we appreciate any reactions you have to this RFC, we’re especially interested in learning more about:
- Do you see any challenges that the proposed changes to authorization, scopes, resource restrictions, and / or token expiry fail to address?
- Do you have concerns about token expiry?
- Would you like us to introduce any other scopes, and why?