API Changelog Directory

Asana API Changelog

Productivity

The Asana REST API — tasks, projects, workspaces, goals and portfolios.

Asana docs ↗Official OpenAPI spec ↗Last checked Aug 18, 20264 changes tracked
Watching

Get emailed when Asana API changes

We already watch this spec — add your email and we'll alert you on every change, breaking ones first. Free, no credit card, one click to stop.

Change history

Rebuilt automatically from the official OpenAPI spec. Every entry is a real diff — nothing is hand-written.

version 1.01.0

ChangeTypeSeverityWhy it matters
GET /custom_types/{custom_type_gid}security security requirement addedPotentialEndpoint: security requirement added (oauth2)
GET /custom_types/{custom_type_gid}security security requirement removedOKEndpoint: security requirement removed (oauth2)
GET /custom_types/{custom_type_gid}security security scope addedPotentialEndpoint: scope added to "oauth2": custom_types:read
GET /custom_types/{custom_type_gid}description updatedOKSummary or description text changed. No contract impact.

version 1.01.0

ChangeTypeSeverityWhy it matters
GET /allocations/{allocation_gid}parameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
GET /allocations/{allocation_gid}response 200 property addedOKResponse 200 field "data.allOf[1].parent.resource_subtype": Added (optional)
PUT /allocations/{allocation_gid}parameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
PUT /allocations/{allocation_gid}response 200 property addedOKResponse 200 field "data.allOf[1].parent.resource_subtype": Added (optional)
GET /allocationsparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
GET /allocationsresponse 200 property addedOKResponse 200 field "data[].allOf[1].parent.resource_subtype": Added (optional)
POST /allocationsparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
POST /allocationsresponse 201 property addedOKResponse 201 field "data.allOf[1].parent.resource_subtype": Added (optional)
GET /budgetsresponse 200 property addedOKResponse 200 field "data[].allOf[1].parent.allOf[0].resource_subtype": Added (optional)
POST /budgetsresponse 201 property addedOKResponse 201 field "data.allOf[1].parent.allOf[0].resource_subtype": Added (optional)
GET /budgets/{budget_gid}parameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
GET /budgets/{budget_gid}response 200 property addedOKResponse 200 field "data.allOf[1].parent.allOf[0].resource_subtype": Added (optional)
PUT /budgets/{budget_gid}parameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
PUT /budgets/{budget_gid}response 200 property addedOKResponse 200 field "data.allOf[1].parent.allOf[0].resource_subtype": Added (optional)
GET /projects/{project_gid}/custom_field_settingsparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype, project.resource_subtype
GET /projects/{project_gid}/custom_field_settingsresponse 200 property addedOKResponse 200 field "data[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /portfolios/{portfolio_gid}/custom_field_settingsparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype, project.resource_subtype
GET /portfolios/{portfolio_gid}/custom_field_settingsresponse 200 property addedOKResponse 200 field "data[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /goals/{goal_gid}/custom_field_settingsparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype, project.resource_subtype
GET /goals/{goal_gid}/custom_field_settingsresponse 200 property addedOKResponse 200 field "data[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /teams/{team_gid}/custom_field_settingsparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype, project.resource_subtype
GET /teams/{team_gid}/custom_field_settingsresponse 200 property addedOKResponse 200 field "data[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /custom_typesparameter addedOKNew optional parameter "workspace" (in query). Existing requests keep working.
GET /custom_typesparameter "project" parameter became optionalOKParameter "project" changed (parameter became optional).
GET /custom_typesparameter "opt_fields" enum values addedOKAdded: asana_created_type_identifier
GET /custom_typesresponse 200 property addedOKResponse 200 field "data[].allOf[0].asana_created_type_identifier": Added (optional)
GET /custom_typessecurity security requirement addedPotentialEndpoint: security requirement added (oauth2)
GET /custom_typessecurity security requirement removedOKEndpoint: security requirement removed (oauth2)
GET /custom_typessecurity security scope addedPotentialEndpoint: scope added to "oauth2": custom_types:read
GET /custom_typesdescription updatedOKSummary or description text changed. No contract impact.
GET /custom_types/{custom_type_gid}parameter "opt_fields" enum values addedOKAdded: asana_created_type_identifier
GET /custom_types/{custom_type_gid}response 200 property addedOKResponse 200 field "data.allOf[0].asana_created_type_identifier": Added (optional)
GET /goal_relationships/{goal_relationship_gid}parameter "opt_fields" enum values addedOKAdded: supporting_resource.resource_subtype
GET /goal_relationships/{goal_relationship_gid}response 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].supporting_resource.allOf[0].resource_subtype": Added (optional)
PUT /goal_relationships/{goal_relationship_gid}parameter "opt_fields" enum values addedOKAdded: supporting_resource.resource_subtype
PUT /goal_relationships/{goal_relationship_gid}request body property addedOKAdded (optional)
PUT /goal_relationships/{goal_relationship_gid}response 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].supporting_resource.allOf[0].resource_subtype": Added (optional)
GET /goal_relationshipsparameter "opt_fields" enum values addedOKAdded: supporting_resource.resource_subtype
GET /goal_relationshipsresponse 200 property addedOKResponse 200 field "data[].supporting_resource.allOf[0].resource_subtype": Added (optional)
POST /goals/{goal_gid}/addSupportingRelationshipparameter "opt_fields" enum values addedOKAdded: supporting_resource.resource_subtype
POST /goals/{goal_gid}/addSupportingRelationshipresponse 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].supporting_resource.allOf[0].resource_subtype": Added (optional)
GET /goals/{goal_gid}parameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
GET /goals/{goal_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
PUT /goals/{goal_gid}parameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
PUT /goals/{goal_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /goalsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
POST /goalsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
POST /goalsresponse 201 property addedOKResponse 201 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /goals/{goal_gid}/setMetricparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
POST /goals/{goal_gid}/setMetricresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /goals/{goal_gid}/setMetricCurrentValueparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
POST /goals/{goal_gid}/setMetricCurrentValueresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /goals/{goal_gid}/addFollowersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
POST /goals/{goal_gid}/addFollowersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /goals/{goal_gid}/removeFollowersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
POST /goals/{goal_gid}/removeFollowersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /goals/{goal_gid}/parentGoalsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype
POST /goals/{goal_gid}/addCustomFieldSettingresponse 200 property addedOKResponse 200 field "data.allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /jobs/{job_gid}parameter "opt_fields" enum values addedOKAdded: new_portfolio.resource_subtype, new_project.resource_subtype
GET /jobs/{job_gid}response 200 property addedOKResponse 200 field "data.new_portfolio.resource_subtype": Added (optional)
GET /jobs/{job_gid}response 200 property addedOKResponse 200 field "data.new_project.resource_subtype": Added (optional)
GET /membershipsresponse 200 property addedOKResponse 200 field "data[].anyOf[1].allOf[0].parent.resource_subtype": Added (optional)
GET /membershipsresponse 200 property addedOKResponse 200 field "data[].anyOf[2].allOf[0].parent.resource_subtype": Added (optional)
GET /membershipsresponse 200 property addedOKResponse 200 field "data[].anyOf[4].parent.asana_created_type_identifier": Added (optional)
POST /membershipsresponse 201 property addedOKResponse 201 field "data.anyOf[1].allOf[0].parent.resource_subtype": Added (optional)
POST /membershipsresponse 201 property addedOKResponse 201 field "data.anyOf[2].parent.resource_subtype": Added (optional)
POST /membershipsresponse 201 property addedOKResponse 201 field "data.anyOf[4].parent.asana_created_type_identifier": Added (optional)
GET /memberships/{membership_gid}response 200 property addedOKResponse 200 field "data.anyOf[1].allOf[0].parent.resource_subtype": Added (optional)
GET /memberships/{membership_gid}response 200 property addedOKResponse 200 field "data.anyOf[2].parent.resource_subtype": Added (optional)
GET /memberships/{membership_gid}response 200 property addedOKResponse 200 field "data.anyOf[4].parent.asana_created_type_identifier": Added (optional)
PUT /memberships/{membership_gid}response 200 property addedOKResponse 200 field "data.anyOf[1].allOf[0].parent.resource_subtype": Added (optional)
PUT /memberships/{membership_gid}response 200 property addedOKResponse 200 field "data.anyOf[2].parent.resource_subtype": Added (optional)
PUT /memberships/{membership_gid}response 200 property addedOKResponse 200 field "data.anyOf[4].parent.asana_created_type_identifier": Added (optional)
GET /portfolio_membershipsparameter "opt_fields" enum values addedOKAdded: portfolio.resource_subtype
GET /portfolio_membershipsresponse 200 property addedOKResponse 200 field "data[].portfolio.resource_subtype": Added (optional)
GET /portfolio_memberships/{portfolio_membership_gid}parameter "opt_fields" enum values addedOKAdded: portfolio.resource_subtype
GET /portfolio_memberships/{portfolio_membership_gid}response 200 property addedOKResponse 200 field "data.portfolio.resource_subtype": Added (optional)
GET /portfolios/{portfolio_gid}/portfolio_membershipsparameter "opt_fields" enum values addedOKAdded: portfolio.resource_subtype
GET /portfolios/{portfolio_gid}/portfolio_membershipsresponse 200 property addedOKResponse 200 field "data[].portfolio.resource_subtype": Added (optional)
GET /portfoliosparameter addedOKNew optional parameter "custom_type" (in query). Existing requests keep working.
GET /portfoliosparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /portfoliosresponse 200 property addedOKResponse 200 field "data[].resource_subtype": Added (optional)
POST /portfoliosparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /portfoliosrequest body property addedOKAdded (optional)
POST /portfoliosrequest body property addedOKAdded (optional)
POST /portfoliosresponse 201 property addedOKResponse 201 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /portfoliosresponse 201 property addedOKResponse 201 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /portfoliosresponse 201 property addedOKResponse 201 field "data.allOf[1].custom_type": Added (optional)
GET /portfolios/{portfolio_gid}parameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /portfolios/{portfolio_gid}response 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
GET /portfolios/{portfolio_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /portfolios/{portfolio_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
PUT /portfolios/{portfolio_gid}parameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
PUT /portfolios/{portfolio_gid}request body property addedOKAdded (optional)
PUT /portfolios/{portfolio_gid}request body property addedOKAdded (optional)
PUT /portfolios/{portfolio_gid}response 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
PUT /portfolios/{portfolio_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
PUT /portfolios/{portfolio_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
GET /portfolios/{portfolio_gid}/itemsresponse 200 property addedOKResponse 200 field "data[].anyOf[0].resource_subtype": Added (optional)
GET /portfolios/{portfolio_gid}/itemsresponse 200 property addedOKResponse 200 field "data[].anyOf[1].resource_subtype": Added (optional)
POST /portfolios/{portfolio_gid}/addCustomFieldSettingresponse 200 property addedOKResponse 200 field "data.allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /portfolios/{portfolio_gid}/addMembersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /portfolios/{portfolio_gid}/addMembersresponse 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /portfolios/{portfolio_gid}/addMembersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /portfolios/{portfolio_gid}/addMembersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
POST /portfolios/{portfolio_gid}/removeMembersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /portfolios/{portfolio_gid}/removeMembersresponse 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /portfolios/{portfolio_gid}/removeMembersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_field_settings[].allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /portfolios/{portfolio_gid}/removeMembersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
POST /portfolios/{portfolio_gid}/duplicateparameter "opt_fields" enum values addedOKAdded: new_portfolio.resource_subtype, new_project.resource_subtype
POST /portfolios/{portfolio_gid}/duplicateresponse 201 property addedOKResponse 201 field "data.new_portfolio.resource_subtype": Added (optional)
POST /portfolios/{portfolio_gid}/duplicateresponse 201 property addedOKResponse 201 field "data.new_project.resource_subtype": Added (optional)
GET /project_briefs/{project_brief_gid}parameter "opt_fields" enum values addedOKAdded: project.resource_subtype
GET /project_briefs/{project_brief_gid}response 200 property addedOKResponse 200 field "data.allOf[1].project.allOf[0].resource_subtype": Added (optional)
PUT /project_briefs/{project_brief_gid}parameter "opt_fields" enum values addedOKAdded: project.resource_subtype
PUT /project_briefs/{project_brief_gid}response 200 property addedOKResponse 200 field "data.allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /projects/{project_gid}/project_briefsparameter "opt_fields" enum values addedOKAdded: project.resource_subtype
POST /projects/{project_gid}/project_briefsresponse 201 property addedOKResponse 201 field "data.allOf[1].project.allOf[0].resource_subtype": Added (optional)
GET /project_memberships/{project_membership_gid}parameter "opt_fields" enum values addedOKAdded: parent.resource_subtype, project.resource_subtype
GET /project_memberships/{project_membership_gid}response 200 property addedOKResponse 200 field "data.allOf[0].parent.resource_subtype": Added (optional)
GET /projects/{project_gid}/project_membershipsparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
GET /projects/{project_gid}/project_membershipsresponse 200 property addedOKResponse 200 field "data[].parent.resource_subtype": Added (optional)
GET /project_portfolio_settings/{project_portfolio_setting_gid}response 200 property addedOKResponse 200 field "data.allOf[0].project.allOf[0].resource_subtype": Added (optional)
GET /project_portfolio_settings/{project_portfolio_setting_gid}response 200 property addedOKResponse 200 field "data.allOf[0].portfolio.allOf[0].resource_subtype": Added (optional)
PUT /project_portfolio_settings/{project_portfolio_setting_gid}response 200 property addedOKResponse 200 field "data.allOf[0].project.allOf[0].resource_subtype": Added (optional)
PUT /project_portfolio_settings/{project_portfolio_setting_gid}response 200 property addedOKResponse 200 field "data.allOf[0].portfolio.allOf[0].resource_subtype": Added (optional)
GET /projects/{project_gid}/project_portfolio_settingsresponse 200 property addedOKResponse 200 field "data[].project.allOf[0].resource_subtype": Added (optional)
GET /projects/{project_gid}/project_portfolio_settingsresponse 200 property addedOKResponse 200 field "data[].portfolio.allOf[0].resource_subtype": Added (optional)
GET /portfolios/{portfolio_gid}/project_portfolio_settingsresponse 200 property addedOKResponse 200 field "data[].project.allOf[0].resource_subtype": Added (optional)
GET /portfolios/{portfolio_gid}/project_portfolio_settingsresponse 200 property addedOKResponse 200 field "data[].portfolio.allOf[0].resource_subtype": Added (optional)
POST /project_templates/{project_template_gid}/instantiateProjectparameter "opt_fields" enum values addedOKAdded: new_portfolio.resource_subtype, new_project.resource_subtype
POST /project_templates/{project_template_gid}/instantiateProjectresponse 201 property addedOKResponse 201 field "data.new_portfolio.resource_subtype": Added (optional)
POST /project_templates/{project_template_gid}/instantiateProjectresponse 201 property addedOKResponse 201 field "data.new_project.resource_subtype": Added (optional)
GET /projectsparameter addedOKNew optional parameter "custom_type" (in query). Existing requests keep working.
GET /projectsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /projectsresponse 200 property addedOKResponse 200 field "data[].resource_subtype": Added (optional)
POST /projectsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /projectsrequest body property addedOKAdded (optional)
POST /projectsrequest body property addedOKAdded (optional)
POST /projectsresponse 201 property addedOKResponse 201 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /projectsresponse 201 property addedOKResponse 201 field "data.allOf[1].custom_type": Added (optional)
GET /projects/{project_gid}parameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /projects/{project_gid}response 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
GET /projects/{project_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
PUT /projects/{project_gid}parameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
PUT /projects/{project_gid}request body property addedOKAdded (optional)
PUT /projects/{project_gid}request body property addedOKAdded (optional)
PUT /projects/{project_gid}response 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
PUT /projects/{project_gid}response 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
POST /projects/{project_gid}/duplicateparameter "opt_fields" enum values addedOKAdded: new_portfolio.resource_subtype, new_project.resource_subtype
POST /projects/{project_gid}/duplicateresponse 201 property addedOKResponse 201 field "data.new_portfolio.resource_subtype": Added (optional)
POST /projects/{project_gid}/duplicateresponse 201 property addedOKResponse 201 field "data.new_project.resource_subtype": Added (optional)
GET /tasks/{task_gid}/projectsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /tasks/{task_gid}/projectsresponse 200 property addedOKResponse 200 field "data[].resource_subtype": Added (optional)
GET /teams/{team_gid}/projectsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /teams/{team_gid}/projectsresponse 200 property addedOKResponse 200 field "data[].resource_subtype": Added (optional)
POST /teams/{team_gid}/projectsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /teams/{team_gid}/projectsrequest body property addedOKAdded (optional)
POST /teams/{team_gid}/projectsrequest body property addedOKAdded (optional)
POST /teams/{team_gid}/projectsresponse 201 property addedOKResponse 201 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /teams/{team_gid}/projectsresponse 201 property addedOKResponse 201 field "data.allOf[1].custom_type": Added (optional)
GET /workspaces/{workspace_gid}/projectsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /workspaces/{workspace_gid}/projectsresponse 200 property addedOKResponse 200 field "data[].resource_subtype": Added (optional)
POST /workspaces/{workspace_gid}/projectsparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /workspaces/{workspace_gid}/projectsrequest body property addedOKAdded (optional)
POST /workspaces/{workspace_gid}/projectsrequest body property addedOKAdded (optional)
POST /workspaces/{workspace_gid}/projectsresponse 201 property addedOKResponse 201 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /workspaces/{workspace_gid}/projectsresponse 201 property addedOKResponse 201 field "data.allOf[1].custom_type": Added (optional)
GET /workspaces/{workspace_gid}/projects/searchparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
GET /workspaces/{workspace_gid}/projects/searchresponse 200 property addedOKResponse 200 field "data[].resource_subtype": Added (optional)
POST /projects/{project_gid}/addCustomFieldSettingparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype, project.resource_subtype
POST /projects/{project_gid}/addCustomFieldSettingresponse 200 property addedOKResponse 200 field "data.allOf[1].project.allOf[0].resource_subtype": Added (optional)
POST /projects/{project_gid}/addMembersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /projects/{project_gid}/addMembersresponse 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /projects/{project_gid}/addMembersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
POST /projects/{project_gid}/removeMembersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /projects/{project_gid}/removeMembersresponse 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /projects/{project_gid}/removeMembersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
POST /projects/{project_gid}/addFollowersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /projects/{project_gid}/addFollowersresponse 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /projects/{project_gid}/addFollowersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
POST /projects/{project_gid}/removeFollowersparameter "opt_fields" enum values addedOKAdded: custom_field_settings.parent.resource_subtype, custom_field_settings.project.resource_subtype, custom_type, custom_type.asana_created_type_identifier, custom_type.name, resource_subtype
POST /projects/{project_gid}/removeFollowersresponse 200 property addedOKResponse 200 field "data.allOf[0].allOf[0].resource_subtype": Added (optional)
POST /projects/{project_gid}/removeFollowersresponse 200 property addedOKResponse 200 field "data.allOf[1].custom_type": Added (optional)
POST /projects/{project_gid}/saveAsTemplateparameter "opt_fields" enum values addedOKAdded: new_portfolio.resource_subtype, new_project.resource_subtype
POST /projects/{project_gid}/saveAsTemplateresponse 201 property addedOKResponse 201 field "data.new_portfolio.resource_subtype": Added (optional)
POST /projects/{project_gid}/saveAsTemplateresponse 201 property addedOKResponse 201 field "data.new_project.resource_subtype": Added (optional)
GET /ratesresponse 200 property addedOKResponse 200 field "data[].anyOf[0].parent.resource_subtype": Added (optional)
POST /ratesparameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
POST /ratesresponse 201 property addedOKResponse 201 field "data.allOf[0].parent.resource_subtype": Added (optional)
GET /rates/{rate_gid}parameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
GET /rates/{rate_gid}response 200 property addedOKResponse 200 field "data.allOf[0].parent.resource_subtype": Added (optional)
PUT /rates/{rate_gid}parameter "opt_fields" enum values addedOKAdded: parent.resource_subtype
PUT /rates/{rate_gid}response 200 property addedOKResponse 200 field "data.allOf[0].parent.resource_subtype": Added (optional)
GET /sections/{section_gid}parameter "opt_fields" enum values addedOKAdded: project.resource_subtype, projects.resource_subtype
GET /sections/{section_gid}response 200 property addedOKResponse 200 field "data.allOf[1].project.resource_subtype": Added (optional)
PUT /sections/{section_gid}parameter "opt_fields" enum values addedOKAdded: project.resource_subtype, projects.resource_subtype
PUT /sections/{section_gid}response 200 property addedOKResponse 200 field "data.allOf[1].project.resource_subtype": Added (optional)
GET /projects/{project_gid}/sectionsparameter "opt_fields" enum values addedOKAdded: project.resource_subtype, projects.resource_subtype
POST /projects/{project_gid}/sectionsparameter "opt_fields" enum values addedOKAdded: project.resource_subtype, projects.resource_subtype

Showing the first 200 changes of this update.

version 1.01.0

ChangeTypeSeverityWhy it matters
GET /jobs/{job_gid}description updatedOKSummary or description text changed. No contract impact.
GET /portfolios/{portfolio_gid}description updatedOKSummary or description text changed. No contract impact.
GET /projects/{project_gid}description updatedOKSummary or description text changed. No contract impact.
GET /tasks/{task_gid}/projectsparameter addedOKNew optional parameter "include_inherited_projects" (in query). Existing requests keep working.
GET /projects/{project_gid}/task_countsdescription updatedOKSummary or description text changed. No contract impact.
GET /tasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasksresponse 201 property addedOKResponse 201 field "data.allOf[1].effective_memberships": Added (optional)
GET /tasks/{task_gid}parameter "opt_fields" enum values addedOKAdded: effective_memberships
GET /tasks/{task_gid}response 200 property addedOKResponse 200 field "data.allOf[1].effective_memberships": Added (optional)
PUT /tasks/{task_gid}parameter "opt_fields" enum values addedOKAdded: effective_memberships
PUT /tasks/{task_gid}response 200 property addedOKResponse 200 field "data.allOf[1].effective_memberships": Added (optional)
GET /projects/{project_gid}/tasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
GET /sections/{section_gid}/tasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
GET /tags/{tag_gid}/tasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
GET /user_task_lists/{user_task_list_gid}/tasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
GET /tasks/{task_gid}/subtasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasks/{task_gid}/subtasksparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasks/{task_gid}/subtasksresponse 201 property addedOKResponse 201 field "data.allOf[1].effective_memberships": Added (optional)
POST /tasks/{task_gid}/setParentparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasks/{task_gid}/setParentresponse 200 property addedOKResponse 200 field "data.allOf[1].effective_memberships": Added (optional)
GET /tasks/{task_gid}/dependenciesparameter "opt_fields" enum values addedOKAdded: effective_memberships
GET /tasks/{task_gid}/dependentsparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasks/{task_gid}/addFollowersparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasks/{task_gid}/addFollowersresponse 200 property addedOKResponse 200 field "data.allOf[1].effective_memberships": Added (optional)
POST /tasks/{task_gid}/removeFollowersparameter "opt_fields" enum values addedOKAdded: effective_memberships
POST /tasks/{task_gid}/removeFollowersresponse 200 property addedOKResponse 200 field "data.allOf[1].effective_memberships": Added (optional)
GET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}response 200 property addedOKResponse 200 field "data.allOf[1].effective_memberships": Added (optional)
GET /workspaces/{workspace_gid}/tasks/searchparameter "projects.any" modifiedOKdescription changed
GET /workspaces/{workspace_gid}/tasks/searchparameter "opt_fields" enum values addedOKAdded: effective_memberships
GET /time_tracking_entries/{time_tracking_entry_gid}description updatedOKSummary or description text changed. No contract impact.
components/schemas/TaskResponse.(root).allOf[1].effective_membershipsproperty addedOKAdded
components/schemas/EffectiveTaskMembershipschema addedOKShared schema "EffectiveTaskMembership" was added.

version 1.01.0

ChangeTypeSeverityWhy it matters
POST /tasksrequest body type changedBreakingobject → (none)
POST /tasksrequest body property removedPotentialRemoved (was optional)
POST /tasksrequest body property removedPotentialRemoved (was optional)
POST /tasksrequest body property removedPotentialRemoved (was optional)
POST /tasksrequest body allOf addedPotentialallOf added with 2 schema(s)
POST /tasksresponse 201 type changedBreakingResponse 201 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
POST /tasksresponse 201 property removedPotentialResponse 201 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
POST /tasksresponse 201 property removedPotentialResponse 201 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
POST /tasksresponse 201 property removedPotentialResponse 201 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
POST /tasksresponse 201 allOf addedOKResponse 201 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
GET /tasks/{task_gid}response 200 type changedBreakingResponse 200 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
GET /tasks/{task_gid}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
GET /tasks/{task_gid}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
GET /tasks/{task_gid}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
GET /tasks/{task_gid}response 200 allOf addedOKResponse 200 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
GET /tasks/{task_gid}description updatedOKSummary or description text changed. No contract impact.
PUT /tasks/{task_gid}request body type changedBreakingobject → (none)
PUT /tasks/{task_gid}request body property removedPotentialRemoved (was optional)
PUT /tasks/{task_gid}request body property removedPotentialRemoved (was optional)
PUT /tasks/{task_gid}request body property removedPotentialRemoved (was optional)
PUT /tasks/{task_gid}request body allOf addedPotentialallOf added with 2 schema(s)
PUT /tasks/{task_gid}response 200 type changedBreakingResponse 200 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
PUT /tasks/{task_gid}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
PUT /tasks/{task_gid}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
PUT /tasks/{task_gid}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
PUT /tasks/{task_gid}response 200 allOf addedOKResponse 200 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
POST /tasks/{task_gid}/subtasksrequest body type changedBreakingobject → (none)
POST /tasks/{task_gid}/subtasksrequest body property removedPotentialRemoved (was optional)
POST /tasks/{task_gid}/subtasksrequest body property removedPotentialRemoved (was optional)
POST /tasks/{task_gid}/subtasksrequest body property removedPotentialRemoved (was optional)
POST /tasks/{task_gid}/subtasksrequest body allOf addedPotentialallOf added with 2 schema(s)
POST /tasks/{task_gid}/subtasksresponse 201 type changedBreakingResponse 201 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
POST /tasks/{task_gid}/subtasksresponse 201 property removedPotentialResponse 201 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
POST /tasks/{task_gid}/subtasksresponse 201 property removedPotentialResponse 201 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
POST /tasks/{task_gid}/subtasksresponse 201 property removedPotentialResponse 201 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
POST /tasks/{task_gid}/subtasksresponse 201 allOf addedOKResponse 201 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
POST /tasks/{task_gid}/setParentresponse 200 type changedBreakingResponse 200 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
POST /tasks/{task_gid}/setParentresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
POST /tasks/{task_gid}/setParentresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
POST /tasks/{task_gid}/setParentresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
POST /tasks/{task_gid}/setParentresponse 200 allOf addedOKResponse 200 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
POST /tasks/{task_gid}/addFollowersresponse 200 type changedBreakingResponse 200 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
POST /tasks/{task_gid}/addFollowersresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
POST /tasks/{task_gid}/addFollowersresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
POST /tasks/{task_gid}/addFollowersresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
POST /tasks/{task_gid}/addFollowersresponse 200 allOf addedOKResponse 200 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
POST /tasks/{task_gid}/removeFollowersresponse 200 type changedBreakingResponse 200 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
POST /tasks/{task_gid}/removeFollowersresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
POST /tasks/{task_gid}/removeFollowersresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
POST /tasks/{task_gid}/removeFollowersresponse 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
POST /tasks/{task_gid}/removeFollowersresponse 200 allOf addedOKResponse 200 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
GET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}response 200 type changedBreakingResponse 200 field "data.allOf[0].allOf[1].memberships[].section": object → (none)
GET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.gid": Removed (was optional)
GET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.resource_type": Removed (was optional)
GET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}response 200 property removedPotentialResponse 200 field "data.allOf[0].allOf[1].memberships[].section.name": Removed (was optional)
GET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}response 200 allOf addedOKResponse 200 field "data.allOf[0].allOf[1].memberships[].section": allOf added with 2 schema(s)
GET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}description updatedOKSummary or description text changed. No contract impact.
components/schemas/TaskBase.(root).allOf[1].memberships[].sectiontype changedBreakingobject → (none)
components/schemas/TaskBase.(root).allOf[1].memberships[].section.gidproperty removedBreakingRemoved
components/schemas/TaskBase.(root).allOf[1].memberships[].section.resource_typeproperty removedBreakingRemoved
components/schemas/TaskBase.(root).allOf[1].memberships[].section.nameproperty removedBreakingRemoved
components/schemas/TaskBase.(root).allOf[1].memberships[].sectionallOf addedOKallOf added with 2 schema(s)
components/schemas/TaskRequestBase.(root).allOf[0].allOf[1].memberships[].sectiontype changedBreakingobject → (none)
components/schemas/TaskRequestBase.(root).allOf[0].allOf[1].memberships[].section.gidproperty removedBreakingRemoved
components/schemas/TaskRequestBase.(root).allOf[0].allOf[1].memberships[].section.resource_typeproperty removedBreakingRemoved
components/schemas/TaskRequestBase.(root).allOf[0].allOf[1].memberships[].section.nameproperty removedBreakingRemoved
components/schemas/TaskRequestBase.(root).allOf[0].allOf[1].memberships[].sectionallOf addedOKallOf added with 2 schema(s)
components/schemas/TaskCreateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].sectiontype changedBreakingobject → (none)
components/schemas/TaskCreateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].section.gidproperty removedBreakingRemoved
components/schemas/TaskCreateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].section.resource_typeproperty removedBreakingRemoved
components/schemas/TaskCreateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].section.nameproperty removedBreakingRemoved
components/schemas/TaskCreateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].sectionallOf addedOKallOf added with 2 schema(s)
components/schemas/TaskUpdateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].sectiontype changedBreakingobject → (none)
components/schemas/TaskUpdateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].section.gidproperty removedBreakingRemoved
components/schemas/TaskUpdateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].section.resource_typeproperty removedBreakingRemoved
components/schemas/TaskUpdateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].section.nameproperty removedBreakingRemoved
components/schemas/TaskUpdateRequest.(root).allOf[0].allOf[0].allOf[1].memberships[].sectionallOf addedOKallOf added with 2 schema(s)
components/schemas/TaskResponse.(root).allOf[0].allOf[1].memberships[].sectiontype changedBreakingobject → (none)
components/schemas/TaskResponse.(root).allOf[0].allOf[1].memberships[].section.gidproperty removedBreakingRemoved
components/schemas/TaskResponse.(root).allOf[0].allOf[1].memberships[].section.resource_typeproperty removedBreakingRemoved
components/schemas/TaskResponse.(root).allOf[0].allOf[1].memberships[].section.nameproperty removedBreakingRemoved
components/schemas/TaskResponse.(root).allOf[0].allOf[1].memberships[].sectionallOf addedOKallOf added with 2 schema(s)
components/schemas/TaskMembershipschema addedOKShared schema "TaskMembership" was added.

This is what your consumers wish your API had.

Point us at your own OpenAPI spec and get the same automatic changelog, plus email alerts and breaking-change classification on every release.