Hello!
We’re making changes to simplify and standardize the way privacy and permissions are managed in Asana, starting with projects! This post outlines the Asana API changes coming over the next 6-9 months to support this new functionality.
Who is Impacted
You might be impacted or interested in these updates if your application reads or updates a user’s access to an Asana project.
For example:
- Adding or removing users from a project
- Checking to see what access level a user has to a project
What’s new
Access Levels for projects
Asana is introducing Access Levels for project permissions. Today, each project member has a write_access
. Going forward, members will have an Access Level expressed as an access_level
over the API. Here are the access levels and their definitions:
Going forward: access_level |
Previously: write_access |
Access |
---|---|---|
admin |
full_write |
Can change the project’s content and structure |
editor |
no equivalent | Can change the project’s content, but not its structure |
commenter |
comment_only |
Can comment on the project’s content |
viewer |
no equivalent | Can only view the project’s content |
The Individual user project permissions section of this guide has more complete definitions of the editor
role which is now available. The viewer
role will be available later this year.
Default Access Level for Projects
Previously, admin
(write_access: full_write
) was the default permission when adding a new member to a project. The new default permission will be the editor
Access Level. If you add a member using the POST /projects/{project_gid}/addMembers
endpoint, they will be given the editor
access level.
Right now, there is not a way to modify this project permission level over the API, but this support will be added by the beginning of 2024.
Teams as members
Today, only users can be members of a project. Later in the year, we will support the ability for multiple teams to be members of a project. Teams can be given the same Access Levels as defined above. Each member of that team will be given access to the project and inherit that access level. As members join or leave a team, they will gain or lose access accordingly.
These permissions will be additive meaning that if individual and team membership access levels conflict, the higher access level is granted.
API interface changes
New /memberships interface
Once all of these changes are rolled out, Asana’s /memberships endpoints will be the preferred way to access and modify project memberships.
[
{
"gid": "69434",
"resource_type": "membership",
"resource_subtype": "project_membership",
"member": {
"gid": "93638",
"resource_type": "user",
"name": "Greg Sanchez"
},
"parent": {
"gid": "12345",
"resource_type": "project",
"name": "Upcoming Product Launches",
"owner": {
"gid": "37204",
"resource_type": "user",
"name": "Rainbow Randolph"
}
},
"access_level": "admin"
},
{
"gid": "13713",
"resource_type": "membership",
"resource_subtype": "project_membership",
"member": {
"gid": "56789",
"resource_type": "team",
"name": "Marketing Team"
},
"parent": {
"gid": "12345",
"resource_type": "project",
"name": "Upcoming Product Launches",
"owner": {
"gid": "37204",
"resource_type": "user",
"name": "Rainbow Randolph"
}
},
"access_level": "commenter"
}
]
Deprecating project_memberships endpoints
Once we release new membership endpoints, we will begin a deprecation cycle for existing project_memberships
endpoints and endpoint and project endpoints which add or remove members.
Existing endpoint | New endpoint |
---|---|
GET /projects/{project_gid}/project_memberships |
GET /memberships |
GET /project_memberships/{project_gid} |
GET /memberships/{gid} |
POST /projects/{project_gid}/addMembers |
POST /memberships |
POST /projects/{project_gid}/removeMembers |
DELETE /memberships |
Reason for change
We want to give customers more data access control in Asana. Access Levels will simplify Asana’s permissions model and make it easier to understand who has access to a given project. Over time, other objects in Asana like portfolios and goals will transition to Access Levels.
Teams as members will further simplify access control and make it easier to manage access. When combined with Asana’s identity provider integrations, many access control decisions can be automated over the lifecycle of a user. For example, as an employee joins a team or moves between teams, their Asana access will update to reflect the change.
Timeline
Here is a rough timeline we are targeting for these changes. We will post updates in this thread. You can subscribe to this thread for updates.
Available now / July 2023
editor
Access Level for projectseditor
is the default Access Level for a projectGET /memberships
endpoint for projects (witheditor
Access Level support) - by the end of the month
March 2024
- Project support for
POST, PUT, DELETE /memberships
endpoints (viewer
access level may not yet be generally available) - Deprecation period begins
Mid 2024
viewer
Access Level for projects is rolling out and supported through/memberships
endpoints- Teams as project members
Thanks! Let us know if you have questions or thoughts for us!
John Baldo
Asana API Team