arcade-mcp/toolkits/asana_api/arcade_asana_api/moar/Asana.json
jottakka de742ff4f1
[MOAR][Asana][Github] Adding GitHub and Asana starter toolkits (#663)
Co-authored-by: Francisco Liberal <francisco@arcade.dev>
2025-10-30 18:21:34 -03:00

54762 lines
3.2 MiB

{
"name": "Asana",
"spec_source": "openapi_spec",
"token_for_http_testing": "",
"package_name": "asana_api",
"package_dir_path": "/Users/franciscojuniodelimaliberal/git/Team/arcade-mcp/toolkits/asana_api/asana_api",
"project_dir_path": "/Users/franciscojuniodelimaliberal/git/Team/arcade-mcp/toolkits/asana_api",
"arcade_new_cmd_executed": true,
"api_endpoint_selection_customized": false,
"api_endpoint_for_http_testing": "",
"authorization_type": "oauth",
"auth_provider_id": "arcade-asana",
"where_to_provide_token": "header",
"token_key_name": "Authorization",
"token_value": "Bearer {authorization}",
"secrets": [],
"global_base_url": "https://app.asana.com/api/1.0",
"global_headers": {},
"edit_operations": [],
"uuid": "6fd06e6f-5644-4ada-8cab-8b37b192006a",
"api_endpoints": [
{
"name": "getAccessRequests",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_pending_access_requests",
"description": {
"tagline": "Fetch pending access requests for a target object.",
"detailed": "Use this tool to retrieve pending access requests for a specific target object in Asana. You can also filter these requests by a specific user if needed."
},
"return_annotation": "Pending access requests for a specified target object.",
"arguments": [
{
"name": "target_object_id",
"alternative_names": [
"target_id",
"object_id"
],
"description": "Globally unique identifier for the target object in Asana.",
"endpoint_argument_name": "target"
},
{
"name": "filter_by_user",
"alternative_names": [
"user_identifier",
"specific_user"
],
"description": "User identifier to filter requests. Accepts 'me', an email, or a user gid.",
"endpoint_argument_name": "user"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"show_extra_properties"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_response_pretty"
],
"description": "Set to true for readable, indented output. Use primarily for debugging due to increased response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/access_requests",
"tags": [
"Access requests"
],
"summary": "Get access requests",
"description": "Returns the pending access requests for a target object or a target object filtered by user.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "target",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the target object."
},
"description": "Globally unique identifier for the target object.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"approval_status",
"message",
"requester",
"requester.name",
"target"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createAccessRequest",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "submit_access_request_asana",
"description": {
"tagline": "Submit a new access request for Asana projects or portfolios.",
"detailed": "This tool is used to submit a new access request for accessing a private project or portfolio in Asana. It should be called when a user needs permission to access these private objects."
},
"return_annotation": "Confirmation of access request submission.",
"arguments": [
{
"name": "target_gid",
"alternative_names": [
"access_target_gid",
"object_gid"
],
"description": "The GID of the project or portfolio you are requesting access to in Asana.",
"endpoint_argument_name": "data.target"
},
{
"name": "access_request_message",
"alternative_names": [
"request_context_message",
"additional_information_message"
],
"description": "Optional message providing context or additional information for the access request.",
"endpoint_argument_name": "data.message"
}
]
},
"method": "POST",
"path": "/access_requests",
"tags": [
"Access requests"
],
"summary": "Create an access request",
"description": "Submits a new access request for a private object. Currently supports projects and portfolios.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "data.target",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The access requestable object that the user is requesting access to. This is the gid of the target. Supports projects and portfolios."
},
"description": "The access requestable object that the user is requesting access to. This is the gid of the target. Supports projects and portfolios.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The access requestable object that the user is requesting access to. This is the gid of the target. Supports projects and portfolios.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.message",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The optional message to include with the access request. This can be used to provide context or additional information about the request."
},
"description": "The optional message to include with the access request. This can be used to provide context or additional information about the request.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The optional message to include with the access request. This can be used to provide context or additional information about the request.",
"example": "I'm looking to request access to this item."
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"target\"\n ],\n \"description\": \"A request to create shareable access for a user.\",\n \"properties\": {\n \"target\": {\n \"description\": \"The access requestable object that the user is requesting access to. This is the gid of the target. Supports projects and portfolios.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"message\": {\n \"type\": \"string\",\n \"description\": \"The optional message to include with the access request. This can be used to provide context or additional information about the request.\",\n \"example\": \"I'm looking to request access to this item.\",\n \"nullable\": true\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "approveAccessRequest",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "approve_access_request",
"description": {
"tagline": "Approves an access request for a target object in Asana.",
"detailed": "Use this tool to approve an access request for a specific target object in Asana. It should be called when a user needs to grant access to a specified request."
},
"return_annotation": "Confirmation of access request approval.",
"arguments": [
{
"name": "access_request_global_id",
"alternative_names": [
"access_request_id",
"request_gid"
],
"description": "Globally unique identifier for the specific access request to approve.",
"endpoint_argument_name": "access_request_gid"
}
]
},
"method": "POST",
"path": "/access_requests/{access_request_gid}/approve",
"tags": [
"Access requests"
],
"summary": "Approve an access request",
"description": "Approves an access request for a target object.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [],
"path": [
{
"name": "access_request_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the access request."
},
"description": "Globally unique identifier for the access request.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "rejectAccessRequest",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "reject_access_request",
"description": {
"tagline": "Reject an access request for a target object.",
"detailed": "This tool should be called when you need to reject a pending access request for a specific target object in Asana. Use it to manage access control effectively by denying requests as needed."
},
"return_annotation": "Confirmation of the rejected access request.",
"arguments": [
{
"name": "access_request_identifier",
"alternative_names": [
"access_request_gid_tool",
"request_gid"
],
"description": "Globally unique identifier for the access request to be rejected. This value is required for identifying which access request to reject in Asana.",
"endpoint_argument_name": "access_request_gid"
}
]
},
"method": "POST",
"path": "/access_requests/{access_request_gid}/reject",
"tags": [
"Access requests"
],
"summary": "Reject an access request",
"description": "Rejects an access request for a target object.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [],
"path": [
{
"name": "access_request_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the access request."
},
"description": "Globally unique identifier for the access request.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getAllocation",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_allocation_record",
"description": {
"tagline": "Fetch the complete allocation record for a given ID.",
"detailed": "This tool provides detailed information about an allocation using its unique ID. It should be called when you need to access specific allocation data from Asana."
},
"return_annotation": "Complete allocation record for a specified allocation.",
"arguments": [
{
"name": "allocation_unique_id",
"alternative_names": [
"allocation_id",
"global_allocation_id"
],
"description": "Globally unique identifier for the allocation to fetch the complete record.",
"endpoint_argument_name": "allocation_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"select_optional_fields",
"specify_optional_properties"
],
"description": "Comma-separated list of optional properties to include in the response, as some properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"format_pretty"
],
"description": "Set to true to receive the response in a pretty, readable format. Useful for debugging, but increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/allocations/{allocation_gid}",
"tags": [
"Allocations"
],
"summary": "Get an allocation",
"description": "Returns the complete allocation record for a single allocation.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_by",
"created_by.name",
"effort",
"effort.type",
"effort.value",
"end_date",
"parent",
"parent.name",
"resource_subtype",
"start_date"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "allocation_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the allocation."
},
"description": "Globally unique identifier for the allocation.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateAllocation",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_allocation",
"description": {
"tagline": "Update an existing allocation in Asana.",
"detailed": "Use this tool to update an existing allocation in Asana by providing specific fields to be changed. Unspecified fields will remain unchanged."
},
"return_annotation": "The updated allocation record.",
"arguments": [
{
"name": "allocation_global_id",
"alternative_names": [
"allocation_identifier",
"allocation_id"
],
"description": "Globally unique identifier for the allocation to be updated. This is required to specify which allocation record to modify.",
"endpoint_argument_name": "allocation_gid"
},
{
"name": "updated_allocation_fields",
"alternative_names": [
"allocation_update_data",
"allocation_fields_to_update"
],
"description": "JSON object containing the fields to be updated for the allocation. Only provided fields will be changed, others remain untouched.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties_inclusion",
"fields_to_include"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"format_response_pretty"
],
"description": "Set to true to receive the response in a more readable, formatted JSON output. This increases response size and should be used mainly for debugging purposes.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/allocations/{allocation_gid}",
"tags": [
"Allocations"
],
"summary": "Update an allocation",
"description": "An existing allocation can be updated by making a PUT request on the URL for\nthat allocation. Only the fields provided in the `data` block will be updated;\nany unspecified fields will remain unchanged.\n\nReturns the complete updated allocation record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_by",
"created_by.name",
"effort",
"effort.type",
"effort.value",
"end_date",
"parent",
"parent.name",
"resource_subtype",
"start_date"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "allocation_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the allocation."
},
"description": "Globally unique identifier for the allocation.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated fields for the allocation."
},
"description": "The updated fields for the allocation.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "allocation"
},
"start_date": {
"type": "string",
"description": "The localized day on which the allocation starts.",
"format": "date",
"example": "2024-02-28"
},
"end_date": {
"type": "string",
"description": "The localized day on which the allocation ends.",
"format": "date",
"example": "2024-02-28"
},
"effort": {
"type": "object",
"description": "The amount of time associated with the allocation, represented as a percentage or number of hours",
"properties": {
"type": {
"type": "string",
"description": "The units used for tracking effort on an allocation, either \"hours\" or \"percent\".",
"enum": [
"hours",
"percent"
]
},
"value": {
"type": "number",
"description": "The numeric effort value on the allocation.",
"example": 50
}
}
}
}
},
{
"type": "object",
"properties": {
"assignee": {
"type": "string",
"description": "Globally unique identifier for the user or placeholder assigned to the allocation."
},
"parent": {
"type": "string",
"description": "Globally unique identifier for the project the allocation is on."
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the allocation.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"allocation\",\n \"x-insert-after\": \"gid\"\n },\n \"start_date\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The localized day on which the allocation starts.\",\n \"example\": \"2024-02-28\"\n },\n \"end_date\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The localized day on which the allocation ends.\",\n \"example\": \"2024-02-28\"\n },\n \"effort\": {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"The amount of time associated with the allocation, represented as a percentage or number of hours\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The units used for tracking effort on an allocation, either \\\"hours\\\" or \\\"percent\\\".\",\n \"enum\": [\n \"hours\",\n \"percent\"\n ]\n },\n \"value\": {\n \"type\": \"number\",\n \"description\": \"The numeric effort value on the allocation.\",\n \"example\": 50\n }\n }\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"assignee\": {\n \"type\": \"string\",\n \"description\": \"Globally unique identifier for the user or placeholder assigned to the allocation.\"\n },\n \"parent\": {\n \"type\": \"string\",\n \"description\": \"Globally unique identifier for the project the allocation is on.\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteAllocation",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_allocation",
"description": {
"tagline": "Deletes a specific allocation in Asana.",
"detailed": "Use this tool to delete an existing allocation in Asana by providing the allocation ID. Useful for tasks where removing resource allocations is needed."
},
"return_annotation": "Confirms that the specific allocation was deleted.",
"arguments": [
{
"name": "allocation_id",
"alternative_names": [
"allocation_identifier",
"allocation_guid"
],
"description": "Globally unique identifier for the allocation to be deleted.",
"endpoint_argument_name": "allocation_gid"
},
{
"name": "pretty_formatting",
"alternative_names": [
"enable_pretty_output",
"pretty_response"
],
"description": "Provide pretty JSON formatting for better readability, recommended for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/allocations/{allocation_gid}",
"tags": [
"Allocations"
],
"summary": "Delete an allocation",
"description": "A specific, existing allocation can be deleted by making a DELETE request on the URL for that allocation.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "allocation_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the allocation."
},
"description": "Globally unique identifier for the allocation.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getAllocations",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_allocations",
"description": {
"tagline": "Retrieve allocations for a specific project, user, or placeholder.",
"detailed": "Use this tool to get a list of work allocations filtered by a specific project, user, or placeholder in Asana."
},
"return_annotation": "A list of allocations for a specific project, user, or placeholder.",
"arguments": [
{
"name": "project_id",
"alternative_names": [
"project_identifier",
"filter_by_project_id"
],
"description": "Globally unique identifier for the project to filter allocations by.",
"endpoint_argument_name": "parent"
},
{
"name": "assignee_id",
"alternative_names": [
"user_id",
"placeholder_id"
],
"description": "Globally unique identifier for the user or placeholder the allocation is assigned to.",
"endpoint_argument_name": "assignee"
},
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"workspace_guid"
],
"description": "Globally unique identifier for the workspace to filter allocations by.",
"endpoint_argument_name": "workspace"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "The number of allocations to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"results_offset",
"page_offset"
],
"description": "Offset token for pagination. Use this to retrieve the next page of results. If not provided, the first page will be returned. Only use offsets returned from previous requests.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"select_additional_fields",
"expand_fields"
],
"description": "List properties to include in the response, provided as a list of strings. Provides access to additional data fields.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"pretty_response_output"
],
"description": "Enable pretty output format for JSON. Use this for easier reading during debugging, as it increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/allocations",
"tags": [
"Allocations"
],
"summary": "Get multiple allocations",
"description": "Returns a list of allocations filtered to a specific project, user or placeholder.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "parent",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project to filter allocations by."
},
"description": "Globally unique identifier for the project to filter allocations by.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "assignee",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the user or placeholder the allocation is assigned to."
},
"description": "Globally unique identifier for the user or placeholder the allocation is assigned to.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace."
},
"description": "Globally unique identifier for the workspace.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_by",
"created_by.name",
"effort",
"effort.type",
"effort.value",
"end_date",
"offset",
"parent",
"parent.name",
"path",
"resource_subtype",
"start_date",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createAllocation",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_allocation",
"description": {
"tagline": "Creates a new allocation in Asana and returns its details.",
"detailed": ""
},
"return_annotation": "Details of the newly created allocation.",
"arguments": [
{
"name": "allocation_details",
"alternative_names": [
"allocation_data",
"new_allocation_info"
],
"description": "A JSON object containing the details of the allocation to create in Asana.",
"endpoint_argument_name": "requestBody"
},
{
"name": "optional_properties_to_include",
"alternative_names": [
"extra_fields",
"fields_to_include"
],
"description": "List the properties to include that are not included by default in the allocation resource response. Provide as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_output_prettily"
],
"description": "Enable pretty formatting for the response to improve readability with line breaks and indentation. Recommended only for debugging due to increased response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/allocations",
"tags": [
"Allocations"
],
"summary": "Create an allocation",
"description": "Creates a new allocation.\n\nReturns the full record of the newly created allocation.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_by",
"created_by.name",
"effort",
"effort.type",
"effort.value",
"end_date",
"parent",
"parent.name",
"resource_subtype",
"start_date"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The allocation to create."
},
"description": "The allocation to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "allocation"
},
"start_date": {
"type": "string",
"description": "The localized day on which the allocation starts.",
"format": "date",
"example": "2024-02-28"
},
"end_date": {
"type": "string",
"description": "The localized day on which the allocation ends.",
"format": "date",
"example": "2024-02-28"
},
"effort": {
"type": "object",
"description": "The amount of time associated with the allocation, represented as a percentage or number of hours",
"properties": {
"type": {
"type": "string",
"description": "The units used for tracking effort on an allocation, either \"hours\" or \"percent\".",
"enum": [
"hours",
"percent"
]
},
"value": {
"type": "number",
"description": "The numeric effort value on the allocation.",
"example": 50
}
}
}
}
},
{
"type": "object",
"properties": {
"assignee": {
"type": "string",
"description": "Globally unique identifier for the user or placeholder assigned to the allocation."
},
"parent": {
"type": "string",
"description": "Globally unique identifier for the project the allocation is on."
}
}
}
]
},
{
"type": "object",
"properties": {},
"required": [
"assignee",
"end_date",
"parent",
"start_date"
]
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The allocation to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"allocation\",\n \"x-insert-after\": \"gid\"\n },\n \"start_date\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The localized day on which the allocation starts.\",\n \"example\": \"2024-02-28\"\n },\n \"end_date\": {\n \"type\": \"string\",\n \"format\": \"date\",\n \"description\": \"The localized day on which the allocation ends.\",\n \"example\": \"2024-02-28\"\n },\n \"effort\": {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"The amount of time associated with the allocation, represented as a percentage or number of hours\",\n \"properties\": {\n \"type\": {\n \"type\": \"string\",\n \"description\": \"The units used for tracking effort on an allocation, either \\\"hours\\\" or \\\"percent\\\".\",\n \"enum\": [\n \"hours\",\n \"percent\"\n ]\n },\n \"value\": {\n \"type\": \"number\",\n \"description\": \"The numeric effort value on the allocation.\",\n \"example\": 50\n }\n }\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"assignee\": {\n \"type\": \"string\",\n \"description\": \"Globally unique identifier for the user or placeholder assigned to the allocation.\"\n },\n \"parent\": {\n \"type\": \"string\",\n \"description\": \"Globally unique identifier for the project the allocation is on.\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"assignee\",\n \"end_date\",\n \"parent\",\n \"start_date\"\n ]\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getAttachment",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_attachment_details",
"description": {
"tagline": "Fetch the full record of a specific attachment.",
"detailed": "Retrieves detailed information for a single attachment in Asana. Use this tool to access complete attachment records by attachment ID."
},
"return_annotation": "Detailed record of a specific attachment.",
"arguments": [
{
"name": "attachment_unique_id",
"alternative_names": [
"attachment_global_id",
"attachment_identifier"
],
"description": "The globally unique identifier for the attachment in Asana.",
"endpoint_argument_name": "attachment_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_properties",
"extra_fields"
],
"description": "An array of properties to include in the response. Specify which additional fields you want in the returned attachment record.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"format_output_pretty"
],
"description": "Set to true for pretty-printed JSON output. Increases response size and time; recommended for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/attachments/{attachment_gid}",
"tags": [
"Attachments"
],
"summary": "Get an attachment",
"description": "<b>Required scope: </b><code>attachments:read</code>\n\nGet the full record for a single attachment.",
"requires_security": true,
"oauth_scopes": [
"attachments:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"connected_to_app",
"created_at",
"download_url",
"host",
"name",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permanent_url",
"resource_subtype",
"size",
"view_url"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "attachment_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the attachment."
},
"description": "Globally unique identifier for the attachment.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "deleteAttachment",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_attachment",
"description": {
"tagline": "Delete a specific attachment in Asana.",
"detailed": "Use this tool to delete an existing attachment in Asana by providing the attachment's unique ID. Requires `attachments:delete` scope."
},
"return_annotation": "Confirmation of attachment deletion.",
"arguments": [
{
"name": "attachment_unique_id",
"alternative_names": [
"attachment_global_id",
"attachment_identifier"
],
"description": "Globally unique identifier for the attachment to be deleted.",
"endpoint_argument_name": "attachment_gid"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"enable_pretty_format",
"pretty_response_format"
],
"description": "Set to true to return the response in a readable format with line breaks and indentation. Use for debugging, as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/attachments/{attachment_gid}",
"tags": [
"Attachments"
],
"summary": "Delete an attachment",
"description": "<b>Required scope: </b><code>attachments:delete</code>\n\nDeletes a specific, existing attachment.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [
"attachments:delete"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "attachment_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the attachment."
},
"description": "Globally unique identifier for the attachment.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getAttachmentsForObject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_attachments",
"description": {
"tagline": "Retrieve all attachments for a specified Asana object.",
"detailed": "This tool returns all attachments associated with a specified Asana object. It can be used to get attachments for projects, project briefs, and tasks. For projects, it provides files from the \"Key resources\" section; for project briefs, inline files in the brief itself; for tasks, all associated files, including inline images in descriptions."
},
"return_annotation": "Compact records of all attachments on the object.",
"arguments": [
{
"name": "object_gid",
"alternative_names": [
"parent_gid",
"object_id"
],
"description": "Globally unique identifier for the Asana object to fetch attachments from, such as a `project`, `project_brief`, or `task`.",
"endpoint_argument_name": "parent"
},
{
"name": "results_per_page",
"alternative_names": [
"page_limit",
"items_per_request"
],
"description": "Number of objects to return per page, must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"response_offset_token"
],
"description": "Token for pagination. Use this to get the next page of results. If omitted, the first page is returned. Use only tokens from previous responses.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"additional_properties"
],
"description": "Comma-separated list of properties to include, which are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"pretty_output"
],
"description": "Return the response in a readable format with line breaks and indentation. Recommended for debugging as it may increase response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/attachments",
"tags": [
"Attachments"
],
"summary": "Get attachments from an object",
"description": "<b>Required scope: </b><code>attachments:read</code>\n\nReturns the compact records for all attachments on the object.\nThere are three possible `parent` values for this request: `project`, `project_brief`, and `task`. For a project, an attachment refers to a file uploaded to the \"Key resources\" section in the project Overview. For a project brief, an attachment refers to inline files in the project brief itself. For a task, an attachment refers to a file directly associated to that task.\n\nNote that within the Asana app, inline images in the task description do not appear in the index of image thumbnails nor as stories in the task. However, requests made to `GET /attachments` for a task will return all of the images in the task, including inline images.",
"requires_security": true,
"oauth_scopes": [
"attachments:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "parent",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for object to fetch statuses from. Must be a GID for a `project`, `project_brief`, or `task`."
},
"description": "Globally unique identifier for object to fetch statuses from. Must be a GID for a `project`, `project_brief`, or `task`.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"connected_to_app",
"created_at",
"download_url",
"host",
"name",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permanent_url",
"resource_subtype",
"size",
"uri",
"view_url"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createAttachmentForObject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": false,
"should_skip": true,
"skip_reason": "Only file-related content types available: multipart/form-data",
"wrapper_tool": null,
"method": "POST",
"path": "/attachments",
"tags": [
"Attachments"
],
"summary": "Upload an attachment",
"description": "<b>Required scope: </b><code>attachments:write</code>\n\nUpload an attachment.\n\nThis method uploads an attachment on an object and returns the compact\nrecord for the created attachment object. This is possible by either:\n\n- Providing the URL of the external resource being attached, or\n- Downloading the file content first and then uploading it as any other attachment. Note that it is not possible to attach\nfiles from third party services such as Dropbox, Box, Vimeo & Google Drive via the API\n\nThe 100MB size limit on attachments in Asana is enforced on this endpoint.\n\nThis endpoint expects a multipart/form-data encoded request containing the full contents of the file to be uploaded.\n\nRequests made should follow the HTTP/1.1 specification that line\nterminators are of the form `CRLF` or `\\r\\n` outlined\n[here](http://www.w3.org/Protocols/HTTP/1.1/draft-ietf-http-v11-spec-01#Basic-Rules) in order for the server to reliably and properly handle the request.\n\nFor file names that contain non-ASCII characters, the file name should be URL-encoded. For example, a file named `r\u00e9sum\u00e9.pdf` should be encoded as\n`r%C3%A9sum%C3%A9.pdf` and the `filename` parameter in the `Content-Disposition` header should be set to the encoded file name.\n\nBelow is an example of a cURL request with the `Content-Disposition` header:\n\n```\nexport ASANA_PAT=\"<YOUR_ASANA_PERSONAL_ACCESS_TOKEN>\"\nexport PARENT_ID=\"<PARENT_GID>\"\nexport ENCODED_NAME=\"r%C3%A9sum%C3%A9.pdf\"\ncurl --location 'https://app.asana.com/api/1.0/attachments' \\\n --header 'Content-Type: multipart/form-data' \\\n --header 'Accept: application/json' \\\n --header \"Authorization: Bearer $ASANA_PAT\" \\\n --form \"parent=$PARENT_ID\" \\\n --form \"file=@/Users/exampleUser/Downloads/r\u00e9sum\u00e9.pdf;headers=\\\"Content-Disposition: form-data; name=\"file\"; filename=\"$ENCODED_NAME.pdf\"; filename*=UTF-8''$ENCODED_NAME.pdf\\\"\"\n```",
"requires_security": true,
"oauth_scopes": [
"attachments:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"connected_to_app",
"created_at",
"download_url",
"host",
"name",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permanent_url",
"resource_subtype",
"size",
"view_url"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getAuditLogEvents",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "retrieve_audit_log_events",
"description": {
"tagline": "Retrieve audit log events from your Asana domain.",
"detailed": "Use this tool to get a list of audit log events captured in your Asana domain. It supports various query parameters for filtering events and provides paginated results. Useful for tracking and auditing activities since October 8th, 2021."
},
"return_annotation": "A list of audit log events from the specified domain.",
"arguments": [
{
"name": "workspace_unique_id",
"alternative_names": [
"workspace_id",
"organization_id"
],
"description": "Globally unique identifier for the workspace or organization to filter the audit log events.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "start_time_filter",
"alternative_names": [
"start_date_filter",
"begin_time_filter"
],
"description": "Filter events created on or after this time (inclusive). Provide in ISO 8601 format.",
"endpoint_argument_name": "start_at"
},
{
"name": "filter_events_end_time",
"alternative_names": [
"end_time_filter",
"events_end_time"
],
"description": "Filter events to include only those created before this date and time (exclusive).",
"endpoint_argument_name": "end_at"
},
{
"name": "event_type_filter",
"alternative_names": [
"event_category",
"log_event_type"
],
"description": "Specify the type of events to filter. Refer to the supported audit log events for valid types.",
"endpoint_argument_name": "event_type"
},
{
"name": "actor_type_filter",
"alternative_names": [
"actor_event_type",
"event_actor_type"
],
"description": "Specify the actor type to filter events. Use only if not querying by actor ID.",
"endpoint_argument_name": "actor_type"
},
{
"name": "actor_id_filter",
"alternative_names": [
"actor_unique_id",
"triggered_by_actor_id"
],
"description": "Filter events to those triggered by the actor with this unique ID.",
"endpoint_argument_name": "actor_gid"
},
{
"name": "filter_by_resource_id",
"alternative_names": [
"event_resource_id",
"resource_identifier_filter"
],
"description": "Filter events based on the specific resource ID to retrieve only those associated with this ID.",
"endpoint_argument_name": "resource_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"entries_per_page"
],
"description": "Set the number of audit log events to return per page of results, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_offset",
"results_offset"
],
"description": "Offset token to specify the starting point for retrieving the next page of results. Use the token from the previous response to continue paging through results. Leaving this unset will fetch the first page.",
"endpoint_argument_name": "offset"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/audit_log_events",
"tags": [
"Audit log API"
],
"summary": "Get audit log events",
"description": "Retrieve the audit log events that have been captured in your domain.\n\nThis endpoint will return a list of [AuditLogEvent](/reference/audit-log-api) objects, sorted by creation time in ascending order. Note that the Audit Log API captures events from October 8th, 2021 and later. Queries for events before this date will not return results.\n\nThere are a number of query parameters (below) that can be used to filter the set of [AuditLogEvent](/reference/audit-log-api) objects that are returned in the response. Any combination of query parameters is valid. When no filters are provided, all of the events that have been captured in your domain will match.\n\nThe list of events will always be [paginated](/docs/pagination). The default limit is 1000 events. The next set of events can be retrieved using the `offset` from the previous response. If there are no events that match the provided filters in your domain, the endpoint will return `null` for the `next_page` field. Querying again with the same filters may return new events if they were captured after the last request. Once a response includes a `next_page` with an `offset`, subsequent requests can be made with the latest `offset` to poll for new events that match the provided filters.\n\n*Note: If the filters you provided match events in your domain and `next_page` is present in the response, we will continue to send `next_page` on subsequent requests even when there are no more events that match the filters. This was put in place so that you can implement an audit log stream that will return future events that match these filters. If you are not interested in future events that match the filters you have defined, you can rely on checking empty `data` response for the end of current events that match your filters.*\n\nWhen no `offset` is provided, the response will begin with the oldest events that match the provided filters. It is important to note that [AuditLogEvent](/reference/audit-log-api) objects will be permanently deleted from our systems after 90 days. If you wish to keep a permanent record of these events, we recommend using a SIEM tool to ingest and store these logs.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "start_at",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to events created after this time (inclusive)."
},
"description": "Filter to events created after this time (inclusive).",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "end_at",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to events created before this time (exclusive)."
},
"description": "Filter to events created before this time (exclusive).",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "event_type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to events of this type.\nRefer to the [supported audit log events](/docs/audit-log-events#supported-audit-log-events) for a full list of values."
},
"description": "Filter to events of this type.\nRefer to the [supported audit log events](/docs/audit-log-events#supported-audit-log-events) for a full list of values.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "actor_type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"user",
"asana",
"asana_support",
"anonymous",
"external_administrator"
],
"properties": null,
"inner_properties": null,
"description": "Filter to events with an actor of this type.\nThis only needs to be included if querying for actor types without an ID. If `actor_gid` is included, this should be excluded."
},
"description": "Filter to events with an actor of this type.\nThis only needs to be included if querying for actor types without an ID. If `actor_gid` is included, this should be excluded.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"enum": [
"user",
"asana",
"asana_support",
"anonymous",
"external_administrator"
]
},
"schema_required": false
},
{
"name": "actor_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to events triggered by the actor with this ID."
},
"description": "Filter to events triggered by the actor with this ID.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "resource_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to events with this resource ID."
},
"description": "Filter to events with this resource ID.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createBatchRequest",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_parallel_requests_asana",
"description": {
"tagline": "Execute multiple requests to Asana's API simultaneously.",
"detailed": "Use this tool to make parallel requests to Asana's API efficiently, allowing multiple operations to be executed at once."
},
"return_annotation": "Response with results of multiple parallel requests.",
"arguments": [
{
"name": "batch_request_data",
"alternative_names": [
"batch_requests_payload",
"parallel_requests_input"
],
"description": "JSON object containing multiple requests to be sent in parallel. Include actions with endpoints, methods, and associated data.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties",
"fields_to_include"
],
"description": "A list of optional properties to include in the response. Provide as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_response_pretty"
],
"description": "Enable pretty output format with line breaks and indentation. Useful for debugging but may increase response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/batch",
"tags": [
"Batch API"
],
"summary": "Submit parallel requests",
"description": "Make multiple requests in parallel to Asana's API.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"body",
"headers",
"status_code"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"actions": {
"val_type": "array",
"inner_val_type": "json",
"enum": null,
"properties": null,
"inner_properties": {
"relative_path": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The path of the desired endpoint relative to the API\u2019s base URL. Query parameters are not accepted here; put them in `data` instead."
},
"method": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"get",
"post",
"put",
"delete",
"patch",
"head"
],
"properties": null,
"inner_properties": null,
"description": "The HTTP method you wish to emulate for the action."
},
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "For `GET` requests, this should be a map of query parameters you would have normally passed in the URL. Options and pagination are not accepted here; put them in `options` instead. For `POST`, `PATCH`, and `PUT` methods, this should be the content you would have normally put in the data field of the body."
},
"options": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"limit": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Pagination limit for the request."
},
"offset": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Pagination offset for the request."
},
"fields": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The fields to retrieve in the request."
}
},
"inner_properties": null,
"description": "Pagination (`limit` and `offset`) and output options (`fields` or `expand`) for the action. \u201cPretty\u201d JSON output is not an available option on individual actions; if you want pretty output, specify that option on the parent request."
}
},
"description": null
}
},
"inner_properties": null,
"description": "A request object for use in a batch request."
}
},
"inner_properties": null,
"description": "The requests to batch together via the Batch API."
},
"description": "The requests to batch together via the Batch API.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "A request object for use in a batch request.",
"properties": {
"actions": {
"type": "array",
"items": {
"type": "object",
"description": "An action object for use in a batch request.",
"properties": {
"relative_path": {
"type": "string",
"description": "The path of the desired endpoint relative to the API\u2019s base URL. Query parameters are not accepted here; put them in `data` instead.",
"example": "/tasks/123"
},
"method": {
"type": "string",
"description": "The HTTP method you wish to emulate for the action.",
"enum": [
"get",
"post",
"put",
"delete",
"patch",
"head"
],
"example": "get"
},
"data": {
"type": "object",
"description": "For `GET` requests, this should be a map of query parameters you would have normally passed in the URL. Options and pagination are not accepted here; put them in `options` instead. For `POST`, `PATCH`, and `PUT` methods, this should be the content you would have normally put in the data field of the body.",
"properties": {}
},
"options": {
"type": "object",
"description": "Pagination (`limit` and `offset`) and output options (`fields` or `expand`) for the action. \u201cPretty\u201d JSON output is not an available option on individual actions; if you want pretty output, specify that option on the parent request.",
"properties": {
"limit": {
"type": "integer",
"description": "Pagination limit for the request.",
"example": 50
},
"offset": {
"type": "integer",
"description": "Pagination offset for the request.",
"example": "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9"
},
"fields": {
"type": "array",
"description": "The fields to retrieve in the request.",
"items": {
"type": "string"
}
}
}
}
},
"required": [
"relative_path",
"method"
]
}
}
}
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The requests to batch together via the Batch API.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A request object for use in a batch request.\",\n \"type\": \"object\",\n \"properties\": {\n \"actions\": {\n \"type\": \"array\",\n \"items\": {\n \"description\": \"An action object for use in a batch request.\",\n \"type\": \"object\",\n \"properties\": {\n \"relative_path\": {\n \"description\": \"The path of the desired endpoint relative to the API\\u2019s base URL. Query parameters are not accepted here; put them in `data` instead.\",\n \"type\": \"string\",\n \"example\": \"/tasks/123\"\n },\n \"method\": {\n \"description\": \"The HTTP method you wish to emulate for the action.\",\n \"type\": \"string\",\n \"enum\": [\n \"get\",\n \"post\",\n \"put\",\n \"delete\",\n \"patch\",\n \"head\"\n ],\n \"example\": \"get\"\n },\n \"data\": {\n \"description\": \"For `GET` requests, this should be a map of query parameters you would have normally passed in the URL. Options and pagination are not accepted here; put them in `options` instead. For `POST`, `PATCH`, and `PUT` methods, this should be the content you would have normally put in the data field of the body.\",\n \"type\": \"object\",\n \"example\": {\n \"assignee\": \"me\",\n \"workspace\": \"1337\"\n }\n },\n \"options\": {\n \"description\": \"Pagination (`limit` and `offset`) and output options (`fields` or `expand`) for the action. \\u201cPretty\\u201d JSON output is not an available option on individual actions; if you want pretty output, specify that option on the parent request.\",\n \"type\": \"object\",\n \"properties\": {\n \"limit\": {\n \"description\": \"Pagination limit for the request.\",\n \"type\": \"integer\",\n \"example\": 50\n },\n \"offset\": {\n \"description\": \"Pagination offset for the request.\",\n \"type\": \"integer\",\n \"example\": \"eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9\"\n },\n \"fields\": {\n \"description\": \"The fields to retrieve in the request.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"name\",\n \"gid\",\n \"notes\",\n \"completed\"\n ]\n }\n },\n \"example\": {\n \"limit\": 3,\n \"fields\": [\n \"name\",\n \"notes\",\n \"completed\"\n ]\n }\n }\n },\n \"required\": [\n \"relative_path\",\n \"method\"\n ]\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getCustomFieldSettingsForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_custom_field_settings_for_project",
"description": {
"tagline": "Get custom field settings for a specified project.",
"detailed": "Use this tool to retrieve all custom field settings associated with a specific project in Asana. It returns a list in compact form, which can be expanded using `opt_fields` to include additional data."
},
"return_annotation": "A list of custom field settings for a project.",
"arguments": [
{
"name": "project_id",
"alternative_names": [
"project_identifier",
"project_global_id"
],
"description": "Globally unique identifier for the Asana project to retrieve custom field settings.",
"endpoint_argument_name": "project_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"max_results_per_page",
"items_per_page"
],
"description": "Specify the number of custom field settings to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_token",
"page_offset"
],
"description": "An offset token for pagination. Use the token from a previous request to get the next page of results. If not provided, it returns the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"expand_fields",
"additional_properties"
],
"description": "Comma-separated list of property names to include in the response, expanding beyond the default fields.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_output",
"format_pretty_response"
],
"description": "Enable to receive a pretty, human-readable response with line breaks and indentation. Increases response time and size, use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/projects/{project_gid}/custom_field_settings",
"tags": [
"Custom field settings"
],
"summary": "Get a project's custom fields",
"description": "Returns a list of all of the custom fields settings on a project, in compact form. Note that, as in all queries to collections which return compact representation, `opt_fields` can be used to include more data than is returned in the compact representation. See the [documentation for input/output options](https://developers.asana.com/docs/inputoutput-options) for more information.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"custom_field",
"custom_field.asana_created_field",
"custom_field.created_by",
"custom_field.created_by.name",
"custom_field.currency_code",
"custom_field.custom_label",
"custom_field.custom_label_position",
"custom_field.date_value",
"custom_field.date_value.date",
"custom_field.date_value.date_time",
"custom_field.default_access_level",
"custom_field.description",
"custom_field.display_value",
"custom_field.enabled",
"custom_field.enum_options",
"custom_field.enum_options.color",
"custom_field.enum_options.enabled",
"custom_field.enum_options.name",
"custom_field.enum_value",
"custom_field.enum_value.color",
"custom_field.enum_value.enabled",
"custom_field.enum_value.name",
"custom_field.format",
"custom_field.has_notifications_enabled",
"custom_field.id_prefix",
"custom_field.input_restrictions",
"custom_field.is_formula_field",
"custom_field.is_global_to_workspace",
"custom_field.is_value_read_only",
"custom_field.multi_enum_values",
"custom_field.multi_enum_values.color",
"custom_field.multi_enum_values.enabled",
"custom_field.multi_enum_values.name",
"custom_field.name",
"custom_field.number_value",
"custom_field.people_value",
"custom_field.people_value.name",
"custom_field.precision",
"custom_field.privacy_setting",
"custom_field.reference_value",
"custom_field.reference_value.name",
"custom_field.representation_type",
"custom_field.resource_subtype",
"custom_field.text_value",
"custom_field.type",
"is_important",
"offset",
"parent",
"parent.name",
"path",
"project",
"project.name",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getCustomFieldSettingsForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_portfolio_custom_field_settings",
"description": {
"tagline": "Retrieve custom field settings for an Asana portfolio.",
"detailed": "Call this tool to get all the custom field settings associated with a specific portfolio on Asana in compact form."
},
"return_annotation": "List of custom field settings for a portfolio.",
"arguments": [
{
"name": "portfolio_unique_id",
"alternative_names": [
"portfolio_id",
"portfolio_identifier"
],
"description": "Globally unique identifier for the portfolio in Asana.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"objects_per_page",
"items_per_page"
],
"description": "Specify the number of results to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"result_offset_token"
],
"description": "Offset token to fetch the next page of results. Use a token returned from a previous request. If not provided, the first page of results will be returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"extra_fields_to_include",
"fields_to_add"
],
"description": "List optional properties to include in the response, specified as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output",
"alternative_names": [
"formatted_output",
"output_pretty"
],
"description": "Set to true for pretty-formatted JSON output, with line breaks and indentation, mainly for debugging purposes.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/portfolios/{portfolio_gid}/custom_field_settings",
"tags": [
"Custom field settings"
],
"summary": "Get a portfolio's custom fields",
"description": "Returns a list of all of the custom fields settings on a portfolio, in compact form.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"custom_field",
"custom_field.asana_created_field",
"custom_field.created_by",
"custom_field.created_by.name",
"custom_field.currency_code",
"custom_field.custom_label",
"custom_field.custom_label_position",
"custom_field.date_value",
"custom_field.date_value.date",
"custom_field.date_value.date_time",
"custom_field.default_access_level",
"custom_field.description",
"custom_field.display_value",
"custom_field.enabled",
"custom_field.enum_options",
"custom_field.enum_options.color",
"custom_field.enum_options.enabled",
"custom_field.enum_options.name",
"custom_field.enum_value",
"custom_field.enum_value.color",
"custom_field.enum_value.enabled",
"custom_field.enum_value.name",
"custom_field.format",
"custom_field.has_notifications_enabled",
"custom_field.id_prefix",
"custom_field.input_restrictions",
"custom_field.is_formula_field",
"custom_field.is_global_to_workspace",
"custom_field.is_value_read_only",
"custom_field.multi_enum_values",
"custom_field.multi_enum_values.color",
"custom_field.multi_enum_values.enabled",
"custom_field.multi_enum_values.name",
"custom_field.name",
"custom_field.number_value",
"custom_field.people_value",
"custom_field.people_value.name",
"custom_field.precision",
"custom_field.privacy_setting",
"custom_field.reference_value",
"custom_field.reference_value.name",
"custom_field.representation_type",
"custom_field.resource_subtype",
"custom_field.text_value",
"custom_field.type",
"is_important",
"offset",
"parent",
"parent.name",
"path",
"project",
"project.name",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createCustomField",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_custom_field_in_workspace",
"description": {
"tagline": "Create a new custom field in an Asana workspace.",
"detailed": "Use this tool to create a custom field in a specific Asana workspace. The field's name must be unique and the type can be text, enum, multi_enum, number, date, or people. The workspace cannot be changed once set."
},
"return_annotation": "The full record of the newly created custom field.",
"arguments": [
{
"name": "custom_field_data",
"alternative_names": [
"custom_field_object",
"field_creation_data"
],
"description": "The custom field object containing details such as name, type, and workspace ID to create in Asana. The name must be unique in the workspace.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_extra_properties",
"additional_field_properties"
],
"description": "A list of optional property names to include in the response. Ensure these do not conflict with defaults.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_output",
"format_output_pretty"
],
"description": "Set to true to receive a JSON response with line breaks and indentation for better readability, mainly for debugging purposes.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/custom_fields",
"tags": [
"Custom fields"
],
"summary": "Create a custom field",
"description": "<b>Required scope: </b><code>custom_fields:write</code>\n\nCreates a new custom field in a workspace. Every custom field is required\nto be created in a specific workspace, and this workspace cannot be\nchanged once set.\n\nA custom field\u2019s name must be unique within a workspace and not conflict\nwith names of existing task properties such as `Due Date` or `Assignee`.\nA custom field\u2019s type must be one of `text`, `enum`, `multi_enum`, `number`,\n`date`, or `people`.\n\nReturns the full record of the newly created custom field.",
"requires_security": true,
"oauth_scopes": [
"custom_fields:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"asana_created_field",
"created_by",
"created_by.name",
"currency_code",
"custom_label",
"custom_label_position",
"date_value",
"date_value.date",
"date_value.date_time",
"default_access_level",
"description",
"display_value",
"enabled",
"enum_options",
"enum_options.color",
"enum_options.enabled",
"enum_options.name",
"enum_value",
"enum_value.color",
"enum_value.enabled",
"enum_value.name",
"format",
"has_notifications_enabled",
"id_prefix",
"input_restrictions",
"is_formula_field",
"is_global_to_workspace",
"is_value_read_only",
"multi_enum_values",
"multi_enum_values.color",
"multi_enum_values.enabled",
"multi_enum_values.name",
"name",
"number_value",
"people_value",
"people_value.name",
"precision",
"privacy_setting",
"reference_value",
"reference_value.name",
"representation_type",
"resource_subtype",
"text_value",
"type"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The custom field object to create."
},
"description": "The custom field object to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"workspace": {
"type": "string",
"description": "*Create-Only* The workspace to create a custom field in.",
"example": "1331"
},
"owned_by_app": {
"type": "boolean",
"description": "*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`."
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.",
"items": {
"type": "string",
"description": "The GID of a user."
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.",
"items": {
"type": "string",
"description": "The GID of an object."
}
}
},
"required": [
"workspace"
]
}
]
},
{
"type": "object",
"properties": {
"resource_subtype": {
"type": "string",
"description": "The type of the custom field. Must be one of the given values.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"reference"
],
"example": "text"
}
},
"required": [
"resource_subtype"
]
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The custom field object to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"workspace\"\n ],\n \"properties\": {\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"*Create-Only* The workspace to create a custom field in.\",\n \"example\": \"1331\"\n },\n \"owned_by_app\": {\n \"type\": \"boolean\",\n \"description\": \"*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`.\"\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of an object.\"\n },\n \"example\": [\n \"12345\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"resource_subtype\"\n ],\n \"properties\": {\n \"resource_subtype\": {\n \"description\": \"The type of the custom field. Must be one of the given values.\",\n \"type\": \"string\",\n \"example\": \"text\",\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"reference\"\n ]\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getCustomField",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_custom_field_metadata",
"description": {
"tagline": "Retrieve complete metadata of a custom field in Asana.",
"detailed": "Fetches the full definition of a custom field's metadata in Asana, including type-specific details such as enum options."
},
"return_annotation": "Detailed metadata of a specific custom field.",
"arguments": [
{
"name": "custom_field_id",
"alternative_names": [
"custom_field_identifier",
"field_gid"
],
"description": "Globally unique identifier for the custom field in Asana to retrieve its metadata.",
"endpoint_argument_name": "custom_field_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"additional_properties"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_pretty_output",
"pretty_format"
],
"description": "Enable pretty printing for the output, making it more readable. Ideal for debugging, but increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/custom_fields/{custom_field_gid}",
"tags": [
"Custom fields"
],
"summary": "Get a custom field",
"description": "<b>Required scope: </b><code>custom_fields:read</code>\n\nGet the complete definition of a custom field\u2019s metadata.\n\nSince custom fields can be defined for one of a number of types, and\nthese types have different data and behaviors, there are fields that are\nrelevant to a particular type. For instance, as noted above, enum_options\nis only relevant for the enum type and defines the set of choices that\nthe enum could represent. The examples below show some of these\ntype-specific custom field definitions.",
"requires_security": true,
"oauth_scopes": [
"custom_fields:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"asana_created_field",
"created_by",
"created_by.name",
"currency_code",
"custom_label",
"custom_label_position",
"date_value",
"date_value.date",
"date_value.date_time",
"default_access_level",
"description",
"display_value",
"enabled",
"enum_options",
"enum_options.color",
"enum_options.enabled",
"enum_options.name",
"enum_value",
"enum_value.color",
"enum_value.enabled",
"enum_value.name",
"format",
"has_notifications_enabled",
"id_prefix",
"input_restrictions",
"is_formula_field",
"is_global_to_workspace",
"is_value_read_only",
"multi_enum_values",
"multi_enum_values.color",
"multi_enum_values.enabled",
"multi_enum_values.name",
"name",
"number_value",
"people_value",
"people_value.name",
"precision",
"privacy_setting",
"reference_value",
"reference_value.name",
"representation_type",
"resource_subtype",
"text_value",
"type"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "custom_field_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the custom field."
},
"description": "Globally unique identifier for the custom field.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateCustomField",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_asana_custom_field",
"description": {
"tagline": "Update specific fields of an Asana custom field.",
"detailed": "Use this tool to update an existing Asana custom field. Only the specified fields in the request will be updated, leaving other fields unchanged. The custom field's type and enum options cannot be modified using this endpoint. Ensure the 'custom_fields:write' scope is granted when invoking this method. Locked fields can only be updated by the user who locked them."
},
"return_annotation": "The complete updated custom field record.",
"arguments": [
{
"name": "custom_field_global_id",
"alternative_names": [
"custom_field_id",
"field_global_identifier"
],
"description": "Globally unique identifier for the custom field to be updated.",
"endpoint_argument_name": "custom_field_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "Comma-separated list of optional properties to include in the response, as the endpoint excludes some by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "custom_field_updates",
"alternative_names": [
"custom_field_data",
"field_update_object"
],
"description": "JSON object with the updated properties for the custom field. Only include properties you wish to change.",
"endpoint_argument_name": "requestBody"
},
{
"name": "pretty_output",
"alternative_names": [
"formatted_response",
"enable_pretty_format"
],
"description": "Set to true to receive a pretty-formatted output with line breaks and indentation. Increases response time and size, suitable for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/custom_fields/{custom_field_gid}",
"tags": [
"Custom fields"
],
"summary": "Update a custom field",
"description": "<b>Required scope: </b><code>custom_fields:write</code>\n\nA specific, existing custom field can be updated by making a PUT request on the URL for that custom field. Only the fields provided in the `data` block will be updated; any unspecified fields will remain unchanged\nWhen using this method, it is best to specify only those fields you wish to change, or else you may overwrite changes made by another user since you last retrieved the custom field.\nA custom field\u2019s `type` cannot be updated.\nAn enum custom field\u2019s `enum_options` cannot be updated with this endpoint. Instead see \u201cWork With Enum Options\u201d for information on how to update `enum_options`.\nLocked custom fields can only be updated by the user who locked the field.\nReturns the complete updated custom field record.",
"requires_security": true,
"oauth_scopes": [
"custom_fields:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"asana_created_field",
"created_by",
"created_by.name",
"currency_code",
"custom_label",
"custom_label_position",
"date_value",
"date_value.date",
"date_value.date_time",
"default_access_level",
"description",
"display_value",
"enabled",
"enum_options",
"enum_options.color",
"enum_options.enabled",
"enum_options.name",
"enum_value",
"enum_value.color",
"enum_value.enabled",
"enum_value.name",
"format",
"has_notifications_enabled",
"id_prefix",
"input_restrictions",
"is_formula_field",
"is_global_to_workspace",
"is_value_read_only",
"multi_enum_values",
"multi_enum_values.color",
"multi_enum_values.enabled",
"multi_enum_values.name",
"name",
"number_value",
"people_value",
"people_value.name",
"precision",
"privacy_setting",
"reference_value",
"reference_value.name",
"representation_type",
"resource_subtype",
"text_value",
"type"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "custom_field_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the custom field."
},
"description": "Globally unique identifier for the custom field.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The custom field object with all updated properties."
},
"description": "The custom field object with all updated properties.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"workspace": {
"type": "string",
"description": "*Create-Only* The workspace to create a custom field in.",
"example": "1331"
},
"owned_by_app": {
"type": "boolean",
"description": "*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`."
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.",
"items": {
"type": "string",
"description": "The GID of a user."
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.",
"items": {
"type": "string",
"description": "The GID of an object."
}
}
},
"required": [
"workspace"
]
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The custom field object with all updated properties.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"workspace\"\n ],\n \"properties\": {\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"*Create-Only* The workspace to create a custom field in.\",\n \"example\": \"1331\"\n },\n \"owned_by_app\": {\n \"type\": \"boolean\",\n \"description\": \"*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`.\"\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of an object.\"\n },\n \"example\": [\n \"12345\"\n ]\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteCustomField",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_custom_field",
"description": {
"tagline": "Delete a specific custom field in Asana.",
"detailed": "Use this tool to delete a specific custom field in Asana. Locked custom fields can only be deleted by the user who locked them. It returns confirmation of the deletion."
},
"return_annotation": "Confirmation of custom field deletion.",
"arguments": [
{
"name": "custom_field_id",
"alternative_names": [
"custom_field_identifier",
"field_global_id"
],
"description": "The unique global identifier for the custom field to be deleted.",
"endpoint_argument_name": "custom_field_gid"
},
{
"name": "pretty_output",
"alternative_names": [
"pretty_format",
"formatted_response"
],
"description": "Set to true for a formatted and indented response; mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/custom_fields/{custom_field_gid}",
"tags": [
"Custom fields"
],
"summary": "Delete a custom field",
"description": "A specific, existing custom field can be deleted by making a DELETE request on the URL for that custom field.\nLocked custom fields can only be deleted by the user who locked the field.\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "custom_field_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the custom field."
},
"description": "Globally unique identifier for the custom field.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getCustomFieldsForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_custom_fields_for_workspace",
"description": {
"tagline": "Retrieve custom fields for a specific workspace.",
"detailed": "Fetches a list of all custom fields in a specified workspace, using Asana's API. Requires the 'custom_fields:read' scope."
},
"return_annotation": "List of custom fields for a workspace.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_id",
"workspace_global_id"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_limit",
"items_per_page"
],
"description": "Specifies the number of custom fields to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"api_offset_token"
],
"description": "An offset token for pagination. Use a token from a previous request to continue where it left off. If not used, retrieves the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties_list",
"fields_to_include"
],
"description": "A list of properties to include in the response for a workspace's custom fields. Include values such as 'name', 'type', etc.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"format_response"
],
"description": "Enable pretty printed output for the response, useful for debugging. This increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/custom_fields",
"tags": [
"Custom fields"
],
"summary": "Get a workspace's custom fields",
"description": "<b>Required scope: </b><code>custom_fields:read</code>\n\nReturns a list of the compact representation of all of the custom fields in a workspace.",
"requires_security": true,
"oauth_scopes": [
"custom_fields:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"asana_created_field",
"created_by",
"created_by.name",
"currency_code",
"custom_label",
"custom_label_position",
"date_value",
"date_value.date",
"date_value.date_time",
"default_access_level",
"description",
"display_value",
"enabled",
"enum_options",
"enum_options.color",
"enum_options.enabled",
"enum_options.name",
"enum_value",
"enum_value.color",
"enum_value.enabled",
"enum_value.name",
"format",
"has_notifications_enabled",
"id_prefix",
"input_restrictions",
"is_formula_field",
"is_global_to_workspace",
"is_value_read_only",
"multi_enum_values",
"multi_enum_values.color",
"multi_enum_values.enabled",
"multi_enum_values.name",
"name",
"number_value",
"offset",
"path",
"people_value",
"people_value.name",
"precision",
"privacy_setting",
"reference_value",
"reference_value.name",
"representation_type",
"resource_subtype",
"text_value",
"type",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createEnumOptionForCustomField",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_enum_option_to_custom_field",
"description": {
"tagline": "Add an enum option to a custom field in Asana.",
"detailed": "This tool adds a new enum option to a custom field in Asana, updating the list of enum options. Use this when managing custom fields and needing to expand the choices available. Requires 'custom_fields:write' scope."
},
"return_annotation": "Details of the newly created enum option.",
"arguments": [
{
"name": "custom_field_identifier",
"alternative_names": [
"field_global_id",
"field_unique_id"
],
"description": "Globally unique identifier for the custom field in Asana. Use this to specify the field you want to modify.",
"endpoint_argument_name": "custom_field_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"fields_to_include"
],
"description": "List of properties to include in the response that are excluded by default. Provide these as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enum_option_object",
"alternative_names": [
"option_to_create",
"new_enum_option"
],
"description": "A JSON object representing the new enum option to be created, including its properties.",
"endpoint_argument_name": "requestBody"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_response_pretty"
],
"description": "Enable to receive a readable JSON response with line breaks and indentation. Use primarily for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/custom_fields/{custom_field_gid}/enum_options",
"tags": [
"Custom fields"
],
"summary": "Create an enum option",
"description": "<b>Required scope: </b><code>custom_fields:write</code>\n\nCreates an enum option and adds it to this custom field\u2019s list of enum options. A custom field can have at most 500 enum options (including disabled options). By default new enum options are inserted at the end of a custom field\u2019s list.\nLocked custom fields can only have enum options added by the user who locked the field.\nReturns the full record of the newly created enum option.",
"requires_security": true,
"oauth_scopes": [
"custom_fields:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"enabled",
"name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "custom_field_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the custom field."
},
"description": "Globally unique identifier for the custom field.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The enum option object to create."
},
"description": "The enum option object to create.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"insert_before": {
"type": "string",
"description": "An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option.",
"example": "12345"
},
"insert_after": {
"type": "string",
"description": "An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option.",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The enum option object to create.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"insert_before\": {\n \"type\": \"string\",\n \"description\": \"An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option.\",\n \"example\": \"12345\"\n },\n \"insert_after\": {\n \"type\": \"string\",\n \"description\": \"An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option.\",\n \"example\": \"12345\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "insertEnumOptionForCustomField",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "reorder_enum_option_custom_field",
"description": {
"tagline": "Reorder enum options in a custom field.",
"detailed": "Moves an enum option within a custom field to a specified position relative to another option. Locked fields can only be edited by the locker."
},
"return_annotation": "Confirmation of enum option reordered in the custom field.",
"arguments": [
{
"name": "custom_field_id",
"alternative_names": [
"custom_field_identifier",
"field_global_id"
],
"description": "Globally unique identifier for the custom field to be modified.",
"endpoint_argument_name": "custom_field_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_properties",
"optional_properties"
],
"description": "A list of resource properties to include in the response, which are excluded by default. This should be a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enum_option_gid_to_relocate",
"alternative_names": [
"enum_option_id_to_move",
"enum_option_gid_target"
],
"description": "The globally unique identifier (GID) of the enum option to relocate within the custom field.",
"endpoint_argument_name": "data.enum_option"
},
{
"name": "insert_before_enum_option_gid",
"alternative_names": [
"place_before_enum_option_gid",
"precede_with_enum_option_gid"
],
"description": "GID of an existing enum option before which the new option should be inserted. Cannot be used with after_enum_option.",
"endpoint_argument_name": "data.before_enum_option"
},
{
"name": "insert_after_enum_option",
"alternative_names": [
"place_after_enum_option",
"position_after_enum_option"
],
"description": "The ID of an existing enum option after which the new option should be inserted. Cannot be used with 'insert_before_enum_option'.",
"endpoint_argument_name": "data.after_enum_option"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"formatted_response"
],
"description": "Enable pretty output for a more readable JSON response format, useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/custom_fields/{custom_field_gid}/enum_options/insert",
"tags": [
"Custom fields"
],
"summary": "Reorder a custom field's enum",
"description": "<b>Required scope: </b><code>custom_fields:write</code>\n\nMoves a particular enum option to be either before or after another specified enum option in the custom field.\nLocked custom fields can only be reordered by the user who locked the field.",
"requires_security": true,
"oauth_scopes": [
"custom_fields:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"enabled",
"name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "custom_field_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the custom field."
},
"description": "Globally unique identifier for the custom field.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.enum_option",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The gid of the enum option to relocate."
},
"description": "The gid of the enum option to relocate.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The gid of the enum option to relocate.",
"example": "97285"
},
"schema_required": false
},
{
"name": "data.before_enum_option",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option."
},
"description": "An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.after_enum_option",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option."
},
"description": "An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option.",
"example": "12345"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The enum option object to create.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"enum_option\"\n ],\n \"properties\": {\n \"enum_option\": {\n \"type\": \"string\",\n \"description\": \"The gid of the enum option to relocate.\",\n \"example\": \"97285\"\n },\n \"before_enum_option\": {\n \"type\": \"string\",\n \"description\": \"An existing enum option within this custom field before which the new enum option should be inserted. Cannot be provided together with after_enum_option.\",\n \"example\": \"12345\"\n },\n \"after_enum_option\": {\n \"type\": \"string\",\n \"description\": \"An existing enum option within this custom field after which the new enum option should be inserted. Cannot be provided together with before_enum_option.\",\n \"example\": \"12345\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "updateEnumOption",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_enum_option",
"description": {
"tagline": "Update an existing enum option in Asana custom fields.",
"detailed": "This tool is used to update an existing enum option in Asana custom fields. It's necessary to have the 'custom_fields:write' scope. Locked custom fields can only be updated by the user who locked them."
},
"return_annotation": "The full record of the updated enum option.",
"arguments": [
{
"name": "enum_option_gid",
"alternative_names": [
"enum_option_id",
"global_enum_option_id"
],
"description": "The globally unique identifier for the enum option to update.",
"endpoint_argument_name": "enum_option_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"optional_properties"
],
"description": "Provide a list of properties to include in the response, beyond the default set.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "resource_gid",
"alternative_names": [
"gid_string",
"resource_identifier"
],
"description": "Globally unique identifier for the resource as a string.",
"endpoint_argument_name": "data.gid"
},
{
"name": "resource_type",
"alternative_names": [
"base_resource_type",
"enum_resource_type"
],
"description": "The base type of the resource, specified as a string. This is necessary for updating the enum option.",
"endpoint_argument_name": "data.resource_type"
},
{
"name": "enum_option_name",
"alternative_names": [
"enum_option_label",
"enum_option_title"
],
"description": "The name of the enum option to be updated.",
"endpoint_argument_name": "data.name"
},
{
"name": "enum_option_color",
"alternative_names": [
"enum_option_color_value",
"enum_color"
],
"description": "The color of the enum option. Defaults to 'none' if not provided.",
"endpoint_argument_name": "data.color"
},
{
"name": "pretty_output",
"alternative_names": [
"pretty_print",
"formatted_response"
],
"description": "Set to true to receive the response in a pretty-printed format. Increases response time and size, useful for debugging.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "enum_option_enabled",
"alternative_names": [
"set_enum_option_enabled",
"is_enum_option_selectable"
],
"description": "Indicates if the enum option is selectable for the custom field. Provide 'true' to make it selectable, 'false' otherwise.",
"endpoint_argument_name": "data.enabled"
}
]
},
"method": "PUT",
"path": "/enum_options/{enum_option_gid}",
"tags": [
"Custom fields"
],
"summary": "Update an enum option",
"description": "<b>Required scope: </b><code>custom_fields:write</code>\n\nUpdates an existing enum option. Enum custom fields require at least one enabled enum option.\nLocked custom fields can only be updated by the user who locked the field.\nReturns the full record of the updated enum option.",
"requires_security": true,
"oauth_scopes": [
"custom_fields:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"enabled",
"name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "enum_option_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the enum option."
},
"description": "Globally unique identifier for the enum option.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the resource, as a string."
},
"description": "Globally unique identifier of the resource, as a string.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.resource_type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The base type of this resource."
},
"description": "The base type of this resource.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"schema_required": false
},
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The name of the enum option."
},
"description": "The name of the enum option.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"schema_required": false
},
{
"name": "data.enabled",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Whether or not the enum option is a selectable value for the custom field."
},
"description": "Whether or not the enum option is a selectable value for the custom field.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"schema_required": false
},
{
"name": "data.color",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The color of the enum option. Defaults to `none`."
},
"description": "The color of the enum option. Defaults to `none`.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The enum option object to update\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getCustomTypes",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_custom_types",
"description": {
"tagline": "Retrieve all custom types for a project in Asana.",
"detailed": "Use this tool to get a list of custom types linked to a project in Asana. Customize returned data using `opt_fields` for more detailed information."
},
"return_annotation": "List of custom types associated with projects.",
"arguments": [
{
"name": "project_id",
"alternative_names": [
"project_identifier",
"project_uid"
],
"description": "Globally unique identifier for the project to filter custom types.",
"endpoint_argument_name": "project"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Number of custom types to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "next_page_offset_token",
"alternative_names": [
"pagination_offset_token",
"api_next_page_offset"
],
"description": "Offset token from a previous response to fetch the next page of results. If not provided, the first page will be returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"optional_fields"
],
"description": "Comma-separated list of properties to include in the response for additional details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"format_output_nicely"
],
"description": "Set to true for pretty-printed JSON output during debugging. Increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/custom_types",
"tags": [
"Custom types"
],
"summary": "Get all custom types associated with an object",
"description": "Returns a list of all of the custom types associated with an object. Currently, only projects are supported. Note that, as in all queries to collections which return compact representation, `opt_fields` can be used to include more data than is returned in the compact representation. See the [documentation for input/output options](https://developers.asana.com/docs/inputoutput-options) for more information.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "project",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project, which is used as a filter when retrieving all custom types."
},
"description": "Globally unique identifier for the project, which is used as a filter when retrieving all custom types.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"name",
"offset",
"path",
"status_options",
"status_options.color",
"status_options.completion_state",
"status_options.enabled",
"status_options.name",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getCustomType",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_custom_type_details",
"description": {
"tagline": "Retrieve complete details of a specific custom type in Asana.",
"detailed": "Use this to obtain the full record for a custom type by its ID. Useful for accessing detailed information about custom types within Asana projects."
},
"return_annotation": "Detailed record of a custom type in Asana.",
"arguments": [
{
"name": "custom_type_id",
"alternative_names": [
"custom_type_identifier",
"custom_type_global_id"
],
"description": "Globally unique identifier for the custom type in Asana.",
"endpoint_argument_name": "custom_type_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_properties",
"extra_fields"
],
"description": "A list of property names to include in the response for the custom type. These are optional fields that are not included by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_output",
"format_pretty"
],
"description": "If true, the response is formatted with line breaks and indentation for readability. Use this for debugging; it may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/custom_types/{custom_type_gid}",
"tags": [
"Custom types"
],
"summary": "Get a custom type",
"description": "Returns the complete custom type record for a single custom type.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"name",
"status_options",
"status_options.color",
"status_options.completion_state",
"status_options.enabled",
"status_options.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "custom_type_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the custom type."
},
"description": "Globally unique identifier for the custom type.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getEvents",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_asana_events",
"description": {
"tagline": "Fetches detailed records of recent Asana events.",
"detailed": "This tool retrieves a complete record of all events in Asana that occurred since a specific sync token was created. It should be called when you need to obtain the latest activities or changes related to a resource. If more than 100 events exist, the response will indicate additional events are available."
},
"return_annotation": "Full records of events with additional details on availability of more events.",
"arguments": [
{
"name": "target_resource_id",
"alternative_names": [
"resource_identifier",
"subscription_resource_id"
],
"description": "The ID of the resource to subscribe to. It can be a task, project, or goal.",
"endpoint_argument_name": "resource"
},
{
"name": "sync_token",
"alternative_names": [
"last_sync_token",
"previous_sync_token"
],
"description": "A sync token from the last request, or omit on the first sync to receive events from the start point. Ensure to handle the token for continued syncing.",
"endpoint_argument_name": "sync"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_properties",
"extra_fields"
],
"description": "Comma-separated list of property names to include in the response for more detailed event records.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"pretty_output"
],
"description": "Enable pretty JSON output with line breaks and indentation for readability; primarily for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/events",
"tags": [
"Events"
],
"summary": "Get events on a resource",
"description": "Returns the full record for all events that have occurred since the sync\ntoken was created.\n\nA `GET` request to the endpoint `/[path_to_resource]/events` can be made in\nlieu of including the resource ID in the data for the request.\n\nAsana limits a single sync token to 100 events. If more than 100 events exist\nfor a given resource, `has_more: true` will be returned in the response, indicating\nthat there are more events to pull.\n\n*Note: The resource returned will be the resource that triggered the\nevent. This may be different from the one that the events were requested\nfor. For example, a subscription to a project will contain events for\ntasks contained within the project.*",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "resource",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A resource ID to subscribe to. The resource can be a task, project, or goal."
},
"description": "A resource ID to subscribe to. The resource can be a task, project, or goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "sync",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A sync token received from the last request, or none on first sync. Events will be returned from the point in time that the sync token was generated.\n*Note: On your first request, omit the sync token. The response will be the same as for an expired sync token, and will include a new valid sync token.If the sync token is too old (which may happen from time to time) the API will return a `412 Precondition Failed` error, and include a fresh sync token in the response.*"
},
"description": "A sync token received from the last request, or none on first sync. Events will be returned from the point in time that the sync token was generated.\n*Note: On your first request, omit the sync token. The response will be the same as for an expired sync token, and will include a new valid sync token.If the sync token is too old (which may happen from time to time) the API will return a `412 Precondition Failed` error, and include a fresh sync token in the response.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"action",
"change",
"change.action",
"change.added_value",
"change.field",
"change.new_value",
"change.removed_value",
"created_at",
"parent",
"parent.name",
"resource",
"resource.name",
"type",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createGraphExport",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "initiate_graph_export",
"description": {
"tagline": "Initiate a graph export job for Asana objects.",
"detailed": "Initiates a graph export job for a specified Asana goal, team, portfolio, or project. The export is processed asynchronously. Use the jobs endpoint to monitor progress. Caching occurs for exports exceeding 1,000 tasks, lasting 4 hours."
},
"return_annotation": "Confirmation of graph export job initiation.",
"arguments": [
{
"name": "parent_object_id",
"alternative_names": [
"parent_id",
"object_id"
],
"description": "Globally unique ID of the Asana parent object: goal, project, portfolio, or team.",
"endpoint_argument_name": "data.parent"
}
]
},
"method": "POST",
"path": "/exports/graph",
"tags": [
"Exports"
],
"summary": "Initiate a graph export",
"description": "Initiates a graph export job for a given parent object\n(goal, team, portfolio, or project). The export will be processed asynchronously.\nOnce initiated, use the [jobs](/reference/getjob) endpoint to monitor progress.\n\n**Export Caching:** When exporting more than 1,000 tasks, the results are cached for 4 hours. Any new export requests made within this 4-hour window will return the same cached results rather than generating a fresh export.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "data.parent",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique ID of the parent object: goal, project, portfolio, or team."
},
"description": "Globally unique ID of the parent object: goal, project, portfolio, or team.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Globally unique ID of the parent object: goal, project, portfolio, or team.",
"example": "181636"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"A JSON payload specifying the parent object to export.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"description\": \"A *graph_export* request starts a job to export data starting from a parent object.\",\n \"properties\": {\n \"parent\": {\n \"description\": \"Globally unique ID of the parent object: goal, project, portfolio, or team.\",\n \"type\": \"string\",\n \"example\": \"181636\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "createResourceExport",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "initiate_bulk_resource_export",
"description": {
"tagline": "Initiate a bulk export of tasks, teams, or messages in a workspace.",
"detailed": "Use this tool to start exporting tasks, teams, or messages from a workspace in Asana. The export is processed asynchronously, and results can be monitored using the jobs endpoint. The export includes attachments and stories by default, with options to specify fields and apply filters. The final export file is in JSON Lines format, compressed in a gzip container."
},
"return_annotation": "Initiates an asynchronous export of workspace resources.",
"arguments": [
{
"name": "resource_export_payload",
"alternative_names": [
"export_payload",
"export_request_data"
],
"description": "A JSON object detailing the resources to export, filters, and fields. Includes workspace GID, export parameters, and field specifications.",
"endpoint_argument_name": "requestBody"
}
]
},
"method": "POST",
"path": "/exports/resource",
"tags": [
"Exports"
],
"summary": "Initiate a resource export",
"description": "Initiates a bulk export of resources for a workspace. The export will be processed asynchronously. Once the export has been requested, its progress can be monitored using the [jobs](/reference/getjob) endpoint.\n\n## Supported resource types\nThis endpoint currently supports exporting tasks, teams and messages within a workspace. Resources can be requested to be part of the export by providing the `export_request_parameters` parameter. The following resource types are supported:\n\n### Tasks:\nTasks are formatted for exports with some differences from their documented [schema](/reference/tasks):\n - `attachments` are included by default and returns an array of associated attachments.\n - Attachment objects do not include `download_url` or `view_url`. The `attachments` [endpoint](/reference/attachment) should be queried for up-to-date URLs.\n - `stories` are included by default and returns an array of comments and other changes made to a task\n\n### Teams:\nTeams are formatted for exports with these differences from their documented [schema](/reference/teams):\n - `members` are included by default and returns an array of Users that are members of the team\n - Filtering is not supported for teams.\n\n### Messages:\nThe returned schema encompasses both default messages and status updates and is similar to the status update schema.\nThe available fields for messages are:\n - `gid` - The globally unique identifier for the message.\n - `resource_type` - The type of resource, which is always \"message\".\n - `resource_subtype` - Optional. The subtype of the message, which can be \"default\" or \"status_update\".\n - `status_type` - The type associated with the status update. This can be one of: \u201con_track\u201d, \u201cat_risk\u201d, \u201coff_track\u201d, \u201con_hold\u201d, \u201ccomplete\u201d, \u201cachieved\u201d, \u201cpartial\u201d, \u201cmissed\u201d, \u201cdropped\u201d\n - `created_by` - The user who created the message.\n - `created_at` - The time at which this resource was created and sent available to other users.\n - `modified_at` - The time at which this resource was last modified.\n - `title` - The title of the message.\n - `text` - The text content of the message.\n - `html_notes` - The text content of the message with formatting as HTML. Not included by default. Can be included by using \u201cfields\u201d in the initial request.\n - `num_likes` - The number of users who have liked this message.\n - `likes` - An array of users who have liked this message.\n - `stories` - Optional. Array of stories applied to the message.\n - `attachments` - Optional. Array of attachments added to the message.\n - `followers` - Optional. Array of users currently following the message. Users that were sent the message are treated as followers.\n - `parents` - Array of objects the message was sent to. Can be a Project, Portfolio, Team or Goal. Limited to a single object for status updates.\n\n\n## Export file\nThe final export file will be in JSON Lines format and compressed in a gzip container.\n\nObjects are formatted according to their corresponding API schema, or limited to the fields\nincluded in the `fields` parameter. Exports currently include undeleted objects.\n\nAn object in the export will be up to date anywhere between the exports `created_at` and `completed_at`. There is no guaranteed ordering of objects in the export.\n\nAccess to the export file expires 30 days after its completion.\n\n## Exporting specific fields\nBy default, each object in an export includes a predefined set of fields based on its schema. If a more limited set of fields\nor fields not included by default are required, the Export API allows for specifying which fields to include in the requested export.\n\nFields can be specified using the `fields` parameter. The fields parameter conforms to the fields\noptional parameter available for all Asana endpoints which is documented [here](https://developers.asana.com/docs/inputoutput-options).\n\nUtilizing the `fields` parameter is recommended if the full object is not required, especially when a large number of objects are being exported, to reduce the overall export time.\n\n## Filtering resources\nA disjunction of two or more filters can be achieved by providing multiple `export_request_parameters` for the same resource, each with different filters.\nHowever, this approach may result in duplicate resources being returned.\n\n## Rate Limits\nA workspace is currently limited to *one* in progress export request at a given time. The request will return with a 403 Forbidden status code if the limit is exceeded.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"workspace": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Gid of a workspace."
},
"export_request_parameters": {
"val_type": "array",
"inner_val_type": "json",
"enum": null,
"properties": null,
"inner_properties": {
"resource_type": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The type of the resource to be exported. This can be a task, team, or message."
},
"filters": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"assigned_by.any": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter by the users who assigned the resource. This array accepts a list of user GIDs. This is only applicable to tasks."
},
"assignee.any": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter by the users who are assigned to the resource. This array accepts a list of user GIDs. This is only applicable to tasks."
},
"commented_on_by.any": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter by the users who commented on the resource. This array accepts a list of user GIDs."
},
"created_at.after": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter results to resources created after a specified date and time."
},
"created_at.before": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter results to resources created before a specified date and time."
},
"created_by.any": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter by the users who created the resource. This array accepts a list of user GIDs."
},
"followers.any": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter by the users who are following the resource. This array accepts a list of user GIDs."
},
"liked_by.any": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter by the users who liked the resource. This array accepts a list of user GIDs."
},
"modified_at.after": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter results to resources modified after a specified date and time."
},
"modified_at.before": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter results to resources modified before a specified date and time."
}
},
"inner_properties": null,
"description": "Filters to apply to a resource that will be exported. These filters can be used to narrow down the resources that are included in the export."
},
"fields": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of fields to include for the resource type. If not provided, all non-optional fields for the resource type will be included. This conforms to the fields optional parameter available for all Asana endpoints which is documented [here](https://developers.asana.com/docs/inputoutput-options)"
}
},
"description": "An object containing the parameters for the export request. The keys of this object are the GIDs of the resources to be exported. The values are objects with additional parameters for each resource."
}
},
"inner_properties": null,
"description": "A *resource_export* request starts a job to bulk export objects for one or more resources."
}
},
"inner_properties": null,
"description": "A JSON payload specifying the resources to export, including filters to apply and fields to be exported."
},
"description": "A JSON payload specifying the resources to export, including filters to apply and fields to be exported.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "A *resource_export* request starts a job to bulk export objects for one or more resources.",
"properties": {
"workspace": {
"type": "string",
"description": "Gid of a workspace.",
"example": "12345"
},
"export_request_parameters": {
"type": "array",
"description": "An object containing the parameters for the export request. The keys of this object are the GIDs of the resources to be exported. The values are objects with additional parameters for each resource.",
"items": {
"type": "object",
"properties": {
"resource_type": {
"type": "string",
"description": "The type of the resource to be exported. This can be a task, team, or message.",
"example": "task"
},
"filters": {
"type": "object",
"description": "Filters to apply to a resource that will be exported. These filters can be used to narrow down the resources that are included in the export.",
"properties": {
"assigned_by.any": {
"type": "array",
"description": "Filter by the users who assigned the resource. This array accepts a list of user GIDs. This is only applicable to tasks.",
"items": {
"type": "string",
"example": "12345"
}
},
"assignee.any": {
"type": "array",
"description": "Filter by the users who are assigned to the resource. This array accepts a list of user GIDs. This is only applicable to tasks.",
"items": {
"type": "string",
"example": "12345"
}
},
"commented_on_by.any": {
"type": "array",
"description": "Filter by the users who commented on the resource. This array accepts a list of user GIDs.",
"items": {
"type": "string",
"example": "12345"
}
},
"created_at.after": {
"type": "string",
"description": "Filter results to resources created after a specified date and time.",
"format": "date-time",
"example": "2023-01-01T00:00:00Z"
},
"created_at.before": {
"type": "string",
"description": "Filter results to resources created before a specified date and time.",
"format": "date-time",
"example": "2023-01-01T00:00:00Z"
},
"created_by.any": {
"type": "array",
"description": "Filter by the users who created the resource. This array accepts a list of user GIDs.",
"items": {
"type": "string",
"example": "12345"
}
},
"followers.any": {
"type": "array",
"description": "Filter by the users who are following the resource. This array accepts a list of user GIDs.",
"items": {
"type": "string",
"example": "12345"
}
},
"liked_by.any": {
"type": "array",
"description": "Filter by the users who liked the resource. This array accepts a list of user GIDs.",
"items": {
"type": "string",
"example": "12345"
}
},
"modified_at.after": {
"type": "string",
"description": "Filter results to resources modified after a specified date and time.",
"format": "date-time",
"example": "2023-01-01T00:00:00Z"
},
"modified_at.before": {
"type": "string",
"description": "Filter results to resources modified before a specified date and time.",
"format": "date-time",
"example": "2023-01-01T00:00:00Z"
}
}
},
"fields": {
"type": "array",
"description": "An array of fields to include for the resource type. If not provided, all non-optional fields for the resource type will be included. This conforms to the fields optional parameter available for all Asana endpoints which is documented [here](https://developers.asana.com/docs/inputoutput-options)",
"items": {
"type": "string",
"example": "gid"
}
}
}
}
}
}
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"A JSON payload specifying the resources to export, including filters to apply and fields to be exported.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"description\": \"A *resource_export* request starts a job to bulk export objects for one or more resources.\",\n \"properties\": {\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"Gid of a workspace.\",\n \"example\": \"12345\"\n },\n \"export_request_parameters\": {\n \"type\": \"array\",\n \"description\": \"An object containing the parameters for the export request. The keys of this object are the GIDs of the resources to be exported. The values are objects with additional parameters for each resource.\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"resource_type\": {\n \"type\": \"string\",\n \"description\": \"The type of the resource to be exported. This can be a task, team, or message.\",\n \"example\": \"task\"\n },\n \"filters\": {\n \"type\": \"object\",\n \"description\": \"Filters to apply to a resource that will be exported. These filters can be used to narrow down the resources that are included in the export.\",\n \"properties\": {\n \"assigned_by.any\": {\n \"description\": \"Filter by the users who assigned the resource. This array accepts a list of user GIDs. This is only applicable to tasks.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n },\n \"assignee.any\": {\n \"description\": \"Filter by the users who are assigned to the resource. This array accepts a list of user GIDs. This is only applicable to tasks.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n },\n \"commented_on_by.any\": {\n \"description\": \"Filter by the users who commented on the resource. This array accepts a list of user GIDs.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n },\n \"created_at.after\": {\n \"description\": \"Filter results to resources created after a specified date and time.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2023-01-01T00:00:00Z\"\n },\n \"created_at.before\": {\n \"description\": \"Filter results to resources created before a specified date and time.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2023-01-01T00:00:00Z\"\n },\n \"created_by.any\": {\n \"description\": \"Filter by the users who created the resource. This array accepts a list of user GIDs.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n },\n \"followers.any\": {\n \"description\": \"Filter by the users who are following the resource. This array accepts a list of user GIDs.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n },\n \"liked_by.any\": {\n \"description\": \"Filter by the users who liked the resource. This array accepts a list of user GIDs.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n },\n \"modified_at.after\": {\n \"description\": \"Filter results to resources modified after a specified date and time.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2023-01-01T00:00:00Z\"\n },\n \"modified_at.before\": {\n \"description\": \"Filter results to resources modified before a specified date and time.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2023-01-01T00:00:00Z\"\n }\n }\n },\n \"fields\": {\n \"type\": \"array\",\n \"description\": \"An array of fields to include for the resource type. If not provided, all non-optional fields for the resource type will be included. This conforms to the fields optional parameter available for all Asana endpoints which is documented [here](https://developers.asana.com/docs/inputoutput-options)\",\n \"items\": {\n \"type\": \"string\",\n \"example\": \"gid\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getGoalRelationship",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_goal_relationship_details",
"description": {
"tagline": "Retrieve details of a specific Asana goal relationship.",
"detailed": "Use this tool to get the complete updated record of a specific goal relationship in Asana by providing the goal relationship ID."
},
"return_annotation": "Detailed information about a specific goal relationship.",
"arguments": [
{
"name": "goal_relationship_identifier",
"alternative_names": [
"goal_relationship_id",
"goal_relationship_gid"
],
"description": "Globally unique identifier for the goal relationship you want to retrieve.",
"endpoint_argument_name": "goal_relationship_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_extra_fields",
"add_optional_details"
],
"description": "A comma-separated list of optional properties to include in the response. Use this to include properties that are not returned by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_pretty_output",
"pretty_print"
],
"description": "Enables pretty formatting for the response, increasing readability but also response size and time. Use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/goal_relationships/{goal_relationship_gid}",
"tags": [
"Goal relationships"
],
"summary": "Get a goal relationship",
"description": "Returns the complete updated goal relationship record for a single goal relationship.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"contribution_weight",
"resource_subtype",
"supported_goal",
"supported_goal.name",
"supported_goal.owner",
"supported_goal.owner.name",
"supporting_resource",
"supporting_resource.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_relationship_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal relationship."
},
"description": "Globally unique identifier for the goal relationship.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateGoalRelationship",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_goal_relationship",
"description": {
"tagline": "Update an existing goal relationship in Asana.",
"detailed": "Use this tool to update specific fields of an existing goal relationship in Asana. Provide only the fields you wish to change, as unspecified fields will remain unchanged."
},
"return_annotation": "The updated goal relationship record.",
"arguments": [
{
"name": "goal_relationship_unique_id",
"alternative_names": [
"goal_relationship_id",
"goal_id"
],
"description": "The globally unique identifier for the specific goal relationship to be updated.",
"endpoint_argument_name": "goal_relationship_gid"
},
{
"name": "updated_goal_fields",
"alternative_names": [
"goal_relationship_update_data",
"goal_update_fields"
],
"description": "A JSON object containing the fields to update in the goal relationship.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties_to_include",
"fields_to_include"
],
"description": "Specify properties to include in the response. Provide as a list of property names, which will include optional fields in the returned goal relationship.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_output",
"formatted_output"
],
"description": "Set to true for a readable response with indentation. Increases response size/time, recommended for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/goal_relationships/{goal_relationship_gid}",
"tags": [
"Goal relationships"
],
"summary": "Update a goal relationship",
"description": "An existing goal relationship can be updated by making a PUT request on the URL for\nthat goal relationship. Only the fields provided in the `data` block will be updated;\nany unspecified fields will remain unchanged.\n\nReturns the complete updated goal relationship record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"contribution_weight",
"resource_subtype",
"supported_goal",
"supported_goal.name",
"supported_goal.owner",
"supported_goal.owner.name",
"supporting_resource",
"supporting_resource.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_relationship_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal relationship."
},
"description": "Globally unique identifier for the goal relationship.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated fields for the goal relationship."
},
"description": "The updated fields for the goal relationship.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *goal relationship* is an object representing the relationship between a goal and another goal, a project, a task, or a portfolio.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "goal_relationship"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.",
"enum": [
"subgoal",
"supporting_work"
],
"example": "subgoal"
},
"supporting_resource": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "The supporting resource that supports the goal. This can be either a project, task, portfolio, or goal.",
"properties": {}
}
]
},
"contribution_weight": {
"type": "number",
"description": "The weight that the supporting resource's progress contributes to the supported goal's progress. This can be 0, 1, or any value in between.",
"example": 1.0
}
}
},
{
"type": "object",
"properties": {
"supported_goal": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "goal"
},
"name": {
"type": "string",
"description": "The name of the goal.",
"example": "Grow web traffic by 30%"
},
"owner": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
}
}
},
{
"type": "object",
"description": "The goal that the supporting resource supports.",
"properties": {}
}
]
}
}
}
]
},
{
"type": "object",
"properties": {}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the goal relationship.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *goal relationship* is an object representing the relationship between a goal and another goal, a project, a task, or a portfolio.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"goal_relationship\",\n \"x-insert-after\": \"gid\"\n },\n \"resource_subtype\": {\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"subgoal\",\n \"enum\": [\n \"subgoal\",\n \"supporting_work\"\n ]\n },\n \"supporting_resource\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"readOnly\": true,\n \"description\": \"The supporting resource that supports the goal. This can be either a project, task, portfolio, or goal.\"\n }\n ]\n },\n \"contribution_weight\": {\n \"description\": \"The weight that the supporting resource's progress contributes to the supported goal's progress. This can be 0, 1, or any value in between.\",\n \"type\": \"number\",\n \"example\": 1.0\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"supported_goal\": {\n \"allOf\": [\n {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"goal\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the goal.\",\n \"example\": \"Grow web traffic by 30%\"\n },\n \"owner\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true\n }\n ]\n }\n }\n },\n {\n \"type\": \"object\",\n \"readOnly\": true,\n \"description\": \"The goal that the supporting resource supports.\"\n }\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\"\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getGoalRelationships",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_goal_relationships",
"description": {
"tagline": "Retrieve compact goal relationship records from Asana.",
"detailed": "Call this tool to get information on goal relationships within an Asana workspace. It provides a compact view of the connections between goals, which may be useful for tracking progress or understanding hierarchy."
},
"return_annotation": "Compact goal relationship records.",
"arguments": [
{
"name": "supported_goal_id",
"alternative_names": [
"goal_unique_id",
"goal_identifier"
],
"description": "Globally unique identifier for the supported goal in the goal relationship.",
"endpoint_argument_name": "supported_goal"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"per_page_limit"
],
"description": "Specify the number of goal relationship records to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_token",
"continue_from_offset"
],
"description": "Token to specify the starting point for the next page of results. Use the token from the previous response to continue pagination.",
"endpoint_argument_name": "offset"
},
{
"name": "goal_relationship_resource_subtype",
"alternative_names": [
"resource_type_filter",
"relationship_type_filter"
],
"description": "Filter goal relationships by a specific resource subtype.",
"endpoint_argument_name": "resource_subtype"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"additional_properties"
],
"description": "Comma-separated list of optional properties to include in the response. Allows access to additional fields excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to true for pretty JSON output with indentation. Use mainly for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/goal_relationships",
"tags": [
"Goal relationships"
],
"summary": "Get goal relationships",
"description": "Returns compact goal relationship records.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "supported_goal",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the supported goal in the goal relationship."
},
"description": "Globally unique identifier for the supported goal in the goal relationship.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "resource_subtype",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "If provided, filter to goal relationships with a given resource_subtype."
},
"description": "If provided, filter to goal relationships with a given resource_subtype.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"contribution_weight",
"offset",
"path",
"resource_subtype",
"supported_goal",
"supported_goal.name",
"supported_goal.owner",
"supported_goal.owner.name",
"supporting_resource",
"supporting_resource.name",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "addSupportingRelationship",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_goal_supporting_relationship",
"description": {
"tagline": "Add a supporting resource to a specific goal in Asana.",
"detailed": "Use this tool to create a relationship between a goal and a supporting resource in Asana by specifying the goal ID. This tool is useful when you need to associate additional resources with an existing goal."
},
"return_annotation": "Newly created goal relationship record.",
"arguments": [
{
"name": "goal_global_identifier",
"alternative_names": [
"goal_unique_id",
"goal_gid"
],
"description": "Globally unique identifier for the goal to which a supporting resource will be added.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"return_optional_fields",
"select_optional_fields"
],
"description": "Comma-separated list of optional resource properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "supporting_resource_id",
"alternative_names": [
"support_resource_gid",
"supporting_resource_gid"
],
"description": "The GID of the supporting resource to add to the parent goal. It must be the GID of a goal, project, task, or portfolio.",
"endpoint_argument_name": "data.supporting_resource"
},
{
"name": "insert_subgoal_before_id",
"alternative_names": [
"add_before_subgoal_id",
"place_before_subgoal_id"
],
"description": "The ID of an existing subgoal. The new subgoal will be placed before this subgoal. Cannot be used with `insert_after_subgoal_id`. Only for adding subgoals.",
"endpoint_argument_name": "data.insert_before"
},
{
"name": "insert_after_subgoal_id",
"alternative_names": [
"add_after_subgoal_id",
"next_subgoal_id"
],
"description": "ID of the subgoal to insert the new subgoal after. Cannot use with `insert_before`. Only for subgoal addition.",
"endpoint_argument_name": "data.insert_after"
},
{
"name": "supporting_goal_contribution_weight",
"alternative_names": [
"goal_support_contribution",
"subgoal_contribution_percentage"
],
"description": "A number between 0 and 1 indicating the supporting goal's contribution to the parent goal's progress. Defaults to 0.",
"endpoint_argument_name": "data.contribution_weight"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_pretty_response",
"use_pretty_format"
],
"description": "Enable to receive the response in a formatted and indented manner for easier readability. Recommended for debugging purposes as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/goals/{goal_gid}/addSupportingRelationship",
"tags": [
"Goal relationships"
],
"summary": "Add a supporting goal relationship",
"description": "Creates a goal relationship by adding a supporting resource to a given goal.\n\nReturns the newly created goal relationship record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"contribution_weight",
"resource_subtype",
"supported_goal",
"supported_goal.name",
"supported_goal.owner",
"supported_goal.owner.name",
"supporting_resource",
"supporting_resource.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.supporting_resource",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The gid of the supporting resource to add to the parent goal. Must be the gid of a goal, project, task, or portfolio."
},
"description": "The gid of the supporting resource to add to the parent goal. Must be the gid of a goal, project, task, or portfolio.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The gid of the supporting resource to add to the parent goal. Must be the gid of a goal, project, task, or portfolio.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.insert_before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal."
},
"description": "An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal.",
"example": "1331"
},
"schema_required": false
},
{
"name": "data.insert_after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal."
},
"description": "An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal.",
"example": "1331"
},
"schema_required": false
},
{
"name": "data.contribution_weight",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Defines how much the supporting goal\u2019s progress contributes to the parent goal\u2019s overall progress. When used with automatically calculated [Goal Metrics](/reference/creategoalmetric) (such as `progress_source = subgoal_progress`), this value must be greater than 0 for the subgoal to count toward the parent goal\u2019s progress.\nAccepts a number between 0 and 1 (inclusive). Defaults to `0`."
},
"description": "Defines how much the supporting goal\u2019s progress contributes to the parent goal\u2019s overall progress. When used with automatically calculated [Goal Metrics](/reference/creategoalmetric) (such as `progress_source = subgoal_progress`), this value must be greater than 0 for the subgoal to count toward the parent goal\u2019s progress.\nAccepts a number between 0 and 1 (inclusive). Defaults to `0`.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "number",
"description": "Defines how much the supporting goal\u2019s progress contributes to the parent goal\u2019s overall progress. When used with automatically calculated [Goal Metrics](/reference/creategoalmetric) (such as `progress_source = subgoal_progress`), this value must be greater than 0 for the subgoal to count toward the parent goal\u2019s progress.\nAccepts a number between 0 and 1 (inclusive). Defaults to `0`.",
"example": 0
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The supporting resource to be added to the goal\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"supporting_resource\"\n ],\n \"properties\": {\n \"supporting_resource\": {\n \"description\": \"The gid of the supporting resource to add to the parent goal. Must be the gid of a goal, project, task, or portfolio.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"insert_before\": {\n \"description\": \"An id of a subgoal of this parent goal. The new subgoal will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n },\n \"insert_after\": {\n \"description\": \"An id of a subgoal of this parent goal. The new subgoal will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified. Currently only supported when adding a subgoal.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n },\n \"contribution_weight\": {\n \"description\": \"Defines how much the supporting goal\\u2019s progress contributes to the parent goal\\u2019s overall progress. When used with automatically calculated [Goal Metrics](/reference/creategoalmetric) (such as `progress_source = subgoal_progress`), this value must be greater than 0 for the subgoal to count toward the parent goal\\u2019s progress.\\nAccepts a number between 0 and 1 (inclusive). Defaults to `0`.\",\n \"type\": \"number\",\n \"example\": 0\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeSupportingRelationship",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_goal_relationship",
"description": {
"tagline": "Removes a supporting relationship from a goal in Asana.",
"detailed": "Use this tool to remove a specified supporting relationship from a parent goal in Asana. It is useful for managing and updating the hierarchical organization of goals."
},
"return_annotation": "Confirmation of goal relationship removal.",
"arguments": [
{
"name": "goal_global_id",
"alternative_names": [
"goal_unique_identifier",
"goal_gid_value"
],
"description": "Globally unique identifier for the goal to identify which goal is being modified.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "supporting_resource_gid",
"alternative_names": [
"supporting_gid",
"resource_gid"
],
"description": "The globally unique identifier (gid) of the supporting resource (goal, project, task, or portfolio) to remove from the parent goal.",
"endpoint_argument_name": "data.supporting_resource"
},
{
"name": "provide_pretty_output",
"alternative_names": [
"format_pretty_output",
"output_pretty_format"
],
"description": "Provides pretty-printed output for debugging, enhancing readability with line breaks and indentation. Increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/goals/{goal_gid}/removeSupportingRelationship",
"tags": [
"Goal relationships"
],
"summary": "Removes a supporting goal relationship",
"description": "Removes a goal relationship for a given parent goal.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.supporting_resource",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The gid of the supporting resource to remove from the parent goal. Must be the gid of a goal, project, task, or portfolio."
},
"description": "The gid of the supporting resource to remove from the parent goal. Must be the gid of a goal, project, task, or portfolio.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The gid of the supporting resource to remove from the parent goal. Must be the gid of a goal, project, task, or portfolio.",
"example": "12345"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The supporting resource to be removed from the goal\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"supporting_resource\"\n ],\n \"properties\": {\n \"supporting_resource\": {\n \"description\": \"The gid of the supporting resource to remove from the parent goal. Must be the gid of a goal, project, task, or portfolio.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getGoal",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_goal_details",
"description": {
"tagline": "Fetches detailed information for a specific Asana goal.",
"detailed": "This tool retrieves the complete record of a specified goal in Asana, including associated time periods and custom field settings. It requires the necessary permissions: 'goals:read', 'time_periods:read', and 'custom_fields:read'."
},
"return_annotation": "The complete record of a specific Asana goal.",
"arguments": [
{
"name": "goal_global_identifier",
"alternative_names": [
"goal_unique_id",
"goal_gid"
],
"description": "Globally unique identifier for the goal to be retrieved.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"include_fields",
"optional_fields"
],
"description": "Specify optional properties to include in the response as a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"format_response_pretty"
],
"description": "If true, formats the response with line breaks and indentation for readability, increasing response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/goals/{goal_gid}",
"tags": [
"Goals"
],
"summary": "Get a goal",
"description": "<b>Required scope: </b><code>goals:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>time_period</code></td>\n <td><code>time_periods:read</code></td>\n </tr>\n <tr>\n <td><code>custom_field_settings</code></td>\n <td><code>custom_fields:read</code></td>\n </tr>\n</table>\n\nReturns the complete goal record for a single goal.",
"requires_security": true,
"oauth_scopes": [
"goals:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateGoal",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_asana_goal",
"description": {
"tagline": "Update a specific goal in Asana.",
"detailed": "Use this tool to update the details of an existing goal in Asana. Only the specified fields in the request will be changed, while others remain unchanged. It returns the fully updated goal record."
},
"return_annotation": "The complete updated goal record.",
"arguments": [
{
"name": "goal_unique_id",
"alternative_names": [
"goal_identifier",
"goal_id"
],
"description": "Globally unique identifier for the goal to be updated.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "goal_update_fields",
"alternative_names": [
"goal_data_update",
"update_goal_fields"
],
"description": "JSON object containing the fields to update in the goal. Only specified fields will be changed.",
"endpoint_argument_name": "requestBody"
},
{
"name": "included_goal_properties",
"alternative_names": [
"goal_optional_fields",
"additional_goal_properties"
],
"description": "List of optional goal properties to include in the response. Provide as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_response",
"format_output_pretty"
],
"description": "Set to true to format the response with line breaks and indentation for readability. Mainly for debugging as it increases response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/goals/{goal_gid}",
"tags": [
"Goals"
],
"summary": "Update a goal",
"description": "An existing goal can be updated by making a PUT request on the URL for\nthat goal. Only the fields provided in the `data` block will be updated;\nany unspecified fields will remain unchanged.\n\nReturns the complete updated goal record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated fields for the goal."
},
"description": "The updated fields for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "goal"
},
"name": {
"type": "string",
"description": "The name of the goal.",
"example": "Grow web traffic by 30%"
},
"html_notes": {
"type": "string",
"description": "The notes of the goal with formatting as HTML.",
"example": "<body>Start building brand awareness.</body>"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the goal (i.e. its description).",
"example": "Start building brand awareness."
},
"due_on": {
"type": "string",
"description": "The localized day on which this goal is due. This takes a date with format `YYYY-MM-DD`.",
"example": "2019-09-15"
},
"start_on": {
"type": "string",
"description": "The day on which work for this goal begins, or null if the goal has no start date. This takes a date with `YYYY-MM-DD` format, and cannot be set unless there is an accompanying due date.",
"example": "2019-09-14"
},
"is_workspace_level": {
"type": "boolean",
"description": "*Conditional*. This property is only present when the `workspace` provided is an organization. Whether the goal belongs to the `workspace` (and is listed as part of the workspace\u2019s goals) or not. If it isn\u2019t a workspace-level goal, it is a team-level goal, and is associated with the goal\u2019s team.",
"example": true
},
"liked": {
"type": "boolean",
"description": "True if the goal is liked by the authorized user, false if not.",
"example": false
}
}
},
{
"type": "object",
"properties": {
"team": {
"type": "string",
"description": "*Conditional*. This property is only present when the `workspace` provided is an organization.",
"example": "12345"
},
"workspace": {
"type": "string",
"description": "The `gid` of a workspace.",
"example": "12345"
},
"time_period": {
"type": "string",
"description": "The `gid` of a time period.",
"example": "12345"
},
"owner": {
"type": "string",
"description": "The `gid` of a user.",
"example": "12345"
}
}
}
]
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"description": "The current status of this goal. When the goal is open, its status can be `green`, `yellow`, and `red` to reflect \"On Track\", \"At Risk\", and \"Off Track\", respectively. When the goal is closed, the value can be `missed`, `achieved`, `partial`, or `dropped`.\n*Note* you can only write to this property if `metric` is set.",
"example": "green"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the goal.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"goal\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the goal.\",\n \"example\": \"Grow web traffic by 30%\"\n },\n \"html_notes\": {\n \"type\": \"string\",\n \"description\": \"The notes of the goal with formatting as HTML.\",\n \"example\": \"<body>Start building brand awareness.</body>\"\n },\n \"notes\": {\n \"type\": \"string\",\n \"description\": \"Free-form textual information associated with the goal (i.e. its description).\",\n \"example\": \"Start building brand awareness.\"\n },\n \"due_on\": {\n \"type\": \"string\",\n \"description\": \"The localized day on which this goal is due. This takes a date with format `YYYY-MM-DD`.\",\n \"example\": \"2019-09-15\",\n \"nullable\": true\n },\n \"start_on\": {\n \"type\": \"string\",\n \"description\": \"The day on which work for this goal begins, or null if the goal has no start date. This takes a date with `YYYY-MM-DD` format, and cannot be set unless there is an accompanying due date.\",\n \"example\": \"2019-09-14\",\n \"nullable\": true\n },\n \"is_workspace_level\": {\n \"type\": \"boolean\",\n \"description\": \"*Conditional*. This property is only present when the `workspace` provided is an organization. Whether the goal belongs to the `workspace` (and is listed as part of the workspace\\u2019s goals) or not. If it isn\\u2019t a workspace-level goal, it is a team-level goal, and is associated with the goal\\u2019s team.\",\n \"example\": true\n },\n \"liked\": {\n \"type\": \"boolean\",\n \"description\": \"True if the goal is liked by the authorized user, false if not.\",\n \"example\": false\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"team\": {\n \"type\": \"string\",\n \"description\": \"*Conditional*. This property is only present when the `workspace` provided is an organization.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a workspace.\",\n \"example\": \"12345\"\n },\n \"time_period\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a time period.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"owner\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a user.\",\n \"example\": \"12345\",\n \"nullable\": true\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"status\": {\n \"type\": \"string\",\n \"description\": \"The current status of this goal. When the goal is open, its status can be `green`, `yellow`, and `red` to reflect \\\"On Track\\\", \\\"At Risk\\\", and \\\"Off Track\\\", respectively. When the goal is closed, the value can be `missed`, `achieved`, `partial`, or `dropped`.\\n*Note* you can only write to this property if `metric` is set.\",\n \"example\": \"green\",\n \"nullable\": true\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteGoal",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_goal",
"description": {
"tagline": "Delete a specific goal in Asana.",
"detailed": "Use this tool to delete an existing goal in Asana by specifying the goal ID."
},
"return_annotation": "Confirms the goal has been deleted.",
"arguments": [
{
"name": "goal_identifier",
"alternative_names": [
"goal_id",
"goal_global_id"
],
"description": "The unique global identifier for the specific Asana goal to delete.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_output_pretty",
"pretty_formatting"
],
"description": "If true, provides pretty JSON output with indentation and line breaks for readability. Recommended for debugging due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/goals/{goal_gid}",
"tags": [
"Goals"
],
"summary": "Delete a goal",
"description": "A specific, existing goal can be deleted by making a DELETE request on the URL for that goal.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getGoals",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_compact_goals",
"description": {
"tagline": "Retrieve compact goal records from Asana.",
"detailed": "Use this tool to get a summary of goals available in Asana. It should be called when you need to access an overview of goals, requiring the 'goals:read' permission scope."
},
"return_annotation": "Compact goal records from Asana.",
"arguments": [
{
"name": "portfolio_id",
"alternative_names": [
"portfolio_unique_id",
"portfolio_identifier"
],
"description": "Globally unique identifier for the supporting portfolio in Asana.",
"endpoint_argument_name": "portfolio"
},
{
"name": "project_id",
"alternative_names": [
"supporting_project_id",
"project_identifier"
],
"description": "Globally unique identifier for the project. Used to filter goals associated with a specific project.",
"endpoint_argument_name": "project"
},
{
"name": "supporting_task_id",
"alternative_names": [
"task_identifier",
"task_id"
],
"description": "Globally unique identifier for the supporting task in Asana.",
"endpoint_argument_name": "task"
},
{
"name": "team_id",
"alternative_names": [
"team_identifier",
"unique_team_key"
],
"description": "Globally unique identifier for the team. Use this to filter goals associated with a specific team.",
"endpoint_argument_name": "team"
},
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"workspace_guid"
],
"description": "Globally unique identifier for the workspace.",
"endpoint_argument_name": "workspace"
},
{
"name": "time_period_identifiers",
"alternative_names": [
"time_period_ids",
"time_period_uuids"
],
"description": "A list of globally unique identifiers for the desired time periods to filter the goals.",
"endpoint_argument_name": "time_periods"
},
{
"name": "results_per_page",
"alternative_names": [
"objects_per_page",
"page_size"
],
"description": "The number of goal records to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_token",
"result_offset"
],
"description": "Offset token for pagination. Use the token from a previous response to retrieve the next page. If not provided, returns the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "included_optional_properties",
"alternative_names": [
"opt_fields_list",
"properties_to_include"
],
"description": "A list of specific properties to include in the response. Use a comma-separated list format.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_output_pretty",
"pretty_response_format"
],
"description": "Enable pretty formatting for readable JSON response. Mainly for debugging; increases response time and size.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "is_workspace_level",
"alternative_names": [
"workspace_level",
"filter_by_workspace_level"
],
"description": "Set to true to filter for goals where the workspace level is active. Must be used with the workspace parameter.",
"endpoint_argument_name": "is_workspace_level"
}
]
},
"method": "GET",
"path": "/goals",
"tags": [
"Goals"
],
"summary": "Get goals",
"description": "<b>Required scope: </b><code>goals:read</code>\n\nReturns compact goal records.",
"requires_security": true,
"oauth_scopes": [
"goals:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "portfolio",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for supporting portfolio."
},
"description": "Globally unique identifier for supporting portfolio.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "project",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for supporting project."
},
"description": "Globally unique identifier for supporting project.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "task",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for supporting task."
},
"description": "Globally unique identifier for supporting task.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "is_workspace_level",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to goals with is_workspace_level set to query value. Must be used with the workspace parameter."
},
"description": "Filter to goals with is_workspace_level set to query value. Must be used with the workspace parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "team",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace."
},
"description": "Globally unique identifier for the workspace.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "time_periods",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifiers for the time periods."
},
"description": "Globally unique identifiers for the time periods.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string"
}
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"offset",
"owner",
"owner.name",
"path",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createGoal",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_asana_goal",
"description": {
"tagline": "Create a new goal in Asana workspace or team.",
"detailed": "This tool is used to create a new goal in an Asana workspace or team. It returns the full record of the newly created goal, making it essential for managing and tracking team objectives within Asana."
},
"return_annotation": "The full record of the newly created goal.",
"arguments": [
{
"name": "goal_data",
"alternative_names": [
"goal_creation_data",
"new_goal_data"
],
"description": "JSON object containing details of the goal to create, such as title, description, due_date, and any other relevant fields.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"additional_fields"
],
"description": "Comma-separated list of optional properties to include in the response for a more comprehensive goal record.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"format_output_pretty"
],
"description": "Enables pretty formatting for the API response, useful for debugging. Increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/goals",
"tags": [
"Goals"
],
"summary": "Create a goal",
"description": "Creates a new goal in a workspace or team.\n\nReturns the full record of the newly created goal.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The goal to create."
},
"description": "The goal to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "goal"
},
"name": {
"type": "string",
"description": "The name of the goal.",
"example": "Grow web traffic by 30%"
},
"html_notes": {
"type": "string",
"description": "The notes of the goal with formatting as HTML.",
"example": "<body>Start building brand awareness.</body>"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the goal (i.e. its description).",
"example": "Start building brand awareness."
},
"due_on": {
"type": "string",
"description": "The localized day on which this goal is due. This takes a date with format `YYYY-MM-DD`.",
"example": "2019-09-15"
},
"start_on": {
"type": "string",
"description": "The day on which work for this goal begins, or null if the goal has no start date. This takes a date with `YYYY-MM-DD` format, and cannot be set unless there is an accompanying due date.",
"example": "2019-09-14"
},
"is_workspace_level": {
"type": "boolean",
"description": "*Conditional*. This property is only present when the `workspace` provided is an organization. Whether the goal belongs to the `workspace` (and is listed as part of the workspace\u2019s goals) or not. If it isn\u2019t a workspace-level goal, it is a team-level goal, and is associated with the goal\u2019s team.",
"example": true
},
"liked": {
"type": "boolean",
"description": "True if the goal is liked by the authorized user, false if not.",
"example": false
}
}
},
{
"type": "object",
"properties": {
"team": {
"type": "string",
"description": "*Conditional*. This property is only present when the `workspace` provided is an organization.",
"example": "12345"
},
"workspace": {
"type": "string",
"description": "The `gid` of a workspace.",
"example": "12345"
},
"time_period": {
"type": "string",
"description": "The `gid` of a time period.",
"example": "12345"
},
"owner": {
"type": "string",
"description": "The `gid` of a user.",
"example": "12345"
}
}
}
]
},
{
"type": "object",
"properties": {
"followers": {
"type": "array",
"items": {
"type": "string",
"description": "The `gid` of a user."
}
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The goal to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"goal\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"The name of the goal.\",\n \"example\": \"Grow web traffic by 30%\"\n },\n \"html_notes\": {\n \"type\": \"string\",\n \"description\": \"The notes of the goal with formatting as HTML.\",\n \"example\": \"<body>Start building brand awareness.</body>\"\n },\n \"notes\": {\n \"type\": \"string\",\n \"description\": \"Free-form textual information associated with the goal (i.e. its description).\",\n \"example\": \"Start building brand awareness.\"\n },\n \"due_on\": {\n \"type\": \"string\",\n \"description\": \"The localized day on which this goal is due. This takes a date with format `YYYY-MM-DD`.\",\n \"example\": \"2019-09-15\",\n \"nullable\": true\n },\n \"start_on\": {\n \"type\": \"string\",\n \"description\": \"The day on which work for this goal begins, or null if the goal has no start date. This takes a date with `YYYY-MM-DD` format, and cannot be set unless there is an accompanying due date.\",\n \"example\": \"2019-09-14\",\n \"nullable\": true\n },\n \"is_workspace_level\": {\n \"type\": \"boolean\",\n \"description\": \"*Conditional*. This property is only present when the `workspace` provided is an organization. Whether the goal belongs to the `workspace` (and is listed as part of the workspace\\u2019s goals) or not. If it isn\\u2019t a workspace-level goal, it is a team-level goal, and is associated with the goal\\u2019s team.\",\n \"example\": true\n },\n \"liked\": {\n \"type\": \"boolean\",\n \"description\": \"True if the goal is liked by the authorized user, false if not.\",\n \"example\": false\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"team\": {\n \"type\": \"string\",\n \"description\": \"*Conditional*. This property is only present when the `workspace` provided is an organization.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a workspace.\",\n \"example\": \"12345\"\n },\n \"time_period\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a time period.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"owner\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a user.\",\n \"example\": \"12345\",\n \"nullable\": true\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"followers\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "createGoalMetric",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_goal_metric",
"description": {
"tagline": "Create and add a goal metric to a specific goal.",
"detailed": "Use this tool to create and add a metric to a specified goal in Asana. It replaces an existing goal metric if one already exists."
},
"return_annotation": "Goal metric creation confirmation message.",
"arguments": [
{
"name": "goal_global_id",
"alternative_names": [
"goal_identifier",
"goal_id"
],
"description": "Globally unique identifier for the goal to which the metric will be added.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "goal_metric_data",
"alternative_names": [
"goal_metric_payload",
"metric_creation_data"
],
"description": "The JSON data for creating a goal metric, containing details such as gid, resource type, and metric specifics.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"additional_fields"
],
"description": "Specify the optional properties to include in the response as a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"formatted_response"
],
"description": "Set to true for formatted, human-readable output in JSON. Ideal for debugging. May increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/goals/{goal_gid}/setMetric",
"tags": [
"Goals"
],
"summary": "Create a goal metric",
"description": "Creates and adds a goal metric to a specified goal. Note that this replaces an existing goal metric if one already exists.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"gid": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the resource, as a string."
},
"resource_type": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The base type of this resource."
},
"resource_subtype": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"number"
],
"properties": null,
"inner_properties": null,
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning."
},
"precision": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Conditional*. Only relevant for goal metrics of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%."
},
"unit": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"none",
"currency",
"percentage"
],
"properties": null,
"inner_properties": null,
"description": "A supported unit of measure for the goal metric, or none."
},
"currency_code": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 4217 currency code to format this custom field. This will be null if the `unit` is not `currency`."
},
"initial_number_value": {
"val_type": "number",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This number is the start value of a goal metric of type number."
},
"target_number_value": {
"val_type": "number",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This number is the end value of a goal metric of type number. This number cannot equal `initial_number_value`."
},
"current_number_value": {
"val_type": "number",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This number is the current value of a goal metric of type number."
},
"current_display_value": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This string is the current value of a goal metric of type string."
},
"progress_source": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"manual",
"subgoal_progress",
"project_task_completion",
"project_milestone_completion",
"task_completion",
"external"
],
"properties": null,
"inner_properties": null,
"description": "This field defines how the progress value of a goal metric is being calculated. A goal's progress can be provided manually by the user, calculated automatically from contributing subgoals, projects, or tasks, or managed by an integration with an external data source, such as Salesforce."
},
"is_custom_weight": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Conditional*. Only relevant if `metric.progress_source` is one of `subgoal_progress`, `project_task_completion`, `project_milestone_completion`, or `task_completion`. If true, we use the supporting object's custom weight to calculate the goal's progress. If false, we treat all supporting objects as equally weighted"
}
},
"inner_properties": null,
"description": "A generic Asana Resource, containing a globally unique identifier."
}
},
"inner_properties": null,
"description": "The goal metric to create."
},
"description": "The goal metric to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.",
"enum": [
"number"
],
"example": "number"
},
"precision": {
"type": "integer",
"description": "*Conditional*. Only relevant for goal metrics of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.",
"example": 2
},
"unit": {
"type": "string",
"description": "A supported unit of measure for the goal metric, or none.",
"enum": [
"none",
"currency",
"percentage"
]
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `unit` is not `currency`.",
"example": "EUR"
},
"initial_number_value": {
"type": "number",
"description": "This number is the start value of a goal metric of type number.",
"example": 5.2
},
"target_number_value": {
"type": "number",
"description": "This number is the end value of a goal metric of type number. This number cannot equal `initial_number_value`.",
"example": 10.2
},
"current_number_value": {
"type": "number",
"description": "This number is the current value of a goal metric of type number.",
"example": 8.12
},
"current_display_value": {
"type": "string",
"description": "This string is the current value of a goal metric of type string.",
"example": "8.12"
},
"progress_source": {
"type": "string",
"description": "This field defines how the progress value of a goal metric is being calculated. A goal's progress can be provided manually by the user, calculated automatically from contributing subgoals, projects, or tasks, or managed by an integration with an external data source, such as Salesforce.",
"enum": [
"manual",
"subgoal_progress",
"project_task_completion",
"project_milestone_completion",
"task_completion",
"external"
],
"example": "manual"
},
"is_custom_weight": {
"type": "boolean",
"description": "*Conditional*. Only relevant if `metric.progress_source` is one of `subgoal_progress`, `project_task_completion`, `project_milestone_completion`, or `task_completion`. If true, we use the supporting object's custom weight to calculate the goal's progress. If false, we treat all supporting objects as equally weighted",
"example": false
}
}
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The goal metric to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"resource_subtype\": {\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"number\",\n \"enum\": [\n \"number\"\n ]\n },\n \"precision\": {\n \"description\": \"*Conditional*. Only relevant for goal metrics of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"unit\": {\n \"description\": \"A supported unit of measure for the goal metric, or none.\",\n \"type\": \"string\",\n \"enum\": [\n \"none\",\n \"currency\",\n \"percentage\"\n ]\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `unit` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"initial_number_value\": {\n \"description\": \"This number is the start value of a goal metric of type number.\",\n \"type\": \"number\",\n \"example\": 5.2\n },\n \"target_number_value\": {\n \"description\": \"This number is the end value of a goal metric of type number. This number cannot equal `initial_number_value`.\",\n \"type\": \"number\",\n \"example\": 10.2\n },\n \"current_number_value\": {\n \"description\": \"This number is the current value of a goal metric of type number.\",\n \"type\": \"number\",\n \"example\": 8.12\n },\n \"current_display_value\": {\n \"description\": \"This string is the current value of a goal metric of type string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"8.12\"\n },\n \"progress_source\": {\n \"description\": \"This field defines how the progress value of a goal metric is being calculated. A goal's progress can be provided manually by the user, calculated automatically from contributing subgoals, projects, or tasks, or managed by an integration with an external data source, such as Salesforce.\",\n \"type\": \"string\",\n \"enum\": [\n \"manual\",\n \"subgoal_progress\",\n \"project_task_completion\",\n \"project_milestone_completion\",\n \"task_completion\",\n \"external\"\n ],\n \"example\": \"manual\"\n },\n \"is_custom_weight\": {\n \"description\": \"*Conditional*. Only relevant if `metric.progress_source` is one of `subgoal_progress`, `project_task_completion`, `project_milestone_completion`, or `task_completion`. If true, we use the supporting object's custom weight to calculate the goal's progress. If false, we treat all supporting objects as equally weighted\",\n \"type\": \"boolean\",\n \"example\": false\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "updateGoalMetric",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_goal_metric",
"description": {
"tagline": "Updates a goal's current metric value in Asana.",
"detailed": "Use this tool to update the existing metric value of a goal in Asana. It returns the complete updated goal metric record. If the metric does not exist, it will respond with an error."
},
"return_annotation": "The updated goal metric record.",
"arguments": [
{
"name": "goal_unique_identifier",
"alternative_names": [
"goal_id",
"goal_identifier"
],
"description": "Globally unique identifier for the Asana goal to be updated.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_properties",
"extra_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "resource_unique_identifier",
"alternative_names": [
"resource_gid",
"unique_id_string"
],
"description": "Globally unique identifier of the resource in Asana, represented as a string.",
"endpoint_argument_name": "data.gid"
},
{
"name": "resource_base_type",
"alternative_names": [
"base_resource_type",
"resource_type"
],
"description": "The base type of the resource to update. It must be a string indicating the type of resource.",
"endpoint_argument_name": "data.resource_type"
},
{
"name": "current_metric_value",
"alternative_names": [
"current_value_number",
"goal_metric_value"
],
"description": "The current numeric value of a goal metric. Required if metric type is number.",
"endpoint_argument_name": "data.current_number_value"
},
{
"name": "pretty_output",
"alternative_names": [
"formatted_output",
"formatted_response"
],
"description": "Set to true for a more readable response format, useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/goals/{goal_gid}/setMetricCurrentValue",
"tags": [
"Goals"
],
"summary": "Update a goal metric",
"description": "Updates a goal's existing metric's `current_number_value` if one exists,\notherwise responds with a 400 status code.\n\nReturns the complete updated goal metric record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the resource, as a string."
},
"description": "Globally unique identifier of the resource, as a string.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.resource_type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The base type of this resource."
},
"description": "The base type of this resource.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"schema_required": false
},
{
"name": "data.current_number_value",
"value_schema": {
"val_type": "number",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Conditional*. This number is the current value of a goal metric of type number."
},
"description": "*Conditional*. This number is the current value of a goal metric of type number.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "number",
"description": "*Conditional*. This number is the current value of a goal metric of type number.",
"example": 8.12
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the goal metric.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"current_number_value\": {\n \"description\": \"*Conditional*. This number is the current value of a goal metric of type number.\",\n \"type\": \"number\",\n \"example\": 8.12\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addFollowers",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_followers_to_goal",
"description": {
"tagline": "Add followers to a specific goal in Asana.",
"detailed": "Use this tool to add followers to a specific goal in Asana. It returns the updated goal details after successfully adding the followers."
},
"return_annotation": "Updated goal details with new followers.",
"arguments": [
{
"name": "goal_unique_id",
"alternative_names": [
"goal_identifier",
"goal_id"
],
"description": "Globally unique identifier for the goal to which you want to add followers.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "optional_properties_to_include",
"alternative_names": [
"include_optional_fields",
"properties_list"
],
"description": "Comma-separated list of optional properties to include in the response for additional details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "user_identifiers_array",
"alternative_names": [
"followers_identifiers",
"goal_followers_list"
],
"description": "An array of user identifiers to add as followers. These can be 'me', emails, or user gids.",
"endpoint_argument_name": "data.followers"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to true to receive the response in a human-readable format with proper indentation and line breaks. Useful for debugging but increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/goals/{goal_gid}/addFollowers",
"tags": [
"Goals"
],
"summary": "Add a collaborator to a goal",
"description": "Adds followers to a goal. Returns the goal the followers were added to.\nEach goal can be associated with zero or more followers in the system.\nRequests to add/remove followers, if successful, will return the complete updated goal record, described above.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.followers",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The followers to be added as collaborators\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"followers\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"13579\",\n \"321654\"\n ]\n }\n },\n \"required\": [\n \"followers\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeFollowers",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_goal_followers",
"description": {
"tagline": "Remove followers from a specific goal in Asana.",
"detailed": "Use this tool to remove followers from a goal in Asana. It returns the complete updated goal record with the followers removed. Ideal for managing team members involved with specific goals."
},
"return_annotation": "The updated goal with followers removed.",
"arguments": [
{
"name": "goal_unique_id",
"alternative_names": [
"goal_id",
"objective_id"
],
"description": "Globally unique identifier for the goal to remove followers from.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "included_optional_fields",
"alternative_names": [
"optional_properties",
"extra_fields"
],
"description": "Comma-separated list of optional properties to include in the response for additional details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "followers_to_remove",
"alternative_names": [
"users_to_unfollow",
"remove_user_followers"
],
"description": "An array of user identifiers to remove as followers. These can be \"me\", an email, or a user gid.",
"endpoint_argument_name": "data.followers"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable pretty JSON output with line breaking and indentation. Useful for debugging; increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/goals/{goal_gid}/removeFollowers",
"tags": [
"Goals"
],
"summary": "Remove a collaborator from a goal",
"description": "Removes followers from a goal. Returns the goal the followers were removed from.\nEach goal can be associated with zero or more followers in the system.\nRequests to add/remove followers, if successful, will return the complete updated goal record, described above.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.followers",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The followers to be removed as collaborators\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"followers\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"13579\",\n \"321654\"\n ]\n }\n },\n \"required\": [\n \"followers\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getParentGoalsForGoal",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_parent_goals_for_goal",
"description": {
"tagline": "Fetches parent goals for a specific Asana goal.",
"detailed": "Use this tool to obtain a list of parent goals for a specified goal in Asana. It requires the 'goals:read' scope to access the data."
},
"return_annotation": "Compact representation of all parent goals for a specified goal.",
"arguments": [
{
"name": "goal_unique_identifier",
"alternative_names": [
"goal_id",
"unique_goal_id"
],
"description": "Globally unique identifier for the Asana goal whose parent goals are to be fetched.",
"endpoint_argument_name": "goal_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties",
"fields_to_include"
],
"description": "List of optional properties to include in the response. It should be a comma-separated list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"pretty_output_mode",
"enable_pretty_formatting"
],
"description": "Set to true for a readable output format with line breaks and indentation, suitable for debugging. May increase response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/goals/{goal_gid}/parentGoals",
"tags": [
"Goals"
],
"summary": "Get parent goals from a goal",
"description": "<b>Required scope: </b><code>goals:read</code>\n\nReturns a compact representation of all of the parent goals of a goal.",
"requires_security": true,
"oauth_scopes": [
"goals:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"followers",
"followers.name",
"html_notes",
"is_workspace_level",
"liked",
"likes",
"likes.user",
"likes.user.name",
"metric",
"metric.can_manage",
"metric.currency_code",
"metric.current_display_value",
"metric.current_number_value",
"metric.initial_number_value",
"metric.is_custom_weight",
"metric.precision",
"metric.progress_source",
"metric.resource_subtype",
"metric.target_number_value",
"metric.unit",
"name",
"notes",
"num_likes",
"owner",
"owner.name",
"privacy_setting",
"start_on",
"status",
"team",
"team.name",
"time_period",
"time_period.display_name",
"time_period.end_on",
"time_period.period",
"time_period.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "goal_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the goal."
},
"description": "Globally unique identifier for the goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getJob",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_job_details",
"description": {
"tagline": "Fetch complete details for a specific job record in Asana.",
"detailed": "Use this tool to obtain the full record of a job by providing the job ID. Ideal for retrieving detailed information about specific jobs in Asana."
},
"return_annotation": "Full record details for a specified job.",
"arguments": [
{
"name": "job_id",
"alternative_names": [
"job_identifier",
"job_global_id"
],
"description": "Globally unique identifier for the job to fetch details for.",
"endpoint_argument_name": "job_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"add_excluded_properties",
"fetch_additional_fields"
],
"description": "Comma-separated list of optional properties to include in the response for the job.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "opt_pretty",
"alternative_names": [
"pretty_output_enabled",
"pretty_response_format"
],
"description": "Set to true for pretty output with line breaks and indentation. Use this for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/jobs/{job_gid}",
"tags": [
"Jobs"
],
"summary": "Get a job by id",
"description": "Returns the full record for a job.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"new_graph_export",
"new_graph_export.completed_at",
"new_graph_export.created_at",
"new_graph_export.download_url",
"new_project",
"new_project.name",
"new_project_template",
"new_project_template.name",
"new_resource_export",
"new_resource_export.completed_at",
"new_resource_export.created_at",
"new_resource_export.download_url",
"new_task",
"new_task.created_by",
"new_task.name",
"new_task.resource_subtype",
"new_task_template",
"new_task_template.name",
"resource_subtype",
"status"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "job_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the job."
},
"description": "Globally unique identifier for the job.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getMemberships",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_memberships",
"description": {
"tagline": "Retrieve compact membership records from Asana.",
"detailed": "This tool fetches compact membership records such as goal, project, portfolio, or custom field memberships from Asana. It can filter results to specific memberships by using a member ID."
},
"return_annotation": "Compact membership records based on specified parent type.",
"arguments": [
{
"name": "parent_id",
"alternative_names": [
"parent_identifier",
"parent_gid"
],
"description": "Globally unique identifier for a goal, project, portfolio, or custom field in Asana.",
"endpoint_argument_name": "parent"
},
{
"name": "member_identifier",
"alternative_names": [
"member_gid",
"member_id"
],
"description": "Globally unique identifier for a team or user to filter specific memberships.",
"endpoint_argument_name": "member"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_per_page"
],
"description": "Specifies the number of objects to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset_token",
"result_offset_token"
],
"description": "Token for pagination. Use the offset from a previous API response to get the next page of results.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties",
"extra_fields"
],
"description": "Comma-separated list of optional fields to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"readable_output"
],
"description": "Enable pretty JSON output with line breaks and indentation for readability. Use for debugging purposes as it may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/memberships",
"tags": [
"Memberships"
],
"summary": "Get multiple memberships",
"description": "Returns compact `goal_membership`, `project_membership`, `portfolio_membership`, or `custom_field_membership` records. The possible types for `parent` in this request are `goal`, `project`, `portfolio`, or `custom_field`. An additional member (user GID or team GID) can be passed in to filter to a specific membership.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "parent",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for `goal`, `project`, `portfolio`, or `custom_field`."
},
"description": "Globally unique identifier for `goal`, `project`, `portfolio`, or `custom_field`.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "member",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for `team` or `user`."
},
"description": "Globally unique identifier for `team` or `user`.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"offset",
"path",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_asana_membership",
"description": {
"tagline": "Create a new membership in Asana for goals, projects, portfolios, or custom fields.",
"detailed": "This tool creates a new membership in a specified Asana entity, such as a goal, project, portfolio, or custom field. It is used to add teams or users as members and returns the complete record of the newly created membership."
},
"return_annotation": "Newly created Asana membership record.",
"arguments": [
{
"name": "membership_details",
"alternative_names": [
"membership_data",
"membership_info"
],
"description": "JSON object containing the fields for the membership. Includes relevant data such as members and target entities.",
"endpoint_argument_name": "requestBody"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"format_output_pretty"
],
"description": "If true, returns the response in a formatted JSON with line breaks and indentation. Recommended only for debugging, as it increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/memberships",
"tags": [
"Memberships"
],
"summary": "Create a membership",
"description": "Creates a new membership in a `goal`, `project`, `portfolio`, or `custom_field`, where members can be Teams or Users.\n\nReturns the full record of the newly created membership.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated fields for the membership."
},
"description": "The updated fields for the membership.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {
"access_level": {
"type": "string",
"description": "Sets the access level for the member. Goals can have access levels `viewer`, `commenter`, `editor` or `admin` (`viewer` and `admin` are currently only available for Goals when you include the `Asana-Enable: goal_sals_api` change flag header). Projects can have access levels `admin`, `editor` or `commenter`. Portfolios can have access levels `admin`, `editor` or `viewer`. Custom Fields can have access levels `admin`, `editor` or `user`.",
"example": "editor"
}
}
},
{
"type": "object",
"properties": {
"member": {
"type": "string",
"description": "The gid of the user or team.",
"example": 12345
},
"parent": {
"type": "string",
"description": "The gid of the `goal`, `project`, or `portfolio` to add the member to.",
"example": "987654"
},
"role": {
"type": "string",
"description": "*Deprecated: new integrations should use access_level* The role given to the member. Optional argument, will default to `commenter` for goals and the default project role for projects. Can be `editor` or `commenter` for goals. Can be `admin`,`editor` or `commenter` for projects.",
"example": "editor"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the membership.\",\n \"required\": false,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"type\": \"object\",\n \"properties\": {\n \"access_level\": {\n \"description\": \"Sets the access level for the member. Goals can have access levels `viewer`, `commenter`, `editor` or `admin` (`viewer` and `admin` are currently only available for Goals when you include the `Asana-Enable: goal_sals_api` change flag header). Projects can have access levels `admin`, `editor` or `commenter`. Portfolios can have access levels `admin`, `editor` or `viewer`. Custom Fields can have access levels `admin`, `editor` or `user`.\",\n \"type\": \"string\",\n \"example\": \"editor\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"member\": {\n \"description\": \"The gid of the user or team.\",\n \"type\": \"string\",\n \"example\": 12345\n },\n \"parent\": {\n \"description\": \"The gid of the `goal`, `project`, or `portfolio` to add the member to.\",\n \"type\": \"string\",\n \"example\": \"987654\"\n },\n \"role\": {\n \"description\": \"*Deprecated: new integrations should use access_level* The role given to the member. Optional argument, will default to `commenter` for goals and the default project role for projects. Can be `editor` or `commenter` for goals. Can be `admin`,`editor` or `commenter` for projects.\",\n \"type\": \"string\",\n \"deprecated\": true,\n \"example\": \"editor\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_membership_info",
"description": {
"tagline": "Retrieve membership record details by ID.",
"detailed": "Fetches information for a specified membership ID, including project, goal, portfolio, or custom field memberships."
},
"return_annotation": "Details of the specified membership record.",
"arguments": [
{
"name": "membership_id",
"alternative_names": [
"membership_identifier",
"member_gid"
],
"description": "Globally unique identifier for the membership. Used to specify which membership record to retrieve.",
"endpoint_argument_name": "membership_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"readable_output"
],
"description": "Enable pretty output with indentation and line breaks for readability. Use for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/memberships/{membership_gid}",
"tags": [
"Memberships"
],
"summary": "Get a membership",
"description": "Returns a `project_membership`, `goal_membership`, `portfolio_membership`, or `custom_field_membership` record for a membership id.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "membership_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the membership."
},
"description": "Globally unique identifier for the membership.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_membership",
"description": {
"tagline": "Update an existing membership in Asana.",
"detailed": "Use this tool to update fields of an existing membership for goals, projects, portfolios, or custom fields in Asana. Only the provided fields in the data block will be updated, while others remain unchanged."
},
"return_annotation": "The full record of the updated membership.",
"arguments": [
{
"name": "membership_id",
"alternative_names": [
"membership_identifier",
"membership_gid"
],
"description": "Globally unique identifier for the membership to update.",
"endpoint_argument_name": "membership_gid"
},
{
"name": "member_access_level",
"alternative_names": [
"access_level",
"membership_access_level"
],
"description": "Specify the access level for the member. Valid options depend on the membership type: Goals ('viewer', 'commenter', 'editor', 'admin'), Projects ('admin', 'editor', 'commenter'), Portfolios ('admin', 'editor', 'viewer'), Custom Fields ('admin', 'editor', 'user').",
"endpoint_argument_name": "data.access_level"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_response_pretty",
"pretty_print_enabled"
],
"description": "If true, formats the response for readability with line breaks and indentation, useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/memberships/{membership_gid}",
"tags": [
"Memberships"
],
"summary": "Update a membership",
"description": "An existing membership can be updated by making a `PUT` request on the membership. Only the fields provided in the `data` block will be updated;\nany unspecified fields will remain unchanged. Memberships on `goals`, `projects`, `portfolios`, and `custom_fields` can be updated.\n\nReturns the full record of the updated membership.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "membership_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the membership."
},
"description": "Globally unique identifier for the membership.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.access_level",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Sets the access level for the member. Goals can have access levels `viewer`, `commenter`, `editor` or `admin` (`viewer` and `admin` are currently only available for Goals when you include the `Asana-Enable: goal_sals_api` change flag header). Projects can have access levels `admin`, `editor` or `commenter`. Portfolios can have access levels `admin`, `editor` or `viewer`. Custom Fields can have access levels `admin`, `editor` or `user`."
},
"description": "Sets the access level for the member. Goals can have access levels `viewer`, `commenter`, `editor` or `admin` (`viewer` and `admin` are currently only available for Goals when you include the `Asana-Enable: goal_sals_api` change flag header). Projects can have access levels `admin`, `editor` or `commenter`. Portfolios can have access levels `admin`, `editor` or `viewer`. Custom Fields can have access levels `admin`, `editor` or `user`.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Sets the access level for the member. Goals can have access levels `viewer`, `commenter`, `editor` or `admin` (`viewer` and `admin` are currently only available for Goals when you include the `Asana-Enable: goal_sals_api` change flag header). Projects can have access levels `admin`, `editor` or `commenter`. Portfolios can have access levels `admin`, `editor` or `viewer`. Custom Fields can have access levels `admin`, `editor` or `user`.",
"example": "editor"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The membership to update.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"access_level\": {\n \"description\": \"Sets the access level for the member. Goals can have access levels `viewer`, `commenter`, `editor` or `admin` (`viewer` and `admin` are currently only available for Goals when you include the `Asana-Enable: goal_sals_api` change flag header). Projects can have access levels `admin`, `editor` or `commenter`. Portfolios can have access levels `admin`, `editor` or `viewer`. Custom Fields can have access levels `admin`, `editor` or `user`.\",\n \"type\": \"string\",\n \"example\": \"editor\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "deleteMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_membership",
"description": {
"tagline": "Delete a membership in Asana.",
"detailed": "Delete a specific, existing membership for a goal, project, portfolio, or custom field in Asana by providing the membership ID."
},
"return_annotation": "Confirms deletion of a specific membership.",
"arguments": [
{
"name": "membership_id",
"alternative_names": [
"membership_identifier",
"gid_membership"
],
"description": "Globally unique identifier for the membership to be deleted.",
"endpoint_argument_name": "membership_gid"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"enable_pretty_format",
"use_pretty_json"
],
"description": "Enable pretty-printed JSON format for a more readable response. Recommended for debugging, as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/memberships/{membership_gid}",
"tags": [
"Memberships"
],
"summary": "Delete a membership",
"description": "A specific, existing membership for a `goal`, `project`, `portfolio` or `custom_field` can be deleted by making a `DELETE` request\non the URL for that membership.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "membership_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the membership."
},
"description": "Globally unique identifier for the membership.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createOrganizationExport",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "request_organization_export",
"description": {
"tagline": "Submit a request to export an organization in Asana.",
"detailed": "Use this tool to initiate an organization export request in Asana. The export will be processed by Asana after the request is submitted."
},
"return_annotation": "Confirmation of the organization export request submission.",
"arguments": [
{
"name": "include_optional_properties",
"alternative_names": [
"fields_to_include",
"optional_properties"
],
"description": "List of property names to include in the export, separated by commas. Use to include non-default properties.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "organization_id",
"alternative_names": [
"workspace_id",
"org_unique_id"
],
"description": "Globally unique identifier for the workspace or organization to be exported in Asana.",
"endpoint_argument_name": "data.organization"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"format_output_prettily"
],
"description": "Enable to receive the response in a formatted JSON with proper indentation. Increases response size and time; use primarily for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/organization_exports",
"tags": [
"Organization exports"
],
"summary": "Create an organization export request",
"description": "This method creates a request to export an Organization. Asana will complete the export at some point after you create the request.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"download_url",
"organization",
"organization.name",
"state"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "data.organization",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Globally unique identifier for the workspace or organization.",
"example": "1331"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The organization to export.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"description\": \"An *organization_export* request starts a job to export the complete data of the given Organization.\",\n \"properties\": {\n \"organization\": {\n \"description\": \"Globally unique identifier for the workspace or organization.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getOrganizationExport",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_organization_export_details",
"description": {
"tagline": "Fetch details of a specific organization export.",
"detailed": "Use this tool to obtain details about a previously-requested export of an organization's data in Asana. It requires the export ID to retrieve the relevant information."
},
"return_annotation": "Details of a specific organization export.",
"arguments": [
{
"name": "organization_export_id",
"alternative_names": [
"export_gid",
"org_export_identifier"
],
"description": "Globally unique identifier for the organization export. Required to retrieve the export details.",
"endpoint_argument_name": "organization_export_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"select_additional_fields",
"extra_properties_inclusion"
],
"description": "Optional properties to include in the response, as a list of strings. This specifies which additional fields should be returned with the organization export details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting_enabled",
"use_pretty_format"
],
"description": "Set to true for a human-readable response with line breaks and indentation. Recommended for debugging due to increased response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/organization_exports/{organization_export_gid}",
"tags": [
"Organization exports"
],
"summary": "Get details on an org export request",
"description": "Returns details of a previously-requested Organization export.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"download_url",
"organization",
"organization.name",
"state"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "organization_export_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the organization export."
},
"description": "Globally unique identifier for the organization export.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getPortfolioMemberships",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_portfolio_memberships",
"description": {
"tagline": "Retrieve portfolio memberships from Asana.",
"detailed": "Retrieve a list of portfolio memberships based on specified criteria such as portfolio, user, or workspace from Asana. Useful for managing and accessing user roles in project management."
},
"return_annotation": "A list of portfolio memberships in a compact form.",
"arguments": [
{
"name": "portfolio_filter",
"alternative_names": [
"portfolio_id",
"select_portfolio"
],
"description": "Specify the portfolio ID to filter the results.",
"endpoint_argument_name": "portfolio"
},
{
"name": "workspace_filter",
"alternative_names": [
"workspace_identifier",
"filter_workspace"
],
"description": "Specify the workspace to filter portfolio membership results. This should match the workspace identifier used in Asana.",
"endpoint_argument_name": "workspace"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_reference"
],
"description": "A string identifier for a user: \"me\", an email, or the user's gid.",
"endpoint_argument_name": "user"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_per_page"
],
"description": "Specifies the number of portfolio memberships to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"pagination_token"
],
"description": "Token for pagination to retrieve the next page of results. Use the offset provided by a previous response.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties",
"expand_fields"
],
"description": "A list of optional properties to include in the response. Provide them as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"format_pretty_output"
],
"description": "Enable pretty output formatting with indentation for readability. Ideal for debugging, it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/portfolio_memberships",
"tags": [
"Portfolio memberships"
],
"summary": "Get multiple portfolio memberships",
"description": "Returns a list of portfolio memberships in compact representation. You must specify `portfolio`, `portfolio` and `user`, or `workspace` and `user`.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "portfolio",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The portfolio to filter results on."
},
"description": "The portfolio to filter results on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace to filter results on."
},
"description": "The workspace to filter results on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"access_level",
"offset",
"path",
"portfolio",
"portfolio.name",
"uri",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getPortfolioMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_portfolio_membership",
"description": {
"tagline": "Retrieve a single portfolio membership record.",
"detailed": "Use this tool to obtain the complete portfolio record for a specific portfolio membership by its unique identifier."
},
"return_annotation": "Complete portfolio record for a membership.",
"arguments": [
{
"name": "portfolio_membership_id",
"alternative_names": [
"portfolio_membership_identifier",
"portfolio_membership_gid"
],
"description": "The unique identifier for the portfolio membership to retrieve.",
"endpoint_argument_name": "portfolio_membership_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_extra_properties",
"additional_fields"
],
"description": "A list of optional properties to include in the response, specified as strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_response"
],
"description": "If true, enables pretty JSON output with line breaking and indentation, increasing response size and time. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/portfolio_memberships/{portfolio_membership_gid}",
"tags": [
"Portfolio memberships"
],
"summary": "Get a portfolio membership",
"description": "Returns the complete portfolio record for a single portfolio membership.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"access_level",
"portfolio",
"portfolio.name",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_membership_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"description": "",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getPortfolioMembershipsForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "retrieve_portfolio_memberships",
"description": {
"tagline": "Retrieve compact portfolio membership records for a portfolio.",
"detailed": "Call this tool to obtain a list of portfolio membership records associated with a specific portfolio in Asana. Use it when you need to view or manage the members of a portfolio."
},
"return_annotation": "Compact portfolio membership records for the portfolio.",
"arguments": [
{
"name": "portfolio_identifier",
"alternative_names": [
"portfolio_id",
"portfolio_guid"
],
"description": "Globally unique identifier for the portfolio required to fetch membership records.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_reference"
],
"description": "A string identifying a user. This can be 'me', an email, or the user's gid.",
"endpoint_argument_name": "user"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Number of portfolio memberships to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"pagination_offset",
"next_page_offset"
],
"description": "Offset token used for pagination to retrieve the next page of results. Use the token returned from a previous request.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_fields",
"extra_fields"
],
"description": "Specify a list of optional properties to include, using a comma-separated list.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to true to receive a readable, formatted response. Use this primarily for debugging due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/portfolios/{portfolio_gid}/portfolio_memberships",
"tags": [
"Portfolio memberships"
],
"summary": "Get memberships from a portfolio",
"description": "Returns the compact portfolio membership records for the portfolio.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"access_level",
"offset",
"path",
"portfolio",
"portfolio.name",
"uri",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getPortfolios",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_user_owned_portfolios",
"description": {
"tagline": "Retrieve a list of portfolios owned by the user.",
"detailed": "Use this tool to get a list of portfolios owned by the current API user in Asana. This is useful for managing and organizing projects within the user's account."
},
"return_annotation": "A list of portfolios owned by the current API user.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_id",
"organization_id"
],
"description": "The unique identifier for the workspace or organization to filter portfolios on.",
"endpoint_argument_name": "workspace"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_count"
],
"description": "The number of portfolios to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"pagination_cursor"
],
"description": "A token to retrieve the next page of results. Use the offset token from a previous API response for pagination. If omitted, returns the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "portfolio_owner_identifier",
"alternative_names": [
"portfolio_user_id",
"portfolio_manager_id"
],
"description": "Specify the user who owns the portfolio. Only applicable if using a Service Account for accessing portfolios owned by different users.",
"endpoint_argument_name": "owner"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "Comma-separated list of properties to include in the response, allowing retrieval of additional optional fields.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"enable_pretty_formatting"
],
"description": "Enable pretty formatting for the output, improving readability with line breaks and indentation. This may increase response size and time, suitable for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/portfolios",
"tags": [
"Portfolios"
],
"summary": "Get multiple portfolios",
"description": "<b>Required scope: </b><code>portfolios:read</code>\n\nReturns a list of the portfolios in compact representation that are owned by the current API user.",
"requires_security": true,
"oauth_scopes": [
"portfolios:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace or organization to filter portfolios on."
},
"description": "The workspace or organization to filter portfolios on.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "owner",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The user who owns the portfolio. Currently, API users can only get a list of portfolios that they themselves own, unless the request is made from a Service Account. In the case of a Service Account, if this parameter is specified, then all portfolios owned by this parameter are returned. Otherwise, all portfolios across the workspace are returned."
},
"description": "The user who owns the portfolio. Currently, API users can only get a list of portfolios that they themselves own, unless the request is made from a Service Account. In the case of a Service Account, if this parameter is specified, then all portfolios owned by this parameter are returned. Otherwise, all portfolios across the workspace are returned.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"created_at",
"created_by",
"created_by.name",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"members",
"members.name",
"name",
"offset",
"owner",
"owner.name",
"path",
"permalink_url",
"privacy_setting",
"project_templates",
"project_templates.name",
"public",
"start_on",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_asana_portfolio",
"description": {
"tagline": "Create a new portfolio in an Asana workspace.",
"detailed": "Use this tool to create a new portfolio in a specific Asana workspace with a supplied name. Note that this API does not automatically add states like 'Priority' that might be present in portfolios created through the Asana UI."
},
"return_annotation": "Information about the newly created portfolio.",
"arguments": [
{
"name": "portfolio_data",
"alternative_names": [
"portfolio_information",
"portfolio_details"
],
"description": "JSON object representing the portfolio to create, including name and additional settings.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_fields_inclusion",
"fields_to_include"
],
"description": "List the optional properties to include in the response, such as ['name', 'members'].",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"format_response_pretty"
],
"description": "If true, formats the response with line breaks and indentation for easier readability. Recommended for debugging as it may increase response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/portfolios",
"tags": [
"Portfolios"
],
"summary": "Create a portfolio",
"description": "<b>Required scope: </b><code>portfolios:write</code>\n\nCreates a new portfolio in the given workspace with the supplied name.\n\nNote that portfolios created in the Asana UI may have some state\n(like the \u201cPriority\u201d custom field) which is automatically added\nto the portfolio when it is created. Portfolios created via our\nAPI will *not* be created with the same initial state to allow\nintegrations to create their own starting state on a portfolio.",
"requires_security": true,
"oauth_scopes": [
"portfolios:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"created_at",
"created_by",
"created_by.name",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"members",
"members.name",
"name",
"owner",
"owner.name",
"permalink_url",
"privacy_setting",
"project_templates",
"project_templates.name",
"public",
"start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The portfolio to create."
},
"description": "The portfolio to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *portfolio* gives a high-level overview of the status of multiple initiatives in Asana. Portfolios provide a dashboard overview of the state of multiple projects, including a progress report and the most recent [project status](/reference/project-statuses) update.\nPortfolios have some restrictions on size. Each portfolio has a max of 1500 items and, like projects, a max of 20 custom fields.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "portfolio"
},
"name": {
"type": "string",
"description": "The name of the portfolio.",
"example": "Bug Portfolio"
}
}
},
{
"type": "object",
"properties": {
"archived": {
"type": "boolean",
"description": "[Opt In](/docs/inputoutput-options). True if the portfolio is archived, false if not. Archived portfolios do not show in the UI by default and may be treated differently for queries.",
"example": false
},
"color": {
"type": "string",
"description": "Color of the portfolio.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray"
],
"example": "light-green"
},
"start_on": {
"type": "string",
"description": "The day on which work for this portfolio begins, or null if the portfolio has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*",
"format": "date",
"example": "2019-09-14"
},
"due_on": {
"type": "string",
"description": "The day on which this portfolio is due. This takes a date with format YYYY-MM-DD.",
"format": "date",
"example": "2019-09-15"
},
"default_access_level": {
"type": "string",
"description": "The default access level when inviting new members to the portfolio",
"enum": [
"admin",
"editor",
"viewer"
],
"example": "viewer"
}
}
}
]
},
{
"type": "object",
"properties": {
"workspace": {
"type": "string",
"description": "*Create-only*. The workspace or organization that the portfolio belongs to.",
"example": "167589"
},
"public": {
"type": "boolean",
"description": "*Deprecated:* new integrations use `privacy_setting` instead.",
"example": false
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The portfolio to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *portfolio* gives a high-level overview of the status of multiple initiatives in Asana. Portfolios provide a dashboard overview of the state of multiple projects, including a progress report and the most recent [project status](/reference/project-statuses) update.\\nPortfolios have some restrictions on size. Each portfolio has a max of 1500 items and, like projects, a max of 20 custom fields.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"portfolio\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the portfolio.\",\n \"type\": \"string\",\n \"example\": \"Bug Portfolio\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"archived\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). True if the portfolio is archived, false if not. Archived portfolios do not show in the UI by default and may be treated differently for queries.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"color\": {\n \"description\": \"Color of the portfolio.\",\n \"type\": \"string\",\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\"\n ],\n \"example\": \"light-green\"\n },\n \"start_on\": {\n \"description\": \"The day on which work for this portfolio begins, or null if the portfolio has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"due_on\": {\n \"description\": \"The day on which this portfolio is due. This takes a date with format YYYY-MM-DD.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"default_access_level\": {\n \"description\": \"The default access level when inviting new members to the portfolio\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"viewer\"\n ],\n \"example\": \"viewer\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"*Create-only*. The workspace or organization that the portfolio belongs to.\",\n \"example\": \"167589\"\n },\n \"public\": {\n \"description\": \"*Deprecated:* new integrations use `privacy_setting` instead.\",\n \"type\": \"boolean\",\n \"deprecated\": true,\n \"example\": false\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_portfolio_details",
"description": {
"tagline": "Retrieve complete details of a specific portfolio in Asana.",
"detailed": "This tool is used to obtain the full record of a particular portfolio in Asana, given its unique ID. It requires the 'portfolios:read' scope and returns comprehensive details including any custom field settings if the 'custom_fields:read' scope is also available."
},
"return_annotation": "The complete details of a specific portfolio.",
"arguments": [
{
"name": "portfolio_unique_id",
"alternative_names": [
"portfolio_global_id",
"portfolio_id"
],
"description": "Globally unique identifier for the specific portfolio to retrieve details.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"fields_to_include"
],
"description": "List of properties to include in the response. Specify as a list of strings for fields you wish to include, as the API excludes some by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting_enabled",
"use_pretty_format"
],
"description": "Set to true for pretty, readable formatting of the output. Useful for debugging, but increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/portfolios/{portfolio_gid}",
"tags": [
"Portfolios"
],
"summary": "Get a portfolio",
"description": "<b>Required scope: </b><code>portfolios:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>custom_field_settings</code></td>\n <td><code>custom_fields:read</code></td>\n </tr>\n</table>\n\nReturns the complete portfolio record for a single portfolio.",
"requires_security": true,
"oauth_scopes": [
"portfolios:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"created_at",
"created_by",
"created_by.name",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"members",
"members.name",
"name",
"owner",
"owner.name",
"permalink_url",
"privacy_setting",
"project_templates",
"project_templates.name",
"public",
"start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updatePortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_portfolio",
"description": {
"tagline": "Update an existing Asana portfolio.",
"detailed": "Use this tool to update an existing Asana portfolio. Only the specified fields in the request data will be updated, and any unspecified fields will remain unchanged. Requires the 'portfolios:write' scope."
},
"return_annotation": "The complete updated portfolio record.",
"arguments": [
{
"name": "portfolio_unique_identifier",
"alternative_names": [
"portfolio_id",
"portfolio_guid"
],
"description": "Globally unique identifier for the portfolio to be updated.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "portfolio_update_data",
"alternative_names": [
"portfolio_update_fields",
"portfolio_data_update"
],
"description": "JSON object containing the fields to update in the portfolio. Only specified fields will change.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_fields",
"alternative_names": [
"opt_fields_list",
"fields_to_include"
],
"description": "A list of optional portfolio properties to include in the response, specified as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Provides formatted and indented output. Use primarily for debugging as it increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/portfolios/{portfolio_gid}",
"tags": [
"Portfolios"
],
"summary": "Update a portfolio",
"description": "<b>Required scope: </b><code>portfolios:write</code>\n\nAn existing portfolio can be updated by making a PUT request on the URL for\nthat portfolio. Only the fields provided in the `data` block will be updated;\nany unspecified fields will remain unchanged.\n\nReturns the complete updated portfolio record.",
"requires_security": true,
"oauth_scopes": [
"portfolios:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"created_at",
"created_by",
"created_by.name",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"members",
"members.name",
"name",
"owner",
"owner.name",
"permalink_url",
"privacy_setting",
"project_templates",
"project_templates.name",
"public",
"start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated fields for the portfolio."
},
"description": "The updated fields for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *portfolio* gives a high-level overview of the status of multiple initiatives in Asana. Portfolios provide a dashboard overview of the state of multiple projects, including a progress report and the most recent [project status](/reference/project-statuses) update.\nPortfolios have some restrictions on size. Each portfolio has a max of 1500 items and, like projects, a max of 20 custom fields.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "portfolio"
},
"name": {
"type": "string",
"description": "The name of the portfolio.",
"example": "Bug Portfolio"
}
}
},
{
"type": "object",
"properties": {
"archived": {
"type": "boolean",
"description": "[Opt In](/docs/inputoutput-options). True if the portfolio is archived, false if not. Archived portfolios do not show in the UI by default and may be treated differently for queries.",
"example": false
},
"color": {
"type": "string",
"description": "Color of the portfolio.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray"
],
"example": "light-green"
},
"start_on": {
"type": "string",
"description": "The day on which work for this portfolio begins, or null if the portfolio has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*",
"format": "date",
"example": "2019-09-14"
},
"due_on": {
"type": "string",
"description": "The day on which this portfolio is due. This takes a date with format YYYY-MM-DD.",
"format": "date",
"example": "2019-09-15"
},
"default_access_level": {
"type": "string",
"description": "The default access level when inviting new members to the portfolio",
"enum": [
"admin",
"editor",
"viewer"
],
"example": "viewer"
}
}
}
]
},
{
"type": "object",
"properties": {
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, enum GID, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the portfolio.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *portfolio* gives a high-level overview of the status of multiple initiatives in Asana. Portfolios provide a dashboard overview of the state of multiple projects, including a progress report and the most recent [project status](/reference/project-statuses) update.\\nPortfolios have some restrictions on size. Each portfolio has a max of 1500 items and, like projects, a max of 20 custom fields.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"portfolio\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the portfolio.\",\n \"type\": \"string\",\n \"example\": \"Bug Portfolio\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"archived\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). True if the portfolio is archived, false if not. Archived portfolios do not show in the UI by default and may be treated differently for queries.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"color\": {\n \"description\": \"Color of the portfolio.\",\n \"type\": \"string\",\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\"\n ],\n \"example\": \"light-green\"\n },\n \"start_on\": {\n \"description\": \"The day on which work for this portfolio begins, or null if the portfolio has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"due_on\": {\n \"description\": \"The day on which this portfolio is due. This takes a date with format YYYY-MM-DD.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"default_access_level\": {\n \"description\": \"The default access level when inviting new members to the portfolio\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"viewer\"\n ],\n \"example\": \"viewer\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, enum GID, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deletePortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_portfolio",
"description": {
"tagline": "Delete an existing portfolio in Asana.",
"detailed": "Use this tool to delete an existing portfolio by specifying the portfolio's ID in Asana. It should be called when a user needs to remove a portfolio from their system."
},
"return_annotation": "Confirmation of portfolio deletion.",
"arguments": [
{
"name": "portfolio_global_id",
"alternative_names": [
"portfolio_id",
"portfolio_identifier"
],
"description": "Globally unique identifier for the portfolio to be deleted.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_output_pretty"
],
"description": "Enable this to receive a 'pretty' formatted JSON response, advisable for debugging only as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/portfolios/{portfolio_gid}",
"tags": [
"Portfolios"
],
"summary": "Delete a portfolio",
"description": "An existing portfolio can be deleted by making a DELETE request on\nthe URL for that portfolio.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getItemsForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_portfolio_items",
"description": {
"tagline": "Retrieve a list of items in a portfolio.",
"detailed": "This tool fetches a list of items in compact form within a specified portfolio. It requires the 'portfolios:read' scope to access the portfolio data."
},
"return_annotation": "List of items in a portfolio in compact form.",
"arguments": [
{
"name": "portfolio_unique_id",
"alternative_names": [
"portfolio_global_id",
"portfolio_identifier"
],
"description": "Globally unique identifier for the portfolio. Required to fetch items for a specific portfolio.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"number_of_items_per_page"
],
"description": "The number of items to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"page_offset_token",
"result_offset_token"
],
"description": "Token for offsetting to the next page of results. Use a token from previous pagination to retrieve subsequent pages.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"additional_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"readable_output"
],
"description": "If true, the response will be formatted for readability with line breaks and indentation. Recommended for debugging as this can increase response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/portfolios/{portfolio_gid}/items",
"tags": [
"Portfolios"
],
"summary": "Get portfolio items",
"description": "<b>Required scope: </b><code>portfolios:read</code>\n\nGet a list of the items in compact form in a portfolio.",
"requires_security": true,
"oauth_scopes": [
"portfolios:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"offset",
"owner",
"path",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "addItemForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_item_to_portfolio",
"description": {
"tagline": "Add an item to a portfolio in Asana.",
"detailed": "Use this tool to add an item to a specified portfolio in Asana. Requires 'portfolios:write' permission."
},
"return_annotation": "Confirmation of item addition to a portfolio.",
"arguments": [
{
"name": "portfolio_unique_id",
"alternative_names": [
"portfolio_global_id",
"portfolio_identifier"
],
"description": "Globally unique identifier for the portfolio to which the item will be added.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "item_to_add_to_portfolio",
"alternative_names": [
"portfolio_item",
"item_for_portfolio"
],
"description": "The ID of the item to be added to the Asana portfolio.",
"endpoint_argument_name": "data.item"
},
{
"name": "insert_item_before_id",
"alternative_names": [
"place_before_id",
"position_before_id"
],
"description": "ID of an existing portfolio item. The new item will be placed before this item. Cannot be used with `insert_after_id`.",
"endpoint_argument_name": "data.insert_before"
},
{
"name": "add_after_item_id",
"alternative_names": [
"place_after_item_id",
"insert_following_item_id"
],
"description": "ID of an item in the portfolio where the new item will be added after. Cannot be used with 'add_before_item_id'.",
"endpoint_argument_name": "data.insert_after"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"use_pretty_json"
],
"description": "Enable pretty JSON formatting for debugging. This increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/portfolios/{portfolio_gid}/addItem",
"tags": [
"Portfolios"
],
"summary": "Add a portfolio item",
"description": "<b>Required scope: </b><code>portfolios:write</code>\n\nAdd an item to a portfolio.\nReturns an empty data block.",
"requires_security": true,
"oauth_scopes": [
"portfolios:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.item",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The item to add to the portfolio."
},
"description": "The item to add to the portfolio.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The item to add to the portfolio.",
"example": "1331"
},
"schema_required": false
},
{
"name": "data.insert_before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An id of an item in this portfolio. The new item will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified."
},
"description": "An id of an item in this portfolio. The new item will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An id of an item in this portfolio. The new item will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified.",
"example": "1331"
},
"schema_required": false
},
{
"name": "data.insert_after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An id of an item in this portfolio. The new item will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified."
},
"description": "An id of an item in this portfolio. The new item will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An id of an item in this portfolio. The new item will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified.",
"example": "1331"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the item being inserted.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"item\"\n ],\n \"properties\": {\n \"item\": {\n \"description\": \"The item to add to the portfolio.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n },\n \"insert_before\": {\n \"description\": \"An id of an item in this portfolio. The new item will be added before the one specified here. `insert_before` and `insert_after` parameters cannot both be specified.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n },\n \"insert_after\": {\n \"description\": \"An id of an item in this portfolio. The new item will be added after the one specified here. `insert_before` and `insert_after` parameters cannot both be specified.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeItemForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_item_from_portfolio",
"description": {
"tagline": "Remove an item from a portfolio in Asana.",
"detailed": "Use this tool to remove an item from a specified portfolio in Asana. Requires the 'portfolios:write' scope."
},
"return_annotation": "Confirmation of item removal from portfolio.",
"arguments": [
{
"name": "portfolio_identifier",
"alternative_names": [
"portfolio_id",
"portfolio_global_id"
],
"description": "Globally unique identifier for the portfolio to remove the item from.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "item_to_remove",
"alternative_names": [
"target_item",
"remove_item"
],
"description": "Specify the ID of the item to be removed from the portfolio.",
"endpoint_argument_name": "data.item"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_output",
"formatted_output"
],
"description": "Enable this to receive the response in a readable, formatted way. This can increase response size and is best for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/portfolios/{portfolio_gid}/removeItem",
"tags": [
"Portfolios"
],
"summary": "Remove a portfolio item",
"description": "<b>Required scope: </b><code>portfolios:write</code>\n\nRemove an item from a portfolio.\nReturns an empty data block.",
"requires_security": true,
"oauth_scopes": [
"portfolios:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.item",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The item to remove from the portfolio."
},
"description": "The item to remove from the portfolio.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The item to remove from the portfolio.",
"example": "1331"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the item being removed.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"item\"\n ],\n \"properties\": {\n \"item\": {\n \"description\": \"The item to remove from the portfolio.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addCustomFieldSettingForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_custom_field_to_portfolio",
"description": {
"tagline": "Add a custom field setting to an Asana portfolio.",
"detailed": "Use this tool to associate a custom field with a specific portfolio in Asana. This requires portfolios:write access scope."
},
"return_annotation": "Indicates success or failure of adding a custom field to a portfolio.",
"arguments": [
{
"name": "portfolio_identifier",
"alternative_names": [
"portfolio_id",
"portfolio_global_id"
],
"description": "Globally unique identifier for the portfolio to which the custom field will be added.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "custom_field_settings",
"alternative_names": [
"field_settings_data",
"custom_field_info"
],
"description": "A JSON object containing details about the custom field setting, such as custom_field, is_important, insert_before, and insert_after.",
"endpoint_argument_name": "requestBody"
},
{
"name": "pretty_formatting_enabled",
"alternative_names": [
"enable_pretty_formatting",
"pretty_output_enabled"
],
"description": "Set to true to format the response for better readability, useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/portfolios/{portfolio_gid}/addCustomFieldSetting",
"tags": [
"Portfolios"
],
"summary": "Add a custom field to a portfolio",
"description": "<b>Required scope: </b><code>portfolios:write</code>\n\nCustom fields are associated with portfolios by way of custom field settings. This method creates a setting for the portfolio.",
"requires_security": true,
"oauth_scopes": [
"portfolios:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"custom_field": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
},
"is_important": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Whether this field should be considered important to this container (for instance, to display in the list view of items in the container)."
},
"insert_before": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A gid of a Custom Field Setting on this container, before which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified."
},
"insert_after": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A gid of a Custom Field Setting on this container, after which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified."
}
},
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "Information about the custom field setting."
},
"description": "Information about the custom field setting.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"custom_field": {
"type": "object",
"properties": {},
"oneOf": [
{
"type": "string",
"description": "The custom field to associate with this container.",
"example": "14916"
},
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"workspace": {
"type": "string",
"description": "*Create-Only* The workspace to create a custom field in.",
"example": "1331"
},
"owned_by_app": {
"type": "boolean",
"description": "*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`."
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.",
"items": {
"type": "string",
"description": "The GID of a user."
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.",
"items": {
"type": "string",
"description": "The GID of an object."
}
}
},
"required": [
"workspace"
]
}
]
},
{
"type": "object",
"properties": {
"resource_subtype": {
"type": "string",
"description": "The type of the custom field. Must be one of the given values.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"reference"
],
"example": "text"
}
},
"required": [
"resource_subtype"
]
}
]
}
]
},
"is_important": {
"type": "boolean",
"description": "Whether this field should be considered important to this container (for instance, to display in the list view of items in the container).",
"example": true
},
"insert_before": {
"type": "string",
"description": "A gid of a Custom Field Setting on this container, before which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.",
"example": "1331"
},
"insert_after": {
"type": "string",
"description": "A gid of a Custom Field Setting on this container, after which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.",
"example": "1331"
}
},
"required": [
"custom_field"
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the custom field setting.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"custom_field\"\n ],\n \"properties\": {\n \"custom_field\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"description\": \"The custom field to associate with this container.\",\n \"example\": \"14916\"\n },\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"workspace\"\n ],\n \"properties\": {\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"*Create-Only* The workspace to create a custom field in.\",\n \"example\": \"1331\"\n },\n \"owned_by_app\": {\n \"type\": \"boolean\",\n \"description\": \"*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`.\"\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of an object.\"\n },\n \"example\": [\n \"12345\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"resource_subtype\"\n ],\n \"properties\": {\n \"resource_subtype\": {\n \"description\": \"The type of the custom field. Must be one of the given values.\",\n \"type\": \"string\",\n \"example\": \"text\",\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"reference\"\n ]\n }\n }\n }\n ]\n }\n ]\n },\n \"is_important\": {\n \"description\": \"Whether this field should be considered important to this container (for instance, to display in the list view of items in the container).\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"insert_before\": {\n \"description\": \"A gid of a Custom Field Setting on this container, before which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n },\n \"insert_after\": {\n \"description\": \"A gid of a Custom Field Setting on this container, after which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "removeCustomFieldSettingForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_custom_field_from_portfolio",
"description": {
"tagline": "Removes a custom field from an Asana portfolio.",
"detailed": "Use this tool to remove a custom field setting from a specific portfolio in Asana. Useful when you need to update portfolio configurations by eliminating unnecessary custom fields."
},
"return_annotation": "Confirmation of custom field removal from portfolio.",
"arguments": [
{
"name": "portfolio_global_id",
"alternative_names": [
"portfolio_id",
"portfolio_unique_identifier"
],
"description": "Globally unique identifier for the portfolio to identify which portfolio the custom field should be removed from.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "custom_field_id_to_remove",
"alternative_names": [
"remove_custom_field_id",
"delete_custom_field_id"
],
"description": "The unique identifier of the custom field to be removed from the portfolio.",
"endpoint_argument_name": "data.custom_field"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"pretty_print"
],
"description": "Enable pretty format for the output, adding line breaks and indentation for readability. Increases response size and processing time, recommended for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/portfolios/{portfolio_gid}/removeCustomFieldSetting",
"tags": [
"Portfolios"
],
"summary": "Remove a custom field from a portfolio",
"description": "<b>Required scope: </b><code>portfolios:write</code>\n\nRemoves a custom field setting from a portfolio.",
"requires_security": true,
"oauth_scopes": [
"portfolios:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.custom_field",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The custom field to remove from this portfolio."
},
"description": "The custom field to remove from this portfolio.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The custom field to remove from this portfolio.",
"example": "14916"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the custom field setting being removed.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"custom_field\"\n ],\n \"properties\": {\n \"custom_field\": {\n \"description\": \"The custom field to remove from this portfolio.\",\n \"type\": \"string\",\n \"example\": \"14916\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addMembersForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_portfolio_members",
"description": {
"tagline": "Add specified users as members of a portfolio on Asana.",
"detailed": "Use this tool to add a list of users as members to a specific portfolio in Asana. This returns the updated portfolio record with the new members included."
},
"return_annotation": "Updated portfolio record after adding members.",
"arguments": [
{
"name": "portfolio_global_id",
"alternative_names": [
"portfolio_id",
"portfolio_identifier"
],
"description": "Globally unique identifier for the portfolio to which members will be added.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"optional_fields"
],
"description": "A list of optional properties to include in the response, provided as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "portfolio_member_identifiers",
"alternative_names": [
"user_identifiers",
"member_ids"
],
"description": "An array of strings identifying users to add. Use 'me', an email, or user gid.",
"endpoint_argument_name": "data.members"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_response"
],
"description": "Set to true for readable line-breaking and indentation in the response. Use for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/portfolios/{portfolio_gid}/addMembers",
"tags": [
"Portfolios"
],
"summary": "Add users to a portfolio",
"description": "Adds the specified list of users as members of the portfolio.\nReturns the updated portfolio record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"created_at",
"created_by",
"created_by.name",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"members",
"members.name",
"name",
"owner",
"owner.name",
"permalink_url",
"privacy_setting",
"project_templates",
"project_templates.name",
"public",
"start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.members",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"example": "521621,621373"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the members being added.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"members\"\n ],\n \"properties\": {\n \"members\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"521621,621373\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeMembersForPortfolio",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_portfolio_members",
"description": {
"tagline": "Remove specified members from a portfolio.",
"detailed": "Use this tool to remove a list of users from the members of a specific Asana portfolio. The tool returns the updated portfolio record after the members have been removed."
},
"return_annotation": "Updated portfolio record after member removal.",
"arguments": [
{
"name": "portfolio_unique_id",
"alternative_names": [
"portfolio_id",
"unique_portfolio_identifier"
],
"description": "Globally unique identifier for the portfolio to modify. Required for removing members.",
"endpoint_argument_name": "portfolio_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields_inclusion",
"properties_to_include"
],
"description": "Comma-separated list of properties to include in the response, allowing for additional data retrieval.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "members_to_remove",
"alternative_names": [
"user_identifiers",
"member_gid_or_email"
],
"description": "List of user identifiers to remove from the portfolio. Use 'me', an email, or user gid.",
"endpoint_argument_name": "data.members"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_response_pretty",
"pretty_formatting"
],
"description": "Enable to format the response with line breaks and indentation for readability. Recommended only for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/portfolios/{portfolio_gid}/removeMembers",
"tags": [
"Portfolios"
],
"summary": "Remove users from a portfolio",
"description": "Removes the specified list of users from members of the portfolio.\nReturns the updated portfolio record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"created_at",
"created_by",
"created_by.name",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"due_on",
"members",
"members.name",
"name",
"owner",
"owner.name",
"permalink_url",
"privacy_setting",
"project_templates",
"project_templates.name",
"public",
"start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "portfolio_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio."
},
"description": "Globally unique identifier for the portfolio.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.members",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"example": "521621,621373"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the members being removed.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"members\"\n ],\n \"properties\": {\n \"members\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"521621,621373\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getProjectBrief",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_brief",
"description": {
"tagline": "Retrieve the full record for a project brief.",
"detailed": "Use this tool to obtain the complete details of a specific project brief by its unique identifier. Ideal for accessing comprehensive project information within Asana."
},
"return_annotation": "Full record details of a project brief.",
"arguments": [
{
"name": "project_brief_identifier",
"alternative_names": [
"project_brief_id",
"project_brief_gid"
],
"description": "Globally unique identifier for the specific project brief to retrieve.",
"endpoint_argument_name": "project_brief_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"properties_to_include"
],
"description": "An array of property names to include in the response. These properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"pretty_output",
"formatted_response"
],
"description": "Enable readable, formatted output. Suitable for debugging. Increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/project_briefs/{project_brief_gid}",
"tags": [
"Project briefs"
],
"summary": "Get a project brief",
"description": "Get the full record for a project brief.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"html_text",
"permalink_url",
"project",
"project.name",
"text",
"title"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_brief_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project brief."
},
"description": "Globally unique identifier for the project brief.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateProjectBrief",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_project_brief_asana",
"description": {
"tagline": "Update an Asana project brief.",
"detailed": "Use this tool to update an existing Asana project brief. Specify only the fields to be updated; fields not specified will remain unchanged. Returns the complete updated project brief record."
},
"return_annotation": "The complete updated project brief record.",
"arguments": [
{
"name": "project_brief_id",
"alternative_names": [
"project_brief_identifier",
"project_brief_unique_id"
],
"description": "Globally unique identifier for the specific project brief to update.",
"endpoint_argument_name": "project_brief_gid"
},
{
"name": "updated_project_brief_fields",
"alternative_names": [
"project_brief_update_data",
"project_brief_modifications"
],
"description": "The fields to update in the project brief, formatted as a JSON object.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields_to_include",
"optional_properties_list"
],
"description": "Specify a list of properties to include in the response, separated by commas.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "provide_pretty_output",
"alternative_names": [
"response_pretty_format",
"pretty_output_enabled"
],
"description": "If true, the response is formatted with line breaks and indentation for readability. Use primarily for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/project_briefs/{project_brief_gid}",
"tags": [
"Project briefs"
],
"summary": "Update a project brief",
"description": "An existing project brief can be updated by making a PUT request on the URL for\nthat project brief. Only the fields provided in the `data` block will be updated;\nany unspecified fields will remain unchanged.\n\nReturns the complete updated project brief record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"html_text",
"permalink_url",
"project",
"project.name",
"text",
"title"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_brief_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project brief."
},
"description": "Globally unique identifier for the project brief.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated fields for the project brief."
},
"description": "The updated fields for the project brief.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *Project Brief* allows you to explain the what and why of the project to your team.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project_brief"
}
}
},
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The title of the project brief.",
"example": "Stuff to buy \u2014 Project Brief"
},
"html_text": {
"type": "string",
"description": "HTML formatted text for the project brief.",
"example": "<body>This is a <strong>project brief</strong>.</body>"
}
}
}
]
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The plain text of the project brief. When writing to a project brief, you can specify either `html_text` (preferred) or `text`, but not both.",
"example": "This is a project brief."
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the project brief.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *Project Brief* allows you to explain the what and why of the project to your team.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project_brief\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"description\": \"The title of the project brief.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy \\u2014 Project Brief\"\n },\n \"html_text\": {\n \"description\": \"HTML formatted text for the project brief.\",\n \"type\": \"string\",\n \"example\": \"<body>This is a <strong>project brief</strong>.</body>\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"description\": \"The plain text of the project brief. When writing to a project brief, you can specify either `html_text` (preferred) or `text`, but not both.\",\n \"type\": \"string\",\n \"example\": \"This is a project brief.\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteProjectBrief",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_project_brief",
"description": {
"tagline": "Delete a specific project brief in Asana.",
"detailed": "Use this tool to delete an existing project brief in Asana by providing its unique identifier. The operation returns confirmation of deletion."
},
"return_annotation": "Confirmation of project brief deletion.",
"arguments": [
{
"name": "project_brief_unique_id",
"alternative_names": [
"project_brief_identifier",
"brief_gid"
],
"description": "Globally unique identifier for the project brief to be deleted.",
"endpoint_argument_name": "project_brief_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"formatted_output"
],
"description": "Set to true for pretty-formatted output, making it more readable. Useful for debugging, this may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/project_briefs/{project_brief_gid}",
"tags": [
"Project briefs"
],
"summary": "Delete a project brief",
"description": "Deletes a specific, existing project brief.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "project_brief_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project brief."
},
"description": "Globally unique identifier for the project brief.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createProjectBrief",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_project_brief",
"description": {
"tagline": "Create a new project brief in Asana.",
"detailed": "Use this tool to create and initialize a new project brief within a specified Asana project. It returns the full details of the project brief after creation."
},
"return_annotation": "Details of the newly created project brief.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_unique_id",
"project_identifier"
],
"description": "Globally unique identifier for the project in which the brief will be created.",
"endpoint_argument_name": "project_gid"
},
{
"name": "project_brief_content",
"alternative_names": [
"brief_details",
"brief_information"
],
"description": "JSON object containing the details of the project brief to be created. It includes necessary properties like title, description, and any other fields required by Asana's API.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"optional_fields"
],
"description": "List of properties to include that are excluded by default in the response. Provide as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_response"
],
"description": "Set to true to format the response with line breaks and indentation for readability. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/project_briefs",
"tags": [
"Project briefs"
],
"summary": "Create a project brief",
"description": "Creates a new project brief.\n\nReturns the full record of the newly created project brief.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"html_text",
"permalink_url",
"project",
"project.name",
"text",
"title"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The project brief to create."
},
"description": "The project brief to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *Project Brief* allows you to explain the what and why of the project to your team.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project_brief"
}
}
},
{
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "The title of the project brief.",
"example": "Stuff to buy \u2014 Project Brief"
},
"html_text": {
"type": "string",
"description": "HTML formatted text for the project brief.",
"example": "<body>This is a <strong>project brief</strong>.</body>"
}
}
}
]
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The plain text of the project brief. When writing to a project brief, you can specify either `html_text` (preferred) or `text`, but not both.",
"example": "This is a project brief."
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The project brief to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *Project Brief* allows you to explain the what and why of the project to your team.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project_brief\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"title\": {\n \"description\": \"The title of the project brief.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy \\u2014 Project Brief\"\n },\n \"html_text\": {\n \"description\": \"HTML formatted text for the project brief.\",\n \"type\": \"string\",\n \"example\": \"<body>This is a <strong>project brief</strong>.</body>\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"description\": \"The plain text of the project brief. When writing to a project brief, you can specify either `html_text` (preferred) or `text`, but not both.\",\n \"type\": \"string\",\n \"example\": \"This is a project brief.\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getProjectMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_membership_details",
"description": {
"tagline": "Retrieve detailed information for a project membership in Asana.",
"detailed": "Call this tool to get a detailed record of a specific project membership in Asana by providing the project membership ID."
},
"return_annotation": "Complete project membership record.",
"arguments": [
{
"name": "project_membership_id",
"alternative_names": [
"project_membership_identifier",
"membership_gid"
],
"description": "The unique identifier for the project membership to retrieve details for.",
"endpoint_argument_name": "project_membership_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"fields_to_include",
"optional_properties_list"
],
"description": "A list of optional project membership properties to include in the response. These are normally excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_printing",
"pretty_format_response"
],
"description": "Set to true for a human-readable response format, useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/project_memberships/{project_membership_gid}",
"tags": [
"Project memberships"
],
"summary": "Get a project membership",
"description": "Returns the complete project record for a single project membership.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"access_level",
"member",
"member.name",
"parent",
"parent.name",
"project",
"project.name",
"user",
"user.name",
"write_access"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_membership_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"description": "",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getProjectMembershipsForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_memberships",
"description": {
"tagline": "Fetch project membership records from Asana.",
"detailed": "Retrieve compact information about project memberships for a specified project in Asana."
},
"return_annotation": "Compact project membership records for the specified project.",
"arguments": [
{
"name": "project_unique_identifier",
"alternative_names": [
"project_id",
"project_identifier"
],
"description": "Globally unique identifier for the project to fetch memberships for.",
"endpoint_argument_name": "project_gid"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_identifier_string"
],
"description": "A string identifying a user, either \"me\", an email, or the user's gid.",
"endpoint_argument_name": "user"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"max_results_per_page"
],
"description": "The number of objects to return per page (between 1 and 100).",
"endpoint_argument_name": "limit"
},
{
"name": "page_offset_token",
"alternative_names": [
"next_page_offset",
"pagination_offset"
],
"description": "Token for pagination to retrieve the next set of results. Use the token from a previous response to get subsequent pages.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties_list",
"properties_to_include"
],
"description": "List of properties to include in the response. Use a comma-separated list to specify optional properties to be included in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"pretty_response"
],
"description": "Enable pretty formatting for the response output. Useful for debugging as it adds line breaks and indentation, making it more readable. Note: This increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/projects/{project_gid}/project_memberships",
"tags": [
"Project memberships"
],
"summary": "Get memberships from a project",
"description": "Returns the compact project membership records for the project.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"access_level",
"member",
"member.name",
"offset",
"parent",
"parent.name",
"path",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getProjectStatus",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_status_update",
"description": {
"tagline": "Fetches a complete status update record for a project.",
"detailed": "Retrieves the full details of a specific project status update. Note that this endpoint is deprecated, and new integrations should use `/status_updates/{status_gid}` instead."
},
"return_annotation": "Detailed record of a status update.",
"arguments": [
{
"name": "project_status_update_id",
"alternative_names": [
"status_update_identifier",
"status_record_id"
],
"description": "The ID of the project status update to retrieve. This should be a unique identifier for the specific status update.",
"endpoint_argument_name": "project_status_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"additional_properties"
],
"description": "A list of optional properties to include in the response. This allows fetching additional details that are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_pretty",
"pretty_response"
],
"description": "If true, formats the response with line breaks and indentation for readability. Recommended for debugging only, as it increases response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/project_statuses/{project_status_gid}",
"tags": [
"Project statuses"
],
"summary": "Get a project status",
"description": "*Deprecated: new integrations should prefer the `/status_updates/{status_gid}` route.*\n\nReturns the complete record for a single status update.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"author",
"author.name",
"color",
"created_at",
"created_by",
"created_by.name",
"html_text",
"modified_at",
"text",
"title"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_status_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The project status update to get."
},
"description": "The project status update to get.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "deleteProjectStatus",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_project_status",
"description": {
"tagline": "Delete a specific project status update in Asana.",
"detailed": "This tool deletes an existing project status update in Asana. It should be called when you need to remove a specific status update from a project. Note: This endpoint is deprecated; consider using the `/status_updates/{status_gid}` route for new integrations."
},
"return_annotation": "Confirmation of project status deletion.",
"arguments": [
{
"name": "project_status_id",
"alternative_names": [
"status_update_id",
"project_update_id"
],
"description": "The identifier for the project status update you wish to delete.",
"endpoint_argument_name": "project_status_gid"
},
{
"name": "pretty_output",
"alternative_names": [
"pretty_format",
"readable_format"
],
"description": "Enable pretty output for readable formatting during debugging; increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/project_statuses/{project_status_gid}",
"tags": [
"Project statuses"
],
"summary": "Delete a project status",
"description": "*Deprecated: new integrations should prefer the `/status_updates/{status_gid}` route.*\n\nDeletes a specific, existing project status update.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "project_status_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The project status update to get."
},
"description": "The project status update to get.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getProjectStatusesForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_status_updates",
"description": {
"tagline": "Fetch compact status updates for a given project.",
"detailed": "Use this tool to retrieve all the compact status update records for a specified project on Asana. This is useful to get a historical or current view of the project's status updates. Note that this endpoint is deprecated for new integrations."
},
"return_annotation": "Compact project status update records for all updates.",
"arguments": [
{
"name": "project_global_identifier",
"alternative_names": [
"project_id",
"project_unique_id"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"num_results"
],
"description": "Number of status updates to return per page, must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset_token",
"result_page_offset"
],
"description": "Offset token for pagination. Use the token provided by a previous request to retrieve the next page of results.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"opt_fields_list",
"optional_properties"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"format_output_prettily"
],
"description": "Enable to format the response for readability with line breaks and indentation. Only recommended for debugging due to increased response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/projects/{project_gid}/project_statuses",
"tags": [
"Project statuses"
],
"summary": "Get statuses from a project",
"description": "*Deprecated: new integrations should prefer the `/status_updates` route.*\n\nReturns the compact project status update records for all updates on the project.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"author",
"author.name",
"color",
"created_at",
"created_by",
"created_by.name",
"html_text",
"modified_at",
"offset",
"path",
"text",
"title",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createProjectStatusForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_project_status_update",
"description": {
"tagline": "Creates a new status update for a project.",
"detailed": "This tool creates a new status update on a specified project in Asana and returns the full record of the newly created project status update. Note: Prefer using the `/status_updates` route for new integrations."
},
"return_annotation": "Details of the newly created project status update.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_unique_id",
"project_identifier"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "project_status_data",
"alternative_names": [
"status_update_data",
"status_payload"
],
"description": "JSON object containing the details of the project status to create.",
"endpoint_argument_name": "requestBody"
},
{
"name": "included_optional_properties",
"alternative_names": [
"optional_fields",
"fields_to_include"
],
"description": "Comma-separated list of optional properties to include in the response, which are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_enabled",
"format_output_prettily"
],
"description": "If true, format the response for readability with line breaks and indentation. Mainly for debugging purposes.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/project_statuses",
"tags": [
"Project statuses"
],
"summary": "Create a project status",
"description": "*Deprecated: new integrations should prefer the `/status_updates` route.*\n\nCreates a new status update on the project.\n\nReturns the full record of the newly created project status update.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"author",
"author.name",
"color",
"created_at",
"created_by",
"created_by.name",
"html_text",
"modified_at",
"text",
"title"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The project status to create."
},
"description": "The project status to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `status_update` resource.*\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \"green\" for projects that are on track, \"yellow\" for projects at risk, and \"red\" for projects that are behind.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project_status"
},
"title": {
"type": "string",
"description": "The title of the project status update.",
"example": "Status Update - Jun 15"
}
}
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text content of the status update.",
"example": "The project is moving forward according to plan..."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.",
"example": "<body>The project <strong>is</strong> moving forward according to plan...</body>"
},
"color": {
"type": "string",
"description": "The color associated with the status update.",
"enum": [
"green",
"yellow",
"red",
"blue",
"complete"
]
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The project status to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"description\": \"*Deprecated: new integrations should prefer the `status_update` resource.*\\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \\\"green\\\" for projects that are on track, \\\"yellow\\\" for projects at risk, and \\\"red\\\" for projects that are behind.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project_status\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the project status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"description\": \"The text content of the status update.\",\n \"type\": \"string\",\n \"example\": \"The project is moving forward according to plan...\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>The project <strong>is</strong> moving forward according to plan...</body>\"\n },\n \"color\": {\n \"description\": \"The color associated with the status update.\",\n \"type\": \"string\",\n \"enum\": [\n \"green\",\n \"yellow\",\n \"red\",\n \"blue\",\n \"complete\"\n ]\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getProjectTemplate",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_template_details",
"description": {
"tagline": "Retrieve complete details of a specific Asana project template.",
"detailed": "Fetches all information about a particular project template in Asana. Useful for obtaining full details of a project's structure and specifications."
},
"return_annotation": "Complete details of the specified project template.",
"arguments": [
{
"name": "project_template_id",
"alternative_names": [
"template_global_id",
"project_template_identifier"
],
"description": "Globally unique identifier for the project template to fetch complete details.",
"endpoint_argument_name": "project_template_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_template_fields",
"template_property_inclusions"
],
"description": "List properties to include in the response. Exclude default properties, using a comma-separated format.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"pretty_format_enabled",
"output_pretty"
],
"description": "Set to true to receive a formatted and readable response output, suitable for debugging. Increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/project_templates/{project_template_gid}",
"tags": [
"Project templates"
],
"summary": "Get a project template",
"description": "<b>Required scope: </b><code>project_templates:read</code>\n\nReturns the complete project template record for a single project template.",
"requires_security": true,
"oauth_scopes": [
"project_templates:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"description",
"html_description",
"name",
"owner",
"public",
"requested_dates",
"requested_dates.description",
"requested_dates.name",
"requested_roles",
"requested_roles.name",
"team",
"team.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_template_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project template."
},
"description": "Globally unique identifier for the project template.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "deleteProjectTemplate",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_project_template",
"description": {
"tagline": "Delete a specific existing project template in Asana.",
"detailed": "Use this tool to permanently delete a specific project template in Asana by providing the template's unique identifier."
},
"return_annotation": "Confirmation of project template deletion.",
"arguments": [
{
"name": "project_template_identifier",
"alternative_names": [
"project_template_id",
"template_gid"
],
"description": "Globally unique identifier for the Asana project template to delete.",
"endpoint_argument_name": "project_template_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response_format",
"formatted_output"
],
"description": "If true, outputs the response in a readable, pretty format with line breaks and indentation, mainly for debugging purposes.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/project_templates/{project_template_gid}",
"tags": [
"Project templates"
],
"summary": "Delete a project template",
"description": "A specific, existing project template can be deleted by making a DELETE request on the URL for that project template.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "project_template_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project template."
},
"description": "Globally unique identifier for the project template.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getProjectTemplates",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_project_templates",
"description": {
"tagline": "Fetch project template records from Asana.",
"detailed": "Retrieve compact project template records for all templates in a specified team or workspace within Asana. This requires the 'project_templates:read' scope."
},
"return_annotation": "Compact project template records for all templates in the team or workspace.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_id",
"workspace_filter"
],
"description": "The identifier of the workspace to filter project templates results on.",
"endpoint_argument_name": "workspace"
},
{
"name": "team_filter",
"alternative_names": [
"project_team",
"team_selection"
],
"description": "The team ID to filter project templates on.",
"endpoint_argument_name": "team"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_per_page"
],
"description": "Specify the number of project templates to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"pagination_start_offset"
],
"description": "Offset token for pagination. Use the token returned from a previous request to fetch the next page of results. If omitted, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"opt_properties",
"fields_to_include"
],
"description": "A list of optional properties to include in the response. Provide as an array of strings, with each string representing a property name.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output",
"alternative_names": [
"pretty_formatting",
"readable_format"
],
"description": "Set to true to enable pretty JSON formatting for debugging, despite increased size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/project_templates",
"tags": [
"Project templates"
],
"summary": "Get multiple project templates",
"description": "<b>Required scope: </b><code>project_templates:read</code>\n\nReturns the compact project template records for all project templates in the given team or workspace.",
"requires_security": true,
"oauth_scopes": [
"project_templates:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace to filter results on."
},
"description": "The workspace to filter results on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "team",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The team to filter projects on."
},
"description": "The team to filter projects on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"description",
"html_description",
"name",
"offset",
"owner",
"path",
"public",
"requested_dates",
"requested_dates.description",
"requested_dates.name",
"requested_roles",
"requested_roles.name",
"team",
"team.name",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getProjectTemplatesForTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_templates_for_team",
"description": {
"tagline": "Retrieve compact project template records for a team.",
"detailed": "Call this tool to get a list of project templates for a specified team in Asana. It requires the 'project_templates:read' scope."
},
"return_annotation": "Compact project template records for a team.",
"arguments": [
{
"name": "team_id",
"alternative_names": [
"team_identifier",
"team_unique_id"
],
"description": "Globally unique identifier for the team to retrieve project templates.",
"endpoint_argument_name": "team_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"max_objects_per_page",
"objects_limit"
],
"description": "Number of project templates to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"api_offset_token"
],
"description": "Offset token to fetch the next page of results. Use the token returned from a previous request's pagination.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"additional_properties"
],
"description": "Comma-separated list of optional properties to include in the response. Specify any properties excluded by default that you wish to see.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"readable_output"
],
"description": "Enable to get the response in a readable, \"pretty\" JSON format. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/teams/{team_gid}/project_templates",
"tags": [
"Project templates"
],
"summary": "Get a team's project templates",
"description": "<b>Required scope: </b><code>project_templates:read</code>\n\nReturns the compact project template records for all project templates in the team.",
"requires_security": true,
"oauth_scopes": [
"project_templates:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"description",
"html_description",
"name",
"offset",
"owner",
"path",
"public",
"requested_dates",
"requested_dates.description",
"requested_dates.name",
"requested_roles",
"requested_roles.name",
"team",
"team.name",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "instantiateProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "instantiate_project_from_template",
"description": {
"tagline": "Asynchronously instantiate a project from a template.",
"detailed": "This tool creates a job to asynchronously handle project instantiation using a specified project template. It should be called when you need to create a new project from an existing template in Asana. Ensure you have the 'projects:write' scope and verify if your workspace is an organization."
},
"return_annotation": "Asynchronous job details for project instantiation.",
"arguments": [
{
"name": "project_template_id",
"alternative_names": [
"template_gid",
"template_identifier"
],
"description": "Globally unique identifier for the project template to instantiate the project from.",
"endpoint_argument_name": "project_template_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"specify_optional_fields"
],
"description": "A list of optional properties to include in the response. Provide as a comma-separated list.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "project_instantiation_details",
"alternative_names": [
"instantiation_input",
"project_details"
],
"description": "JSON object detailing the inputs for instantiating a project, such as the project's name, team, privacy setting, and date or role mappings.",
"endpoint_argument_name": "requestBody"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"format_pretty_response"
],
"description": "Enable pretty formatting for the response. Use this for debugging purposes as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/project_templates/{project_template_gid}/instantiateProject",
"tags": [
"Project templates"
],
"summary": "Instantiate a project from a project template",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nCreates and returns a job that will asynchronously handle the project instantiation.\n\nTo form this request, it is recommended to first make a request to [get a project template](/reference/getprojecttemplate). Then, from the response, copy the `gid` from the object in the `requested_dates` array. This `gid` should be used in `requested_dates` to instantiate a project.\n\n_Note: The body of this request will differ if your workspace is an organization. To determine if your workspace is an organization, use the [is_organization](/reference/workspaces) parameter._",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"new_graph_export",
"new_graph_export.completed_at",
"new_graph_export.created_at",
"new_graph_export.download_url",
"new_project",
"new_project.name",
"new_project_template",
"new_project_template.name",
"new_resource_export",
"new_resource_export.completed_at",
"new_resource_export.created_at",
"new_resource_export.download_url",
"new_task",
"new_task.created_by",
"new_task.name",
"new_task.resource_subtype",
"new_task_template",
"new_task_template.name",
"resource_subtype",
"status"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_template_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project template."
},
"description": "Globally unique identifier for the project template.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"name": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The name of the new project."
},
"team": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Optional*. Sets the team of the new project. If the project template exists in an _organization_, you may specify a value for `team`. If no value is provided then it defaults to the same team as the project template."
},
"public": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Deprecated:* new integrations use `privacy_setting` instead."
},
"privacy_setting": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"public_to_workspace",
"private_to_team",
"private"
],
"properties": null,
"inner_properties": null,
"description": "The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*"
},
"is_strict": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Optional*. If set to `true`, the endpoint returns an \"Unprocessable Entity\" error if you fail to provide a calendar date value for any date variable. If set to `false`, a default date is used for each unfulfilled date variable (e.g., the current date is used as the Start Date of a project)."
},
"requested_dates": {
"val_type": "array",
"inner_val_type": "json",
"enum": null,
"properties": null,
"inner_properties": {
"gid": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the date field in the project template. A value of `1` refers to the project start date, while `2` refers to the project due date."
},
"value": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The date with which the date variable should be replaced when instantiating a project. This takes a date with `YYYY-MM-DD` format."
}
},
"description": "*Conditional*. Array of mappings of date variables to calendar dates. This property is required in the instantiation request if the project template includes dates (e.g., a start date on a task)."
},
"requested_roles": {
"val_type": "array",
"inner_val_type": "json",
"enum": null,
"properties": null,
"inner_properties": {
"gid": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the template role in the project template."
},
"value": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The user id that should be assigned to the template role."
}
},
"description": "Array of mappings of template roles to user ids"
}
},
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "Describes the inputs used for instantiating a project, such as the resulting project's name, which team it should be created in, and values for date variables."
},
"description": "Describes the inputs used for instantiating a project, such as the resulting project's name, which team it should be created in, and values for date variables.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the new project.",
"example": "New Project Name"
},
"team": {
"type": "string",
"description": "*Optional*. Sets the team of the new project. If the project template exists in an _organization_, you may specify a value for `team`. If no value is provided then it defaults to the same team as the project template.",
"example": "12345"
},
"public": {
"type": "boolean",
"description": "*Deprecated:* new integrations use `privacy_setting` instead.",
"example": true
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_to_workspace",
"private_to_team",
"private"
],
"example": "public_to_workspace"
},
"is_strict": {
"type": "boolean",
"description": "*Optional*. If set to `true`, the endpoint returns an \"Unprocessable Entity\" error if you fail to provide a calendar date value for any date variable. If set to `false`, a default date is used for each unfulfilled date variable (e.g., the current date is used as the Start Date of a project).",
"example": true
},
"requested_dates": {
"type": "array",
"description": "*Conditional*. Array of mappings of date variables to calendar dates. This property is required in the instantiation request if the project template includes dates (e.g., a start date on a task).",
"items": {
"type": "object",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the date field in the project template. A value of `1` refers to the project start date, while `2` refers to the project due date.",
"example": "1"
},
"value": {
"type": "string",
"description": "The date with which the date variable should be replaced when instantiating a project. This takes a date with `YYYY-MM-DD` format.",
"format": "date-time",
"example": "2022-01-01"
}
}
}
},
"requested_roles": {
"type": "array",
"description": "Array of mappings of template roles to user ids",
"items": {
"type": "object",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the template role in the project template.",
"example": "1"
},
"value": {
"type": "string",
"description": "The user id that should be assigned to the template role.",
"example": "123"
}
}
}
}
},
"required": [
"name"
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Describes the inputs used for instantiating a project, such as the resulting project's name, which team it should be created in, and values for date variables.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the new project.\",\n \"type\": \"string\",\n \"example\": \"New Project Name\"\n },\n \"team\": {\n \"description\": \"*Optional*. Sets the team of the new project. If the project template exists in an _organization_, you may specify a value for `team`. If no value is provided then it defaults to the same team as the project template.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"public\": {\n \"description\": \"*Deprecated:* new integrations use `privacy_setting` instead.\",\n \"deprecated\": true,\n \"type\": \"boolean\",\n \"example\": true\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_to_workspace\",\n \"private_to_team\",\n \"private\"\n ],\n \"example\": \"public_to_workspace\"\n },\n \"is_strict\": {\n \"description\": \"*Optional*. If set to `true`, the endpoint returns an \\\"Unprocessable Entity\\\" error if you fail to provide a calendar date value for any date variable. If set to `false`, a default date is used for each unfulfilled date variable (e.g., the current date is used as the Start Date of a project).\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"requested_dates\": {\n \"description\": \"*Conditional*. Array of mappings of date variables to calendar dates. This property is required in the instantiation request if the project template includes dates (e.g., a start date on a task).\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the date field in the project template. A value of `1` refers to the project start date, while `2` refers to the project due date.\",\n \"type\": \"string\",\n \"example\": \"1\"\n },\n \"value\": {\n \"description\": \"The date with which the date variable should be replaced when instantiating a project. This takes a date with `YYYY-MM-DD` format.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date-time\",\n \"example\": \"2022-01-01\"\n }\n }\n }\n },\n \"requested_roles\": {\n \"description\": \"Array of mappings of template roles to user ids\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the template role in the project template.\",\n \"type\": \"string\",\n \"example\": \"1\"\n },\n \"value\": {\n \"description\": \"The user id that should be assigned to the template role.\",\n \"type\": \"string\",\n \"example\": \"123\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getProjects",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_projects",
"description": {
"tagline": "Fetch filtered project records from Asana.",
"detailed": "Retrieve compact project records from Asana by applying optional filters for more efficient data handling, especially in large domains. Ensure the 'projects:read' scope is authorized."
},
"return_annotation": "Compact project records with applied filters.",
"arguments": [
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"max_results"
],
"description": "Number of projects to return per page, from 1 to 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_token",
"pagination_pointer"
],
"description": "The offset token for pagination to obtain the next page of results. Use this token received from a previous request to continue retrieving subsequent data.",
"endpoint_argument_name": "offset"
},
{
"name": "workspace_filter",
"alternative_names": [
"workspace_id",
"organization_filter"
],
"description": "Specify the workspace or organization to filter the Asana projects.",
"endpoint_argument_name": "workspace"
},
{
"name": "team_filter",
"alternative_names": [
"team_id",
"team_identifier"
],
"description": "Specify the team to filter projects in the Asana workspace.",
"endpoint_argument_name": "team"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_retrieve",
"include_optional_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"pretty_response_output"
],
"description": "Enable pretty JSON formatting for debugging. Increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "return_only_archived_projects",
"alternative_names": [
"filter_by_archived_projects",
"include_only_archived_projects"
],
"description": "Boolean to filter projects by their archived status. Setting this to true returns only archived projects.",
"endpoint_argument_name": "archived"
}
]
},
"method": "GET",
"path": "/projects",
"tags": [
"Projects"
],
"summary": "Get multiple projects",
"description": "<b>Required scope: </b><code>projects:read</code>\n\nReturns the compact project records for some filtered set of projects. Use one or more of the parameters provided to filter the projects returned.\n*Note: This endpoint may timeout for large domains. Try filtering by team!*",
"requires_security": true,
"oauth_scopes": [
"projects:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace or organization to filter projects on."
},
"description": "The workspace or organization to filter projects on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "team",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The team to filter projects on."
},
"description": "The team to filter projects on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "archived",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return projects whose `archived` field takes on the value of this parameter."
},
"description": "Only return projects whose `archived` field takes on the value of this parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"offset",
"owner",
"path",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_new_asana_project",
"description": {
"tagline": "Create a new project in an Asana workspace or team.",
"detailed": "This tool creates a new project in a specified workspace or team within Asana. It is essential to specify the workspace, and if applicable, the team, especially when the workspace is an organization. Once set, these cannot be changed. Use this tool to organize tasks and initiatives within Asana projects."
},
"return_annotation": "The full record of the newly created project.",
"arguments": [
{
"name": "project_details",
"alternative_names": [
"project_data",
"new_project_info"
],
"description": "JSON object containing details of the project to create, such as name, description, workspace, and team if applicable.",
"endpoint_argument_name": "requestBody"
},
{
"name": "included_properties_list",
"alternative_names": [
"optional_properties",
"fields_to_include"
],
"description": "List of properties to include in the response. Specify as a comma-separated list to include optional fields that are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_output_enabled",
"format_pretty"
],
"description": "Set to true for readable JSON formatting with indents and line breaks. This is useful for debugging but increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects",
"tags": [
"Projects"
],
"summary": "Create a project",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nCreate a new project in a workspace or team.\n\nEvery project is required to be created in a specific workspace or\norganization, and this cannot be changed once set. Note that you can use\nthe `workspace` parameter regardless of whether or not it is an\norganization.\n\nIf the workspace for your project is an organization, you must also\nsupply a `team` to share the project with.\n\nReturns the full record of the newly created project.",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The project to create."
},
"description": "The project to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"properties": {
"archived": {
"type": "boolean",
"description": "True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.",
"example": false
},
"color": {
"type": "string",
"description": "Color of the project.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray",
"none",
null
],
"example": "light-green"
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"current_status": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `status_update` resource.*\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \"green\" for projects that are on track, \"yellow\" for projects at risk, and \"red\" for projects that are behind.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project_status"
},
"title": {
"type": "string",
"description": "The title of the project status update.",
"example": "Status Update - Jun 15"
}
}
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text content of the status update.",
"example": "The project is moving forward according to plan..."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.",
"example": "<body>The project <strong>is</strong> moving forward according to plan...</body>"
},
"color": {
"type": "string",
"description": "The color associated with the status update.",
"enum": [
"green",
"yellow",
"red",
"blue",
"complete"
]
}
}
}
]
},
{
"type": "object",
"properties": {
"author": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"created_by": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project status was last modified.\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
}
}
}
]
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `current_status_update` resource.*",
"properties": {}
}
]
},
"current_status_update": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "status_update"
},
"title": {
"type": "string",
"description": "The title of the status update.",
"example": "Status Update - Jun 15"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe `resource_subtype`s for `status` objects represent the type of their parent.",
"enum": [
"project_status_update",
"portfolio_status_update",
"goal_status_update"
],
"example": "project_status_update"
}
}
},
{
"type": "object",
"description": "The latest `status_update` posted to this project.",
"properties": {}
}
]
},
"custom_field_settings": {
"type": "array",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\n\nArray of Custom Field Settings (in compact form).",
"items": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field_setting"
}
}
},
{
"type": "object",
"properties": {
"project": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.",
"properties": {}
}
]
},
"is_important": {
"type": "boolean",
"description": "`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.",
"example": false
},
"parent": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.",
"properties": {}
}
]
},
"custom_field": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id",
"reference"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"is_value_read_only": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is read only.",
"example": false
},
"created_by": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"name": {
"type": "string",
"description": "The name of the object.",
"example": "Bug Task"
}
}
}
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_with_guests",
"public",
"private"
],
"example": "public_with_guests"
},
"default_access_level": {
"type": "string",
"description": "The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.",
"enum": [
"admin",
"editor",
"user"
],
"example": "user"
},
"resource_subtype": {
"type": "string",
"description": "The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"reference"
],
"example": "text"
}
}
}
]
},
{
"type": "object",
"description": "The custom field that is applied to the `parent`.",
"properties": {}
}
]
}
}
}
]
}
},
"default_view": {
"type": "string",
"description": "The default view (list, board, calendar, or timeline) of a project.",
"enum": [
"list",
"board",
"calendar",
"timeline"
],
"example": "calendar"
},
"due_date": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the `due_on` field.*",
"format": "date",
"example": "2019-09-15"
},
"due_on": {
"type": "string",
"description": "The day on which this project is due. This takes a date with format YYYY-MM-DD.",
"format": "date",
"example": "2019-09-15"
},
"html_notes": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.",
"example": "<body>These are things we need to purchase.</body>"
},
"members": {
"type": "array",
"description": "Array of users who are members of this project.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project was last modified.\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the project (ie., its description).",
"example": "These are things we need to purchase."
},
"public": {
"type": "boolean",
"description": "*Deprecated:* new integrations use `privacy_setting` instead.",
"example": false
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_to_workspace",
"private_to_team",
"private"
],
"example": "public_to_workspace"
},
"start_on": {
"type": "string",
"description": "The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*",
"format": "date",
"example": "2019-09-14"
},
"default_access_level": {
"type": "string",
"description": "The default access for users or teams who join or are added as members to the project.",
"enum": [
"admin",
"editor",
"commenter",
"viewer"
],
"example": "admin"
},
"minimum_access_level_for_customization": {
"type": "string",
"description": "The minimum access level needed for project members to modify this project's workflow and appearance.",
"enum": [
"admin",
"editor"
],
"example": "admin"
},
"minimum_access_level_for_sharing": {
"type": "string",
"description": "The minimum access level needed for project members to share the project and manage project memberships.",
"enum": [
"admin",
"editor"
],
"example": "admin"
}
}
}
]
},
{
"type": "object",
"properties": {
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
},
"followers": {
"type": "string",
"description": "*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \"tasks added\" notifications for a project.",
"example": "12345,23456"
},
"owner": {
"type": "string",
"description": "The current owner of the project, may be null.",
"example": "12345"
},
"team": {
"type": "string",
"description": "The team that this project is shared with.",
"example": "12345"
},
"workspace": {
"type": "string",
"description": "The `gid` of a workspace.",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The project to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"archived\": {\n \"description\": \"True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"color\": {\n \"description\": \"Color of the project.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\",\n \"none\",\n null\n ],\n \"example\": \"light-green\"\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"current_status\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"*Deprecated: new integrations should prefer the `status_update` resource.*\\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \\\"green\\\" for projects that are on track, \\\"yellow\\\" for projects at risk, and \\\"red\\\" for projects that are behind.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project_status\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the project status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"description\": \"The text content of the status update.\",\n \"type\": \"string\",\n \"example\": \"The project is moving forward according to plan...\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>The project <strong>is</strong> moving forward according to plan...</body>\"\n },\n \"color\": {\n \"description\": \"The color associated with the status update.\",\n \"type\": \"string\",\n \"enum\": [\n \"green\",\n \"yellow\",\n \"red\",\n \"blue\",\n \"complete\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"author\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"created_by\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"modified_at\": {\n \"description\": \"The time at which this project status was last modified.\\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Deprecated: new integrations should prefer the `current_status_update` resource.*\"\n }\n ]\n },\n \"current_status_update\": {\n \"allOf\": [\n {\n \"description\": \"A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"status_update\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe `resource_subtype`s for `status` objects represent the type of their parent.\",\n \"enum\": [\n \"project_status_update\",\n \"portfolio_status_update\",\n \"goal_status_update\"\n ],\n \"example\": \"project_status_update\",\n \"readOnly\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"The latest `status_update` posted to this project.\"\n }\n ]\n },\n \"custom_field_settings\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\\n\\nArray of Custom Field Settings (in compact form).\",\n \"readOnly\": true,\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n {\n \"description\": \"Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field_setting\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.\",\n \"readOnly\": true\n }\n ]\n },\n \"is_important\": {\n \"description\": \"`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": false\n },\n \"parent\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.\",\n \"readOnly\": true\n }\n ]\n },\n \"custom_field\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\",\n \"reference\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_value_read_only\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is read only.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"created_by\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"nullable\": true\n }\n ]\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the object.\",\n \"type\": \"string\",\n \"example\": \"Bug Task\"\n }\n }\n }\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_with_guests\",\n \"public\",\n \"private\"\n ],\n \"example\": \"public_with_guests\"\n },\n \"default_access_level\": {\n \"description\": \"The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"user\"\n ],\n \"example\": \"user\"\n },\n \"resource_subtype\": {\n \"description\": \"The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"text\",\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"reference\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"description\": \"The custom field that is applied to the `parent`.\",\n \"readOnly\": true\n }\n ]\n }\n }\n }\n ]\n }\n },\n \"default_view\": {\n \"description\": \"The default view (list, board, calendar, or timeline) of a project.\",\n \"type\": \"string\",\n \"enum\": [\n \"list\",\n \"board\",\n \"calendar\",\n \"timeline\"\n ],\n \"example\": \"calendar\"\n },\n \"due_date\": {\n \"description\": \"*Deprecated: new integrations should prefer the `due_on` field.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"due_on\": {\n \"description\": \"The day on which this project is due. This takes a date with format YYYY-MM-DD.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"html_notes\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>These are things we need to purchase.</body>\"\n },\n \"members\": {\n \"description\": \"Array of users who are members of this project.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"readOnly\": true\n },\n \"modified_at\": {\n \"description\": \"The time at which this project was last modified.\\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"format\": \"date-time\",\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the project (ie., its description).\",\n \"type\": \"string\",\n \"example\": \"These are things we need to purchase.\"\n },\n \"public\": {\n \"description\": \"*Deprecated:* new integrations use `privacy_setting` instead.\",\n \"type\": \"boolean\",\n \"deprecated\": true,\n \"example\": false\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_to_workspace\",\n \"private_to_team\",\n \"private\"\n ],\n \"example\": \"public_to_workspace\"\n },\n \"start_on\": {\n \"description\": \"The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"default_access_level\": {\n \"description\": \"The default access for users or teams who join or are added as members to the project.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"commenter\",\n \"viewer\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_customization\": {\n \"description\": \"The minimum access level needed for project members to modify this project's workflow and appearance.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_sharing\": {\n \"description\": \"The minimum access level needed for project members to share the project and manage project memberships.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n },\n \"followers\": {\n \"description\": \"*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \\\"tasks added\\\" notifications for a project.\",\n \"type\": \"string\",\n \"example\": \"12345,23456\"\n },\n \"owner\": {\n \"description\": \"The current owner of the project, may be null.\",\n \"nullable\": true,\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"team\": {\n \"description\": \"The team that this project is shared with.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a workspace.\",\n \"example\": \"12345\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_details",
"description": {
"tagline": "Retrieve complete details of a specified Asana project.",
"detailed": "This tool retrieves the complete record of a specific project from Asana. It requires 'projects:read' scope and additional scopes for accessing custom field settings and team information, if needed."
},
"return_annotation": "Complete project details for a specified project.",
"arguments": [
{
"name": "project_global_identifier",
"alternative_names": [
"project_id",
"project_gid_number"
],
"description": "A unique identifier for the Asana project you want to retrieve details for.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties_inclusion",
"select_optional_fields"
],
"description": "A list of optional property names to include in the project details response. Provide these as a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_response_pretty",
"use_pretty_formatting"
],
"description": "Set to true for nicely formatted, readable output, mainly for debugging due to increased size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/projects/{project_gid}",
"tags": [
"Projects"
],
"summary": "Get a project",
"description": "<b>Required scope: </b><code>projects:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>custom_field_settings</code></td>\n <td><code>custom_fields:read</code></td>\n </tr>\n <tr>\n <td><code>team</code></td>\n <td><code>teams:read</code></td>\n </tr>\n</table>\n\nReturns the complete project record for a single project.",
"requires_security": true,
"oauth_scopes": [
"projects:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_project_details",
"description": {
"tagline": "Update specific fields of an existing project.",
"detailed": "Use this tool to update specific fields of an existing project in Asana. Specify only the fields you wish to change to avoid overwriting changes made by others. Returns the fully updated project record."
},
"return_annotation": "The complete updated project record.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_unique_id",
"project_identifier"
],
"description": "Globally unique identifier for the project to be updated.",
"endpoint_argument_name": "project_gid"
},
{
"name": "updated_project_fields",
"alternative_names": [
"project_update_payload",
"project_fields_to_update"
],
"description": "The JSON object containing specific fields to update within the project. Only include fields you want to change to avoid overwriting others' changes.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"additional_properties"
],
"description": "Comma-separated list of properties to include in the response, showing optional fields by default excluded.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_print_response"
],
"description": "Enable pretty formatting for the response output, making it more readable with line breaks and indentation. Use this primarily for debugging as it increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/projects/{project_gid}",
"tags": [
"Projects"
],
"summary": "Update a project",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nA specific, existing project can be updated by making a PUT request on\nthe URL for that project. Only the fields provided in the `data` block\nwill be updated; any unspecified fields will remain unchanged.\n\nWhen using this method, it is best to specify only those fields you wish\nto change, or else you may overwrite changes made by another user since\nyou last retrieved the task.\n\nReturns the complete updated project record.",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated fields for the project."
},
"description": "The updated fields for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"properties": {
"archived": {
"type": "boolean",
"description": "True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.",
"example": false
},
"color": {
"type": "string",
"description": "Color of the project.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray",
"none",
null
],
"example": "light-green"
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"current_status": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `status_update` resource.*\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \"green\" for projects that are on track, \"yellow\" for projects at risk, and \"red\" for projects that are behind.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project_status"
},
"title": {
"type": "string",
"description": "The title of the project status update.",
"example": "Status Update - Jun 15"
}
}
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text content of the status update.",
"example": "The project is moving forward according to plan..."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.",
"example": "<body>The project <strong>is</strong> moving forward according to plan...</body>"
},
"color": {
"type": "string",
"description": "The color associated with the status update.",
"enum": [
"green",
"yellow",
"red",
"blue",
"complete"
]
}
}
}
]
},
{
"type": "object",
"properties": {
"author": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"created_by": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project status was last modified.\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
}
}
}
]
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `current_status_update` resource.*",
"properties": {}
}
]
},
"current_status_update": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "status_update"
},
"title": {
"type": "string",
"description": "The title of the status update.",
"example": "Status Update - Jun 15"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe `resource_subtype`s for `status` objects represent the type of their parent.",
"enum": [
"project_status_update",
"portfolio_status_update",
"goal_status_update"
],
"example": "project_status_update"
}
}
},
{
"type": "object",
"description": "The latest `status_update` posted to this project.",
"properties": {}
}
]
},
"custom_field_settings": {
"type": "array",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\n\nArray of Custom Field Settings (in compact form).",
"items": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field_setting"
}
}
},
{
"type": "object",
"properties": {
"project": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.",
"properties": {}
}
]
},
"is_important": {
"type": "boolean",
"description": "`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.",
"example": false
},
"parent": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.",
"properties": {}
}
]
},
"custom_field": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id",
"reference"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"is_value_read_only": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is read only.",
"example": false
},
"created_by": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"name": {
"type": "string",
"description": "The name of the object.",
"example": "Bug Task"
}
}
}
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_with_guests",
"public",
"private"
],
"example": "public_with_guests"
},
"default_access_level": {
"type": "string",
"description": "The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.",
"enum": [
"admin",
"editor",
"user"
],
"example": "user"
},
"resource_subtype": {
"type": "string",
"description": "The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"reference"
],
"example": "text"
}
}
}
]
},
{
"type": "object",
"description": "The custom field that is applied to the `parent`.",
"properties": {}
}
]
}
}
}
]
}
},
"default_view": {
"type": "string",
"description": "The default view (list, board, calendar, or timeline) of a project.",
"enum": [
"list",
"board",
"calendar",
"timeline"
],
"example": "calendar"
},
"due_date": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the `due_on` field.*",
"format": "date",
"example": "2019-09-15"
},
"due_on": {
"type": "string",
"description": "The day on which this project is due. This takes a date with format YYYY-MM-DD.",
"format": "date",
"example": "2019-09-15"
},
"html_notes": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.",
"example": "<body>These are things we need to purchase.</body>"
},
"members": {
"type": "array",
"description": "Array of users who are members of this project.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project was last modified.\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the project (ie., its description).",
"example": "These are things we need to purchase."
},
"public": {
"type": "boolean",
"description": "*Deprecated:* new integrations use `privacy_setting` instead.",
"example": false
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_to_workspace",
"private_to_team",
"private"
],
"example": "public_to_workspace"
},
"start_on": {
"type": "string",
"description": "The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*",
"format": "date",
"example": "2019-09-14"
},
"default_access_level": {
"type": "string",
"description": "The default access for users or teams who join or are added as members to the project.",
"enum": [
"admin",
"editor",
"commenter",
"viewer"
],
"example": "admin"
},
"minimum_access_level_for_customization": {
"type": "string",
"description": "The minimum access level needed for project members to modify this project's workflow and appearance.",
"enum": [
"admin",
"editor"
],
"example": "admin"
},
"minimum_access_level_for_sharing": {
"type": "string",
"description": "The minimum access level needed for project members to share the project and manage project memberships.",
"enum": [
"admin",
"editor"
],
"example": "admin"
}
}
}
]
},
{
"type": "object",
"properties": {
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
},
"followers": {
"type": "string",
"description": "*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \"tasks added\" notifications for a project.",
"example": "12345,23456"
},
"owner": {
"type": "string",
"description": "The current owner of the project, may be null.",
"example": "12345"
},
"team": {
"type": "string",
"description": "The team that this project is shared with.",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the project.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"archived\": {\n \"description\": \"True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"color\": {\n \"description\": \"Color of the project.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\",\n \"none\",\n null\n ],\n \"example\": \"light-green\"\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"current_status\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"*Deprecated: new integrations should prefer the `status_update` resource.*\\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \\\"green\\\" for projects that are on track, \\\"yellow\\\" for projects at risk, and \\\"red\\\" for projects that are behind.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project_status\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the project status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"description\": \"The text content of the status update.\",\n \"type\": \"string\",\n \"example\": \"The project is moving forward according to plan...\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>The project <strong>is</strong> moving forward according to plan...</body>\"\n },\n \"color\": {\n \"description\": \"The color associated with the status update.\",\n \"type\": \"string\",\n \"enum\": [\n \"green\",\n \"yellow\",\n \"red\",\n \"blue\",\n \"complete\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"author\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"created_by\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"modified_at\": {\n \"description\": \"The time at which this project status was last modified.\\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Deprecated: new integrations should prefer the `current_status_update` resource.*\"\n }\n ]\n },\n \"current_status_update\": {\n \"allOf\": [\n {\n \"description\": \"A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"status_update\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe `resource_subtype`s for `status` objects represent the type of their parent.\",\n \"enum\": [\n \"project_status_update\",\n \"portfolio_status_update\",\n \"goal_status_update\"\n ],\n \"example\": \"project_status_update\",\n \"readOnly\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"The latest `status_update` posted to this project.\"\n }\n ]\n },\n \"custom_field_settings\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\\n\\nArray of Custom Field Settings (in compact form).\",\n \"readOnly\": true,\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n {\n \"description\": \"Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field_setting\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.\",\n \"readOnly\": true\n }\n ]\n },\n \"is_important\": {\n \"description\": \"`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": false\n },\n \"parent\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.\",\n \"readOnly\": true\n }\n ]\n },\n \"custom_field\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\",\n \"reference\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_value_read_only\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is read only.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"created_by\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"nullable\": true\n }\n ]\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the object.\",\n \"type\": \"string\",\n \"example\": \"Bug Task\"\n }\n }\n }\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_with_guests\",\n \"public\",\n \"private\"\n ],\n \"example\": \"public_with_guests\"\n },\n \"default_access_level\": {\n \"description\": \"The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"user\"\n ],\n \"example\": \"user\"\n },\n \"resource_subtype\": {\n \"description\": \"The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"text\",\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"reference\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"description\": \"The custom field that is applied to the `parent`.\",\n \"readOnly\": true\n }\n ]\n }\n }\n }\n ]\n }\n },\n \"default_view\": {\n \"description\": \"The default view (list, board, calendar, or timeline) of a project.\",\n \"type\": \"string\",\n \"enum\": [\n \"list\",\n \"board\",\n \"calendar\",\n \"timeline\"\n ],\n \"example\": \"calendar\"\n },\n \"due_date\": {\n \"description\": \"*Deprecated: new integrations should prefer the `due_on` field.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"due_on\": {\n \"description\": \"The day on which this project is due. This takes a date with format YYYY-MM-DD.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"html_notes\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>These are things we need to purchase.</body>\"\n },\n \"members\": {\n \"description\": \"Array of users who are members of this project.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"readOnly\": true\n },\n \"modified_at\": {\n \"description\": \"The time at which this project was last modified.\\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"format\": \"date-time\",\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the project (ie., its description).\",\n \"type\": \"string\",\n \"example\": \"These are things we need to purchase.\"\n },\n \"public\": {\n \"description\": \"*Deprecated:* new integrations use `privacy_setting` instead.\",\n \"type\": \"boolean\",\n \"deprecated\": true,\n \"example\": false\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_to_workspace\",\n \"private_to_team\",\n \"private\"\n ],\n \"example\": \"public_to_workspace\"\n },\n \"start_on\": {\n \"description\": \"The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"default_access_level\": {\n \"description\": \"The default access for users or teams who join or are added as members to the project.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"commenter\",\n \"viewer\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_customization\": {\n \"description\": \"The minimum access level needed for project members to modify this project's workflow and appearance.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_sharing\": {\n \"description\": \"The minimum access level needed for project members to share the project and manage project memberships.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n },\n \"followers\": {\n \"description\": \"*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \\\"tasks added\\\" notifications for a project.\",\n \"type\": \"string\",\n \"example\": \"12345,23456\"\n },\n \"owner\": {\n \"description\": \"The current owner of the project, may be null.\",\n \"nullable\": true,\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"team\": {\n \"description\": \"The team that this project is shared with.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_project",
"description": {
"tagline": "Delete a specific project in Asana.",
"detailed": "Use this tool to delete an existing project in Asana by providing the project's unique identifier. The tool is called when you need to remove a project from Asana, and it confirms the deletion without returning any additional data."
},
"return_annotation": "Confirmation of project deletion.",
"arguments": [
{
"name": "project_unique_identifier",
"alternative_names": [
"project_id",
"project_identifier"
],
"description": "Globally unique identifier for the project to be deleted in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_print"
],
"description": "Enable pretty formatting for the response to make it more readable. It's recommended for debugging purposes only due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/projects/{project_gid}",
"tags": [
"Projects"
],
"summary": "Delete a project",
"description": "<b>Required scope: </b><code>projects:delete</code>\n\nA specific, existing project can be deleted by making a DELETE request on\nthe URL for that project.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [
"projects:delete"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "duplicateProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "asana_duplicate_project",
"description": {
"tagline": "Initiate duplication of a project in Asana.",
"detailed": "Creates and returns a job to handle the asynchronous duplication of a project in Asana. It requires 'projects:write' scope."
},
"return_annotation": "Job details for the project duplication task.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_id_unique",
"global_project_id"
],
"description": "Globally unique identifier for the project to be duplicated.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"fields_to_include",
"optional_properties"
],
"description": "Comma-separated list of optional properties to include in the response, such as additional project details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "new_project_name",
"alternative_names": [
"project_duplicate_name",
"clone_project_name"
],
"description": "The name for the duplicated project in Asana.",
"endpoint_argument_name": "data.name"
},
{
"name": "new_project_team_id",
"alternative_names": [
"team_id_for_new_project",
"project_team_identifier"
],
"description": "Globally unique identifier for the team to set for the new project. If not provided, the project will remain in the same team as the original.",
"endpoint_argument_name": "data.team"
},
{
"name": "include_elements_in_project_duplication",
"alternative_names": [
"elements_to_include_when_copying_project",
"include_elements_for_project_copy"
],
"description": "A comma-separated list of optional elements to include when duplicating a project. Some elements are auto-included and cannot be excluded.",
"endpoint_argument_name": "data.include"
},
{
"name": "last_due_date_in_duplicated_project",
"alternative_names": [
"end_due_date_for_duplicate",
"duplicate_project_final_due_date"
],
"description": "Sets the last due date in the duplicated project. The subsequent due dates will be offset similarly to the original project.",
"endpoint_argument_name": "data.schedule_dates.due_on"
},
{
"name": "start_date_for_first_task",
"alternative_names": [
"initial_task_start_date",
"first_task_start_date"
],
"description": "Sets the first start date in the duplicated project. Adjusts other start dates based on this.",
"endpoint_argument_name": "data.schedule_dates.start_on"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"use_pretty_formatting",
"pretty_response_output"
],
"description": "Enable pretty formatting for the response output. Useful for debugging but increases response size and time.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "skip_weekends_in_schedule",
"alternative_names": [
"avoid_weekend_shifts",
"exclude_weekends"
],
"description": "Set to true to skip weekends for auto-shifted dates in the duplicated project schedule. This is a required parameter.",
"endpoint_argument_name": "data.schedule_dates.should_skip_weekends"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/duplicate",
"tags": [
"Projects"
],
"summary": "Duplicate a project",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nCreates and returns a job that will asynchronously handle the duplication.",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"new_graph_export",
"new_graph_export.completed_at",
"new_graph_export.created_at",
"new_graph_export.download_url",
"new_project",
"new_project.name",
"new_project_template",
"new_project_template.name",
"new_resource_export",
"new_resource_export.completed_at",
"new_resource_export.created_at",
"new_resource_export.download_url",
"new_task",
"new_task.created_by",
"new_task.name",
"new_task.resource_subtype",
"new_task_template",
"new_task_template.name",
"resource_subtype",
"status"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The name of the new project."
},
"description": "The name of the new project.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The name of the new project.",
"example": "New Project Name"
},
"schema_required": false
},
{
"name": "data.team",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Sets the team of the new project. If team is not defined, the new project will be in the same team as the the original project."
},
"description": "Sets the team of the new project. If team is not defined, the new project will be in the same team as the the original project.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Sets the team of the new project. If team is not defined, the new project will be in the same team as the the original project.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.include",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A comma-separated list of elements to include when duplicating a project.\nSome elements are automatically included and cannot be excluded,\nwhile others are **optional** and must be explicitly specified in this field.\n\n**Auto-included fields (non-configurable)**\n- Tasks\n- [Project Views](https://asana.com/features/project-management/project-views)\n(i.e., tabs in a project such as List, Board, Dashboard, etc.)\n- [Rules](https://help.asana.com/s/article/rules)\n\n*Note: The Owner of the Rules copied to the new project is the user who performs the API call.\nIf the duplication is performed using a [Service Account](/docs/authentication#/service-account),\nnote that Service Accounts cannot access the UI to modify or pause Rules.\nTo prevent unwanted automation behavior, consider pausing Rules in the source project before duplication \u2014\ntheir active/paused state is preserved in the new project.*\n\n**Optional fields (configurable)**\n- allocations\n- forms\n- members\n- notes\n- permissions\n- task_assignee\n- task_attachments\n- task_dates\n- task_dependencies\n- task_followers\n- task_notes\n- task_projects\n- task_subtasks\n- task_tags\n- task_templates\n- task_type_default"
},
"description": "A comma-separated list of elements to include when duplicating a project.\nSome elements are automatically included and cannot be excluded,\nwhile others are **optional** and must be explicitly specified in this field.\n\n**Auto-included fields (non-configurable)**\n- Tasks\n- [Project Views](https://asana.com/features/project-management/project-views)\n(i.e., tabs in a project such as List, Board, Dashboard, etc.)\n- [Rules](https://help.asana.com/s/article/rules)\n\n*Note: The Owner of the Rules copied to the new project is the user who performs the API call.\nIf the duplication is performed using a [Service Account](/docs/authentication#/service-account),\nnote that Service Accounts cannot access the UI to modify or pause Rules.\nTo prevent unwanted automation behavior, consider pausing Rules in the source project before duplication \u2014\ntheir active/paused state is preserved in the new project.*\n\n**Optional fields (configurable)**\n- allocations\n- forms\n- members\n- notes\n- permissions\n- task_assignee\n- task_attachments\n- task_dates\n- task_dependencies\n- task_followers\n- task_notes\n- task_projects\n- task_subtasks\n- task_tags\n- task_templates\n- task_type_default",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A comma-separated list of elements to include when duplicating a project.\nSome elements are automatically included and cannot be excluded,\nwhile others are **optional** and must be explicitly specified in this field.\n\n**Auto-included fields (non-configurable)**\n- Tasks\n- [Project Views](https://asana.com/features/project-management/project-views)\n(i.e., tabs in a project such as List, Board, Dashboard, etc.)\n- [Rules](https://help.asana.com/s/article/rules)\n\n*Note: The Owner of the Rules copied to the new project is the user who performs the API call.\nIf the duplication is performed using a [Service Account](/docs/authentication#/service-account),\nnote that Service Accounts cannot access the UI to modify or pause Rules.\nTo prevent unwanted automation behavior, consider pausing Rules in the source project before duplication \u2014\ntheir active/paused state is preserved in the new project.*\n\n**Optional fields (configurable)**\n- allocations\n- forms\n- members\n- notes\n- permissions\n- task_assignee\n- task_attachments\n- task_dates\n- task_dependencies\n- task_followers\n- task_notes\n- task_projects\n- task_subtasks\n- task_tags\n- task_templates\n- task_type_default",
"example": [
"allocations,forms,members,notes,permissions,task_assignee,task_attachments,task_dates,task_dependencies,task_followers,task_notes,task_projects,task_subtasks,task_tags,task_templates,task_type_default"
],
"pattern": "([allocations|forms|members|notes|permissions|task_assignee|task_attachments|task_dates|task_dependencies|task_followers|task_notes|task_projects|task_subtasks|task_tags|task_templates|task_type_default])(,\\1)*"
},
"schema_required": false
},
{
"name": "data.schedule_dates.should_skip_weekends",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "**Required**: Determines if the auto-shifted dates should skip weekends."
},
"description": "**Required**: Determines if the auto-shifted dates should skip weekends.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "boolean",
"description": "**Required**: Determines if the auto-shifted dates should skip weekends.",
"example": true
},
"schema_required": false
},
{
"name": "data.schedule_dates.due_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Sets the last due date in the duplicated project to the given date. The rest of the due dates will be offset by the same amount as the due dates in the original project."
},
"description": "Sets the last due date in the duplicated project to the given date. The rest of the due dates will be offset by the same amount as the due dates in the original project.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Sets the last due date in the duplicated project to the given date. The rest of the due dates will be offset by the same amount as the due dates in the original project.",
"example": "2019-05-21"
},
"schema_required": false
},
{
"name": "data.schedule_dates.start_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Sets the first start date in the duplicated project to the given date. The rest of the start dates will be offset by the same amount as the start dates in the original project."
},
"description": "Sets the first start date in the duplicated project to the given date. The rest of the start dates will be offset by the same amount as the start dates in the original project.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Sets the first start date in the duplicated project to the given date. The rest of the start dates will be offset by the same amount as the start dates in the original project.",
"example": "2019-05-21"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Describes the duplicate's name and the elements that will be duplicated.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"name\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the new project.\",\n \"type\": \"string\",\n \"example\": \"New Project Name\"\n },\n \"team\": {\n \"description\": \"Sets the team of the new project. If team is not defined, the new project will be in the same team as the the original project.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"include\": {\n \"description\": \"A comma-separated list of elements to include when duplicating a project.\\nSome elements are automatically included and cannot be excluded,\\nwhile others are **optional** and must be explicitly specified in this field.\\n\\n**Auto-included fields (non-configurable)**\\n- Tasks\\n- [Project Views](https://asana.com/features/project-management/project-views)\\n(i.e., tabs in a project such as List, Board, Dashboard, etc.)\\n- [Rules](https://help.asana.com/s/article/rules)\\n\\n*Note: The Owner of the Rules copied to the new project is the user who performs the API call.\\nIf the duplication is performed using a [Service Account](/docs/authentication#/service-account),\\nnote that Service Accounts cannot access the UI to modify or pause Rules.\\nTo prevent unwanted automation behavior, consider pausing Rules in the source project before duplication \\u2014\\ntheir active/paused state is preserved in the new project.*\\n\\n**Optional fields (configurable)**\\n- allocations\\n- forms\\n- members\\n- notes\\n- permissions\\n- task_assignee\\n- task_attachments\\n- task_dates\\n- task_dependencies\\n- task_followers\\n- task_notes\\n- task_projects\\n- task_subtasks\\n- task_tags\\n- task_templates\\n- task_type_default\",\n \"type\": \"string\",\n \"pattern\": \"([allocations|forms|members|notes|permissions|task_assignee|task_attachments|task_dates|task_dependencies|task_followers|task_notes|task_projects|task_subtasks|task_tags|task_templates|task_type_default])(,\\\\1)*\",\n \"example\": [\n \"allocations,forms,members,notes,permissions,task_assignee,task_attachments,task_dates,task_dependencies,task_followers,task_notes,task_projects,task_subtasks,task_tags,task_templates,task_type_default\"\n ]\n },\n \"schedule_dates\": {\n \"description\": \"A dictionary of options to auto-shift dates. `task_dates` must be included to use this option. Requires `should_skip_weekends` and either `start_on` or `due_on`, but not both.\",\n \"type\": \"object\",\n \"properties\": {\n \"should_skip_weekends\": {\n \"description\": \"**Required**: Determines if the auto-shifted dates should skip weekends.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"due_on\": {\n \"description\": \"Sets the last due date in the duplicated project to the given date. The rest of the due dates will be offset by the same amount as the due dates in the original project.\",\n \"type\": \"string\",\n \"example\": \"2019-05-21\"\n },\n \"start_on\": {\n \"description\": \"Sets the first start date in the duplicated project to the given date. The rest of the start dates will be offset by the same amount as the start dates in the original project.\",\n \"type\": \"string\",\n \"example\": \"2019-05-21\"\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getProjectsForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_projects_for_task",
"description": {
"tagline": "Retrieve all projects associated with a specific task.",
"detailed": "Returns a compact list of projects that a specified task is part of. Useful for understanding task context within various projects."
},
"return_annotation": "Compact representation of projects for a given task.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_gid_value",
"specific_task_id"
],
"description": "The identifier of the task to retrieve associated projects for.",
"endpoint_argument_name": "task_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Number of project entries to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_token",
"result_offset"
],
"description": "Offset token used for pagination. If not provided, the first page is returned. Only pass an offset returned from a previous request.",
"endpoint_argument_name": "offset"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_fetch",
"properties_to_return"
],
"description": "Comma-separated list of optional project properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"formatted_output",
"readable_output"
],
"description": "Set to true to receive the output in a 'pretty' format, useful for debugging. Note: This increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}/projects",
"tags": [
"Projects"
],
"summary": "Get projects a task is in",
"description": "<b>Required scope: </b><code>projects:read</code>\n\nReturns a compact representation of all of the projects the task is in.",
"requires_security": true,
"oauth_scopes": [
"projects:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"offset",
"owner",
"path",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getProjectsForTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_team_projects",
"description": {
"tagline": "Fetch the list of projects for a specified team.",
"detailed": "This tool retrieves the compact project records for all projects within a specified team. It should be used when you need to access or display project details for a given team in Asana. Requires the 'projects:read' scope."
},
"return_annotation": "Compact project records for all projects in the team.",
"arguments": [
{
"name": "team_identifier",
"alternative_names": [
"team_unique_id",
"team_global_id"
],
"description": "Globally unique identifier for the team whose projects are to be retrieved. It is required to specify the team.",
"endpoint_argument_name": "team_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"objects_per_page",
"items_per_page"
],
"description": "Number of projects to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"pagination_offset"
],
"description": "Offset token used for pagination to fetch the next page of results. If not provided, the first page is returned. Use an offset from a previous response for subsequent pages.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"fields_to_include",
"optional_properties"
],
"description": "A list of optional properties to include in the response for the projects. Specify as a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_output",
"format_output_pretty"
],
"description": "Enable pretty formatting for the response, making it more readable. Use mainly for debugging due to increased response size.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "only_archived_projects",
"alternative_names": [
"retrieve_archived_projects",
"fetch_archived_projects"
],
"description": "Return projects based on their archived status. True for archived projects, False for non-archived projects.",
"endpoint_argument_name": "archived"
}
]
},
"method": "GET",
"path": "/teams/{team_gid}/projects",
"tags": [
"Projects"
],
"summary": "Get a team's projects",
"description": "<b>Required scope: </b><code>projects:read</code>\n\nReturns the compact project records for all projects in the team.",
"requires_security": true,
"oauth_scopes": [
"projects:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "archived",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return projects whose `archived` field takes on the value of this parameter."
},
"description": "Only return projects whose `archived` field takes on the value of this parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"offset",
"owner",
"path",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createProjectForTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_asana_project_for_team",
"description": {
"tagline": "Create a new Asana project for a specific team.",
"detailed": "This tool creates a new project within a specified team on Asana and returns the full record of the created project. It requires a 'projects:write' scope."
},
"return_annotation": "Details of the newly created Asana project.",
"arguments": [
{
"name": "team_global_id",
"alternative_names": [
"team_id",
"team_identifier"
],
"description": "Globally unique identifier for the team in Asana.",
"endpoint_argument_name": "team_gid"
},
{
"name": "project_details",
"alternative_names": [
"new_project_data",
"project_info"
],
"description": "JSON object containing details of the new project to create in Asana.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_project_properties",
"alternative_names": [
"select_additional_fields",
"extra_project_attributes"
],
"description": "Specify properties to include as a comma-separated list to get additional project details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response_format",
"format_readable_output"
],
"description": "Set to true for readable output with line breaks and indentation. Recommended for debugging due to increased response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/teams/{team_gid}/projects",
"tags": [
"Projects"
],
"summary": "Create a project in a team",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nCreates a project shared with the given team.\n\nReturns the full record of the newly created project.",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The new project to create."
},
"description": "The new project to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"properties": {
"archived": {
"type": "boolean",
"description": "True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.",
"example": false
},
"color": {
"type": "string",
"description": "Color of the project.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray",
"none",
null
],
"example": "light-green"
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"current_status": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `status_update` resource.*\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \"green\" for projects that are on track, \"yellow\" for projects at risk, and \"red\" for projects that are behind.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project_status"
},
"title": {
"type": "string",
"description": "The title of the project status update.",
"example": "Status Update - Jun 15"
}
}
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text content of the status update.",
"example": "The project is moving forward according to plan..."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.",
"example": "<body>The project <strong>is</strong> moving forward according to plan...</body>"
},
"color": {
"type": "string",
"description": "The color associated with the status update.",
"enum": [
"green",
"yellow",
"red",
"blue",
"complete"
]
}
}
}
]
},
{
"type": "object",
"properties": {
"author": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"created_by": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project status was last modified.\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
}
}
}
]
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `current_status_update` resource.*",
"properties": {}
}
]
},
"current_status_update": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "status_update"
},
"title": {
"type": "string",
"description": "The title of the status update.",
"example": "Status Update - Jun 15"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe `resource_subtype`s for `status` objects represent the type of their parent.",
"enum": [
"project_status_update",
"portfolio_status_update",
"goal_status_update"
],
"example": "project_status_update"
}
}
},
{
"type": "object",
"description": "The latest `status_update` posted to this project.",
"properties": {}
}
]
},
"custom_field_settings": {
"type": "array",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\n\nArray of Custom Field Settings (in compact form).",
"items": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field_setting"
}
}
},
{
"type": "object",
"properties": {
"project": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.",
"properties": {}
}
]
},
"is_important": {
"type": "boolean",
"description": "`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.",
"example": false
},
"parent": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.",
"properties": {}
}
]
},
"custom_field": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id",
"reference"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"is_value_read_only": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is read only.",
"example": false
},
"created_by": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"name": {
"type": "string",
"description": "The name of the object.",
"example": "Bug Task"
}
}
}
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_with_guests",
"public",
"private"
],
"example": "public_with_guests"
},
"default_access_level": {
"type": "string",
"description": "The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.",
"enum": [
"admin",
"editor",
"user"
],
"example": "user"
},
"resource_subtype": {
"type": "string",
"description": "The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"reference"
],
"example": "text"
}
}
}
]
},
{
"type": "object",
"description": "The custom field that is applied to the `parent`.",
"properties": {}
}
]
}
}
}
]
}
},
"default_view": {
"type": "string",
"description": "The default view (list, board, calendar, or timeline) of a project.",
"enum": [
"list",
"board",
"calendar",
"timeline"
],
"example": "calendar"
},
"due_date": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the `due_on` field.*",
"format": "date",
"example": "2019-09-15"
},
"due_on": {
"type": "string",
"description": "The day on which this project is due. This takes a date with format YYYY-MM-DD.",
"format": "date",
"example": "2019-09-15"
},
"html_notes": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.",
"example": "<body>These are things we need to purchase.</body>"
},
"members": {
"type": "array",
"description": "Array of users who are members of this project.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project was last modified.\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the project (ie., its description).",
"example": "These are things we need to purchase."
},
"public": {
"type": "boolean",
"description": "*Deprecated:* new integrations use `privacy_setting` instead.",
"example": false
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_to_workspace",
"private_to_team",
"private"
],
"example": "public_to_workspace"
},
"start_on": {
"type": "string",
"description": "The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*",
"format": "date",
"example": "2019-09-14"
},
"default_access_level": {
"type": "string",
"description": "The default access for users or teams who join or are added as members to the project.",
"enum": [
"admin",
"editor",
"commenter",
"viewer"
],
"example": "admin"
},
"minimum_access_level_for_customization": {
"type": "string",
"description": "The minimum access level needed for project members to modify this project's workflow and appearance.",
"enum": [
"admin",
"editor"
],
"example": "admin"
},
"minimum_access_level_for_sharing": {
"type": "string",
"description": "The minimum access level needed for project members to share the project and manage project memberships.",
"enum": [
"admin",
"editor"
],
"example": "admin"
}
}
}
]
},
{
"type": "object",
"properties": {
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
},
"followers": {
"type": "string",
"description": "*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \"tasks added\" notifications for a project.",
"example": "12345,23456"
},
"owner": {
"type": "string",
"description": "The current owner of the project, may be null.",
"example": "12345"
},
"team": {
"type": "string",
"description": "The team that this project is shared with.",
"example": "12345"
},
"workspace": {
"type": "string",
"description": "The `gid` of a workspace.",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The new project to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"archived\": {\n \"description\": \"True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"color\": {\n \"description\": \"Color of the project.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\",\n \"none\",\n null\n ],\n \"example\": \"light-green\"\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"current_status\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"*Deprecated: new integrations should prefer the `status_update` resource.*\\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \\\"green\\\" for projects that are on track, \\\"yellow\\\" for projects at risk, and \\\"red\\\" for projects that are behind.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project_status\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the project status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"description\": \"The text content of the status update.\",\n \"type\": \"string\",\n \"example\": \"The project is moving forward according to plan...\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>The project <strong>is</strong> moving forward according to plan...</body>\"\n },\n \"color\": {\n \"description\": \"The color associated with the status update.\",\n \"type\": \"string\",\n \"enum\": [\n \"green\",\n \"yellow\",\n \"red\",\n \"blue\",\n \"complete\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"author\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"created_by\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"modified_at\": {\n \"description\": \"The time at which this project status was last modified.\\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Deprecated: new integrations should prefer the `current_status_update` resource.*\"\n }\n ]\n },\n \"current_status_update\": {\n \"allOf\": [\n {\n \"description\": \"A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"status_update\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe `resource_subtype`s for `status` objects represent the type of their parent.\",\n \"enum\": [\n \"project_status_update\",\n \"portfolio_status_update\",\n \"goal_status_update\"\n ],\n \"example\": \"project_status_update\",\n \"readOnly\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"The latest `status_update` posted to this project.\"\n }\n ]\n },\n \"custom_field_settings\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\\n\\nArray of Custom Field Settings (in compact form).\",\n \"readOnly\": true,\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n {\n \"description\": \"Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field_setting\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.\",\n \"readOnly\": true\n }\n ]\n },\n \"is_important\": {\n \"description\": \"`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": false\n },\n \"parent\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.\",\n \"readOnly\": true\n }\n ]\n },\n \"custom_field\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\",\n \"reference\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_value_read_only\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is read only.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"created_by\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"nullable\": true\n }\n ]\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the object.\",\n \"type\": \"string\",\n \"example\": \"Bug Task\"\n }\n }\n }\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_with_guests\",\n \"public\",\n \"private\"\n ],\n \"example\": \"public_with_guests\"\n },\n \"default_access_level\": {\n \"description\": \"The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"user\"\n ],\n \"example\": \"user\"\n },\n \"resource_subtype\": {\n \"description\": \"The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"text\",\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"reference\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"description\": \"The custom field that is applied to the `parent`.\",\n \"readOnly\": true\n }\n ]\n }\n }\n }\n ]\n }\n },\n \"default_view\": {\n \"description\": \"The default view (list, board, calendar, or timeline) of a project.\",\n \"type\": \"string\",\n \"enum\": [\n \"list\",\n \"board\",\n \"calendar\",\n \"timeline\"\n ],\n \"example\": \"calendar\"\n },\n \"due_date\": {\n \"description\": \"*Deprecated: new integrations should prefer the `due_on` field.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"due_on\": {\n \"description\": \"The day on which this project is due. This takes a date with format YYYY-MM-DD.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"html_notes\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>These are things we need to purchase.</body>\"\n },\n \"members\": {\n \"description\": \"Array of users who are members of this project.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"readOnly\": true\n },\n \"modified_at\": {\n \"description\": \"The time at which this project was last modified.\\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"format\": \"date-time\",\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the project (ie., its description).\",\n \"type\": \"string\",\n \"example\": \"These are things we need to purchase.\"\n },\n \"public\": {\n \"description\": \"*Deprecated:* new integrations use `privacy_setting` instead.\",\n \"type\": \"boolean\",\n \"deprecated\": true,\n \"example\": false\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_to_workspace\",\n \"private_to_team\",\n \"private\"\n ],\n \"example\": \"public_to_workspace\"\n },\n \"start_on\": {\n \"description\": \"The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"default_access_level\": {\n \"description\": \"The default access for users or teams who join or are added as members to the project.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"commenter\",\n \"viewer\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_customization\": {\n \"description\": \"The minimum access level needed for project members to modify this project's workflow and appearance.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_sharing\": {\n \"description\": \"The minimum access level needed for project members to share the project and manage project memberships.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n },\n \"followers\": {\n \"description\": \"*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \\\"tasks added\\\" notifications for a project.\",\n \"type\": \"string\",\n \"example\": \"12345,23456\"\n },\n \"owner\": {\n \"description\": \"The current owner of the project, may be null.\",\n \"nullable\": true,\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"team\": {\n \"description\": \"The team that this project is shared with.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a workspace.\",\n \"example\": \"12345\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getProjectsForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_workspace_projects",
"description": {
"tagline": "Fetch compact project records for a workspace.",
"detailed": "This tool retrieves the compact project records for all projects in a specified workspace from Asana. It should be called when you need to access project information within a workspace. Note: May timeout for large domains; consider using the `/teams/{team_gid}/projects` endpoint for efficiency."
},
"return_annotation": "Compact project records for the workspace.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_global_id",
"workspace_id"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Specify the number of project records to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_token",
"results_offset_token"
],
"description": "Offset token for pagination. Use to request subsequent pages. If omitted, returns the first page. Only use tokens from previous requests.",
"endpoint_argument_name": "offset"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_include",
"desired_fields"
],
"description": "Specify a list of property names to include in the response. These properties are not included by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_pretty_output",
"pretty_format_response"
],
"description": "Enable pretty formatting for the response output. Use this for a readable JSON format, mainly during debugging.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "archived_projects_only",
"alternative_names": [
"include_only_archived_projects",
"return_exclusively_archived_projects"
],
"description": "Specify `true` to return only archived projects, and `false` to include unarchived ones.",
"endpoint_argument_name": "archived"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/projects",
"tags": [
"Projects"
],
"summary": "Get all projects in a workspace",
"description": "<b>Required scope: </b><code>projects:read</code>\n\nReturns the compact project records for all projects in the workspace.\n*Note: This endpoint may timeout for large domains. Prefer the `/teams/{team_gid}/projects` endpoint.*",
"requires_security": true,
"oauth_scopes": [
"projects:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "archived",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return projects whose `archived` field takes on the value of this parameter."
},
"description": "Only return projects whose `archived` field takes on the value of this parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"offset",
"owner",
"path",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createProjectForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_project_in_workspace",
"description": {
"tagline": "Create a new project in a specified workspace.",
"detailed": "Use this tool to create a new project in a given workspace on Asana. If the workspace is an organization, provide a team to share the project. This action requires the 'projects:write' scope. Returns the full details of the new project."
},
"return_annotation": "Full record of the newly created project.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_global_id",
"organization_identifier"
],
"description": "Globally unique identifier for the workspace or organization where the project will be created.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "project_details",
"alternative_names": [
"new_project_data",
"project_data"
],
"description": "The details of the new project to create, provided as a JSON object.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties_list",
"expand_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output",
"alternative_names": [
"formatted_output",
"pretty_format"
],
"description": "Set to true for formatted, readable output. Use mainly during debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/workspaces/{workspace_gid}/projects",
"tags": [
"Projects"
],
"summary": "Create a project in a workspace",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nCreates a project in the workspace.\n\nIf the workspace for your project is an organization, you must also\nsupply a team to share the project with.\n\nReturns the full record of the newly created project.",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The new project to create."
},
"description": "The new project to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"properties": {
"archived": {
"type": "boolean",
"description": "True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.",
"example": false
},
"color": {
"type": "string",
"description": "Color of the project.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray",
"none",
null
],
"example": "light-green"
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"current_status": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `status_update` resource.*\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \"green\" for projects that are on track, \"yellow\" for projects at risk, and \"red\" for projects that are behind.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project_status"
},
"title": {
"type": "string",
"description": "The title of the project status update.",
"example": "Status Update - Jun 15"
}
}
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text content of the status update.",
"example": "The project is moving forward according to plan..."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.",
"example": "<body>The project <strong>is</strong> moving forward according to plan...</body>"
},
"color": {
"type": "string",
"description": "The color associated with the status update.",
"enum": [
"green",
"yellow",
"red",
"blue",
"complete"
]
}
}
}
]
},
{
"type": "object",
"properties": {
"author": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"created_by": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project status was last modified.\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
}
}
}
]
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `current_status_update` resource.*",
"properties": {}
}
]
},
"current_status_update": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "status_update"
},
"title": {
"type": "string",
"description": "The title of the status update.",
"example": "Status Update - Jun 15"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe `resource_subtype`s for `status` objects represent the type of their parent.",
"enum": [
"project_status_update",
"portfolio_status_update",
"goal_status_update"
],
"example": "project_status_update"
}
}
},
{
"type": "object",
"description": "The latest `status_update` posted to this project.",
"properties": {}
}
]
},
"custom_field_settings": {
"type": "array",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\n\nArray of Custom Field Settings (in compact form).",
"items": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field_setting"
}
}
},
{
"type": "object",
"properties": {
"project": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.",
"properties": {}
}
]
},
"is_important": {
"type": "boolean",
"description": "`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.",
"example": false
},
"parent": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"description": "The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.",
"properties": {}
}
]
},
"custom_field": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id",
"reference"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"is_value_read_only": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is read only.",
"example": false
},
"created_by": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"name": {
"type": "string",
"description": "The name of the object.",
"example": "Bug Task"
}
}
}
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_with_guests",
"public",
"private"
],
"example": "public_with_guests"
},
"default_access_level": {
"type": "string",
"description": "The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.",
"enum": [
"admin",
"editor",
"user"
],
"example": "user"
},
"resource_subtype": {
"type": "string",
"description": "The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"reference"
],
"example": "text"
}
}
}
]
},
{
"type": "object",
"description": "The custom field that is applied to the `parent`.",
"properties": {}
}
]
}
}
}
]
}
},
"default_view": {
"type": "string",
"description": "The default view (list, board, calendar, or timeline) of a project.",
"enum": [
"list",
"board",
"calendar",
"timeline"
],
"example": "calendar"
},
"due_date": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the `due_on` field.*",
"format": "date",
"example": "2019-09-15"
},
"due_on": {
"type": "string",
"description": "The day on which this project is due. This takes a date with format YYYY-MM-DD.",
"format": "date",
"example": "2019-09-15"
},
"html_notes": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.",
"example": "<body>These are things we need to purchase.</body>"
},
"members": {
"type": "array",
"description": "Array of users who are members of this project.",
"items": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this project was last modified.\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the project (ie., its description).",
"example": "These are things we need to purchase."
},
"public": {
"type": "boolean",
"description": "*Deprecated:* new integrations use `privacy_setting` instead.",
"example": false
},
"privacy_setting": {
"type": "string",
"description": "The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*",
"enum": [
"public_to_workspace",
"private_to_team",
"private"
],
"example": "public_to_workspace"
},
"start_on": {
"type": "string",
"description": "The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*",
"format": "date",
"example": "2019-09-14"
},
"default_access_level": {
"type": "string",
"description": "The default access for users or teams who join or are added as members to the project.",
"enum": [
"admin",
"editor",
"commenter",
"viewer"
],
"example": "admin"
},
"minimum_access_level_for_customization": {
"type": "string",
"description": "The minimum access level needed for project members to modify this project's workflow and appearance.",
"enum": [
"admin",
"editor"
],
"example": "admin"
},
"minimum_access_level_for_sharing": {
"type": "string",
"description": "The minimum access level needed for project members to share the project and manage project memberships.",
"enum": [
"admin",
"editor"
],
"example": "admin"
}
}
}
]
},
{
"type": "object",
"properties": {
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
},
"followers": {
"type": "string",
"description": "*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \"tasks added\" notifications for a project.",
"example": "12345,23456"
},
"owner": {
"type": "string",
"description": "The current owner of the project, may be null.",
"example": "12345"
},
"team": {
"type": "string",
"description": "The team that this project is shared with.",
"example": "12345"
},
"workspace": {
"type": "string",
"description": "The `gid` of a workspace.",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The new project to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"archived\": {\n \"description\": \"True if the project is archived, false if not. Archived projects do not show in the UI by default and may be treated differently for queries.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"color\": {\n \"description\": \"Color of the project.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\",\n \"none\",\n null\n ],\n \"example\": \"light-green\"\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"current_status\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"*Deprecated: new integrations should prefer the `status_update` resource.*\\nA *project status* is an update on the progress of a particular project, and is sent out to all project followers when created. These updates include both text describing the update and a color code intended to represent the overall state of the project: \\\"green\\\" for projects that are on track, \\\"yellow\\\" for projects at risk, and \\\"red\\\" for projects that are behind.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project_status\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the project status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"text\": {\n \"description\": \"The text content of the status update.\",\n \"type\": \"string\",\n \"example\": \"The project is moving forward according to plan...\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>The project <strong>is</strong> moving forward according to plan...</body>\"\n },\n \"color\": {\n \"description\": \"The color associated with the status update.\",\n \"type\": \"string\",\n \"enum\": [\n \"green\",\n \"yellow\",\n \"red\",\n \"blue\",\n \"complete\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"author\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"created_by\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"modified_at\": {\n \"description\": \"The time at which this project status was last modified.\\n*Note: This does not currently reflect any changes in associations such as comments that may have been added or removed from the project status.*\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Deprecated: new integrations should prefer the `current_status_update` resource.*\"\n }\n ]\n },\n \"current_status_update\": {\n \"allOf\": [\n {\n \"description\": \"A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"status_update\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe `resource_subtype`s for `status` objects represent the type of their parent.\",\n \"enum\": [\n \"project_status_update\",\n \"portfolio_status_update\",\n \"goal_status_update\"\n ],\n \"example\": \"project_status_update\",\n \"readOnly\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"The latest `status_update` posted to this project.\"\n }\n ]\n },\n \"custom_field_settings\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>custom_fields:read</code></p>\\n\\nArray of Custom Field Settings (in compact form).\",\n \"readOnly\": true,\n \"type\": \"array\",\n \"items\": {\n \"allOf\": [\n {\n \"description\": \"Custom Fields Settings objects represent the many-to-many join of the Custom Field and Project as well as stores information that is relevant to that particular pairing.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field_setting\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"*Deprecated: new integrations should prefer the `parent` field.* The id of the project that this custom field settings refers to.\",\n \"readOnly\": true\n }\n ]\n },\n \"is_important\": {\n \"description\": \"`is_important` is used in the Asana web application to determine if this custom field is displayed in the list/grid view of a project or portfolio.\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": false\n },\n \"parent\": {\n \"allOf\": [\n {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"description\": \"The parent to which the custom field is applied. This can be a project or portfolio and indicates that the tasks or projects that the parent contains may be given custom field values for this custom field.\",\n \"readOnly\": true\n }\n ]\n },\n \"custom_field\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\",\n \"reference\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"is_value_read_only\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is read only.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"created_by\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"nullable\": true\n }\n ]\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of [compact user](/reference/users) objects reflects the values of a `people` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of objects reflects the values of a `reference` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the object.\",\n \"type\": \"string\",\n \"example\": \"Bug Task\"\n }\n }\n }\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the custom field. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_with_guests\",\n \"public\",\n \"private\"\n ],\n \"example\": \"public_with_guests\"\n },\n \"default_access_level\": {\n \"description\": \"The default access level when inviting new members to the custom field. This isn't applied when the `privacy_setting` is `private`, or the user is a guest. For local fields in a project or portfolio, the user must additionally have permission to modify the container itself.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"user\"\n ],\n \"example\": \"user\"\n },\n \"resource_subtype\": {\n \"description\": \"The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"text\",\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"reference\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"description\": \"The custom field that is applied to the `parent`.\",\n \"readOnly\": true\n }\n ]\n }\n }\n }\n ]\n }\n },\n \"default_view\": {\n \"description\": \"The default view (list, board, calendar, or timeline) of a project.\",\n \"type\": \"string\",\n \"enum\": [\n \"list\",\n \"board\",\n \"calendar\",\n \"timeline\"\n ],\n \"example\": \"calendar\"\n },\n \"due_date\": {\n \"description\": \"*Deprecated: new integrations should prefer the `due_on` field.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"due_on\": {\n \"description\": \"The day on which this project is due. This takes a date with format YYYY-MM-DD.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-15\"\n },\n \"html_notes\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The notes of the project with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>These are things we need to purchase.</body>\"\n },\n \"members\": {\n \"description\": \"Array of users who are members of this project.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n \"readOnly\": true\n },\n \"modified_at\": {\n \"description\": \"The time at which this project was last modified.\\n*Note: This does not currently reflect any changes in associations such as tasks or comments that may have been added or removed from the project.*\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"format\": \"date-time\",\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the project (ie., its description).\",\n \"type\": \"string\",\n \"example\": \"These are things we need to purchase.\"\n },\n \"public\": {\n \"description\": \"*Deprecated:* new integrations use `privacy_setting` instead.\",\n \"type\": \"boolean\",\n \"deprecated\": true,\n \"example\": false\n },\n \"privacy_setting\": {\n \"description\": \"The privacy setting of the project. *Note: Administrators in your organization may restrict the values of `privacy_setting`.*\",\n \"type\": \"string\",\n \"enum\": [\n \"public_to_workspace\",\n \"private_to_team\",\n \"private\"\n ],\n \"example\": \"public_to_workspace\"\n },\n \"start_on\": {\n \"description\": \"The day on which work for this project begins, or null if the project has no start date. This takes a date with `YYYY-MM-DD` format. *Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter. Additionally, `start_on` and `due_on` cannot be the same date.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"default_access_level\": {\n \"description\": \"The default access for users or teams who join or are added as members to the project.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\",\n \"commenter\",\n \"viewer\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_customization\": {\n \"description\": \"The minimum access level needed for project members to modify this project's workflow and appearance.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n },\n \"minimum_access_level_for_sharing\": {\n \"description\": \"The minimum access level needed for project members to share the project and manage project memberships.\",\n \"type\": \"string\",\n \"enum\": [\n \"admin\",\n \"editor\"\n ],\n \"example\": \"admin\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, or object (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n },\n \"followers\": {\n \"description\": \"*Create-only*. Comma separated string of users. Followers are a subset of members who have opted in to receive \\\"tasks added\\\" notifications for a project.\",\n \"type\": \"string\",\n \"example\": \"12345,23456\"\n },\n \"owner\": {\n \"description\": \"The current owner of the project, may be null.\",\n \"nullable\": true,\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"team\": {\n \"description\": \"The team that this project is shared with.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"The `gid` of a workspace.\",\n \"example\": \"12345\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "addCustomFieldSettingForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_custom_field_setting_to_project",
"description": {
"tagline": "Add a custom field setting to a project in Asana.",
"detailed": "Use this tool to associate a custom field with a specific project in Asana. This operation requires the 'projects:write' scope."
},
"return_annotation": "Confirmation of custom field setting addition to the project.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_id",
"project_gid"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "custom_field_setting_info",
"alternative_names": [
"custom_field_data",
"custom_field_details"
],
"description": "JSON object with details about the custom field setting, including 'custom_field', 'is_important' (boolean), 'insert_before' (string), and 'insert_after' (string). At least one field, 'insert_before' or 'insert_after', can be specified to position the field. 'is_important' indicates significance in the container's list view.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties",
"fields_to_include"
],
"description": "Comma-separated list of properties to include in the response, typically those excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to true for a readable output format with line breaks and indentation. Increases response time and size, so use it mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/addCustomFieldSetting",
"tags": [
"Projects"
],
"summary": "Add a custom field to a project",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nCustom fields are associated with projects by way of custom field settings. This method creates a setting for the project.",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"custom_field",
"custom_field.asana_created_field",
"custom_field.created_by",
"custom_field.created_by.name",
"custom_field.currency_code",
"custom_field.custom_label",
"custom_field.custom_label_position",
"custom_field.date_value",
"custom_field.date_value.date",
"custom_field.date_value.date_time",
"custom_field.default_access_level",
"custom_field.description",
"custom_field.display_value",
"custom_field.enabled",
"custom_field.enum_options",
"custom_field.enum_options.color",
"custom_field.enum_options.enabled",
"custom_field.enum_options.name",
"custom_field.enum_value",
"custom_field.enum_value.color",
"custom_field.enum_value.enabled",
"custom_field.enum_value.name",
"custom_field.format",
"custom_field.has_notifications_enabled",
"custom_field.id_prefix",
"custom_field.input_restrictions",
"custom_field.is_formula_field",
"custom_field.is_global_to_workspace",
"custom_field.is_value_read_only",
"custom_field.multi_enum_values",
"custom_field.multi_enum_values.color",
"custom_field.multi_enum_values.enabled",
"custom_field.multi_enum_values.name",
"custom_field.name",
"custom_field.number_value",
"custom_field.people_value",
"custom_field.people_value.name",
"custom_field.precision",
"custom_field.privacy_setting",
"custom_field.reference_value",
"custom_field.reference_value.name",
"custom_field.representation_type",
"custom_field.resource_subtype",
"custom_field.text_value",
"custom_field.type",
"is_important",
"parent",
"parent.name",
"project",
"project.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"custom_field": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
},
"is_important": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Whether this field should be considered important to this container (for instance, to display in the list view of items in the container)."
},
"insert_before": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A gid of a Custom Field Setting on this container, before which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified."
},
"insert_after": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A gid of a Custom Field Setting on this container, after which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified."
}
},
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "Information about the custom field setting."
},
"description": "Information about the custom field setting.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"custom_field": {
"type": "object",
"properties": {},
"oneOf": [
{
"type": "string",
"description": "The custom field to associate with this container.",
"example": "14916"
},
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\n\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "custom_field"
},
"name": {
"type": "string",
"description": "The name of the custom field.",
"example": "Status"
},
"type": {
"type": "string",
"description": "*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\n",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people"
]
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"enabled": {
"type": "boolean",
"description": "*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).",
"example": true
},
"representation_type": {
"type": "string",
"description": "This field tells the type of the custom field.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"formula",
"custom_id"
],
"example": "number"
},
"id_prefix": {
"type": "string",
"description": "This field is the unique custom ID string for the custom field.",
"example": "ID"
},
"input_restrictions": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.",
"items": {
"type": "string"
}
},
"is_formula_field": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a custom field is a formula custom field.",
"example": false
},
"date_value": {
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.",
"properties": {
"date": {
"type": "string",
"description": "A string representing the date in YYYY-MM-DD format.",
"example": "2024-08-23"
},
"date_time": {
"type": "string",
"description": "A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.",
"example": "2024-08-23T22:00:00.000Z"
}
}
},
"enum_value": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
},
{
"type": "object",
"description": "*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.",
"properties": {}
}
]
},
"multi_enum_values": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"number_value": {
"type": "number",
"description": "*Conditional*. This number is the value of a `number` custom field.",
"example": 5.2
},
"text_value": {
"type": "string",
"description": "*Conditional*. This string is the value of a `text` custom field.",
"example": "Some Value"
},
"display_value": {
"type": "string",
"description": "A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.",
"example": "blue"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The description of the custom field.",
"example": "Development team priority"
},
"enum_options": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).",
"items": {
"type": "object",
"description": "Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\n\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\n\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\n\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \u201ctrashing\u201d the enum option in the Asana web app within the \u201cEdit Fields\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\n\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\n\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "enum_option"
},
"name": {
"type": "string",
"description": "The name of the enum option.",
"example": "Low"
},
"enabled": {
"type": "boolean",
"description": "Whether or not the enum option is a selectable value for the custom field.",
"example": true
},
"color": {
"type": "string",
"description": "The color of the enum option. Defaults to `none`.",
"example": "blue"
}
}
}
},
"precision": {
"type": "integer",
"description": "Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\nThe identifier format will always have a precision of 0.",
"example": 2
},
"format": {
"type": "string",
"description": "The format of this custom field.",
"enum": [
"currency",
"identifier",
"percentage",
"custom",
"duration",
"none"
],
"example": "custom"
},
"currency_code": {
"type": "string",
"description": "ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.",
"example": "EUR"
},
"custom_label": {
"type": "string",
"description": "This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.",
"example": "gold pieces"
},
"custom_label_position": {
"type": "string",
"description": "Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.",
"enum": [
"prefix",
"suffix",
null
],
"example": "suffix"
},
"is_global_to_workspace": {
"type": "boolean",
"description": "This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.",
"example": true
},
"has_notifications_enabled": {
"type": "boolean",
"description": "*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.",
"example": true
},
"asana_created_field": {
"type": "string",
"description": "*Conditional*. A unique identifier to associate this field with the template source of truth.",
"enum": [
"a_v_requirements",
"account_name",
"actionable",
"align_shipping_link",
"align_status",
"allotted_time",
"appointment",
"approval_stage",
"approved",
"article_series",
"board_committee",
"browser",
"campaign_audience",
"campaign_project_status",
"campaign_regions",
"channel_primary",
"client_topic_type",
"complete_by",
"contact",
"contact_email_address",
"content_channels",
"content_channels_needed",
"content_stage",
"content_type",
"contract",
"contract_status",
"cost",
"creation_stage",
"creative_channel",
"creative_needed",
"creative_needs",
"data_sensitivity",
"deal_size",
"delivery_appt",
"delivery_appt_date",
"department",
"department_responsible",
"design_request_needed",
"design_request_type",
"discussion_category",
"do_this_task",
"editorial_content_status",
"editorial_content_tag",
"editorial_content_type",
"effort",
"effort_level",
"est_completion_date",
"estimated_time",
"estimated_value",
"expected_cost",
"external_steps_needed",
"favorite_idea",
"feedback_type",
"financial",
"funding_amount",
"grant_application_process",
"hiring_candidate_status",
"idea_status",
"ids_link",
"ids_patient_link",
"implementation_stage",
"insurance",
"interview_area",
"interview_question_score",
"itero_scan_link",
"job_s_applied_to",
"lab",
"launch_status",
"lead_status",
"localization_language",
"localization_market_team",
"localization_status",
"meeting_minutes",
"meeting_needed",
"minutes",
"mrr",
"must_localize",
"name_of_foundation",
"need_to_follow_up",
"next_appointment",
"next_steps_sales",
"num_people",
"number_of_user_reports",
"office_location",
"onboarding_activity",
"owner",
"participants_needed",
"patient_date_of_birth",
"patient_email",
"patient_phone",
"patient_status",
"phone_number",
"planning_category",
"point_of_contact",
"position",
"post_format",
"prescription",
"priority",
"priority_level",
"product",
"product_stage",
"progress",
"project_size",
"project_status",
"proposed_budget",
"publish_status",
"reason_for_scan",
"referral",
"request_type",
"research_status",
"responsible_department",
"responsible_team",
"risk_assessment_status",
"room_name",
"sales_counterpart",
"sentiment",
"shipping_link",
"social_channels",
"stage",
"status",
"status_design",
"status_of_initiative",
"system_setup",
"task_progress",
"team",
"team_marketing",
"team_responsible",
"time_it_takes_to_complete_tasks",
"timeframe",
"treatment_type",
"type_work_requests_it",
"use_agency",
"user_name",
"vendor_category",
"vendor_type",
"word_count",
null
],
"example": "priority"
}
}
}
]
},
{
"type": "object",
"properties": {
"workspace": {
"type": "string",
"description": "*Create-Only* The workspace to create a custom field in.",
"example": "1331"
},
"owned_by_app": {
"type": "boolean",
"description": "*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`."
},
"people_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.",
"items": {
"type": "string",
"description": "The GID of a user."
}
},
"reference_value": {
"type": "array",
"description": "*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.",
"items": {
"type": "string",
"description": "The GID of an object."
}
}
},
"required": [
"workspace"
]
}
]
},
{
"type": "object",
"properties": {
"resource_subtype": {
"type": "string",
"description": "The type of the custom field. Must be one of the given values.",
"enum": [
"text",
"enum",
"multi_enum",
"number",
"date",
"people",
"reference"
],
"example": "text"
}
},
"required": [
"resource_subtype"
]
}
]
}
]
},
"is_important": {
"type": "boolean",
"description": "Whether this field should be considered important to this container (for instance, to display in the list view of items in the container).",
"example": true
},
"insert_before": {
"type": "string",
"description": "A gid of a Custom Field Setting on this container, before which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.",
"example": "1331"
},
"insert_after": {
"type": "string",
"description": "A gid of a Custom Field Setting on this container, after which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.",
"example": "1331"
}
},
"required": [
"custom_field"
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the custom field setting.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"custom_field\"\n ],\n \"properties\": {\n \"custom_field\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"description\": \"The custom field to associate with this container.\",\n \"example\": \"14916\"\n },\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"Custom Fields store the metadata that is used in order to add user-specified information to tasks in Asana. Be sure to reference the [custom fields](/reference/custom-fields) developer documentation for more information about how custom fields relate to various resources in Asana.\\n\\nUsers in Asana can [lock custom fields](https://asana.com/guide/help/premium/custom-fields#gl-lock-fields), which will make them read-only when accessed by other users. Attempting to edit a locked custom field will return HTTP error code `403 Forbidden`.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"custom_field\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Status\"\n },\n \"type\": {\n \"description\": \"*Deprecated: new integrations should prefer the resource_subtype field.* The type of the custom field. Must be one of the given values.\\n\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\"\n ]\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"enabled\": {\n \"description\": \"*Conditional*. This field applies only to [custom field values](/docs/custom-fields-guide#/accessing-custom-field-values-on-tasks-or-projects) and is not available for [custom field definitions](/docs/custom-fields-guide#/accessing-custom-field-definitions).\\nDetermines if the custom field is enabled or not. For more details, see the [Custom Fields documentation](/docs/custom-fields-guide#/enabled-and-disabled-values).\",\n \"type\": \"boolean\",\n \"readOnly\": true,\n \"example\": true\n },\n \"representation_type\": {\n \"description\": \"This field tells the type of the custom field.\",\n \"type\": \"string\",\n \"example\": \"number\",\n \"readOnly\": true,\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"formula\",\n \"custom_id\"\n ]\n },\n \"id_prefix\": {\n \"description\": \"This field is the unique custom ID string for the custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"ID\"\n },\n \"input_restrictions\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of strings reflects the allowed types of objects that can be written to a `reference` custom field value.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": \"task\"\n },\n \"is_formula_field\": {\n \"description\": \"*Conditional*. This flag describes whether a custom field is a formula custom field.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"date_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `date`. This object reflects the chosen date (and optionally, time) value of a `date` custom field. If no date is selected, the value of `date_value` will be `null`.\",\n \"type\": \"object\",\n \"nullable\": true,\n \"properties\": {\n \"date\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in YYYY-MM-DD format.\",\n \"example\": \"2024-08-23\"\n },\n \"date_time\": {\n \"type\": \"string\",\n \"description\": \"A string representing the date in ISO 8601 format. If no time value is selected, the value of `date-time` will be `null`.\",\n \"example\": \"2024-08-23T22:00:00.000Z\"\n }\n }\n },\n \"enum_value\": {\n \"allOf\": [\n {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"nullable\": true,\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum`. This object is the chosen value of an `enum` custom field.\"\n }\n ]\n },\n \"multi_enum_values\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `multi_enum`. This object is the chosen values of a `multi_enum` custom field.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"number_value\": {\n \"description\": \"*Conditional*. This number is the value of a `number` custom field.\",\n \"type\": \"number\",\n \"nullable\": true,\n \"example\": 5.2\n },\n \"text_value\": {\n \"description\": \"*Conditional*. This string is the value of a `text` custom field.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"Some Value\"\n },\n \"display_value\": {\n \"description\": \"A string representation for the value of the custom field. Integrations that don't require the underlying type should use this field to read values. Using this field will future-proof an app against new custom field types.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"blue\",\n \"nullable\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The description of the custom field.\",\n \"type\": \"string\",\n \"example\": \"Development team priority\"\n },\n \"enum_options\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `enum` or `multi_enum`. This array specifies the possible values which an `enum` custom field can adopt. To modify the enum options, refer to [working with enum options](/reference/createenumoptionforcustomfield).\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"Enum options are the possible values which an enum custom field can adopt. An enum custom field must contain at least 1 enum option but no more than 500.\\n\\nYou can add enum options to a custom field by using the `POST /custom_fields/custom_field_gid/enum_options` endpoint.\\n\\n**It is not possible to remove or delete an enum option**. Instead, enum options can be disabled by updating the `enabled` field to false with the `PUT /enum_options/enum_option_gid` endpoint. Other attributes can be updated similarly.\\n\\nOn creation of an enum option, `enabled` is always set to `true`, meaning the enum option is a selectable value for the custom field. Setting `enabled=false` is equivalent to \\u201ctrashing\\u201d the enum option in the Asana web app within the \\u201cEdit Fields\\u201d dialog. The enum option will no longer be selectable but, if the enum option value was previously set within a task, the task will retain the value.\\n\\nEnum options are an ordered list and by default new enum options are inserted at the end. Ordering in relation to existing enum options can be specified on creation by using `insert_before` or `insert_after` to reference an existing enum option. Only one of `insert_before` and `insert_after` can be provided when creating a new enum option.\\n\\nAn enum options list can be reordered with the `POST /custom_fields/custom_field_gid/enum_options/insert` endpoint.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"enum_option\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the enum option.\",\n \"type\": \"string\",\n \"example\": \"Low\"\n },\n \"enabled\": {\n \"description\": \"Whether or not the enum option is a selectable value for the custom field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"color\": {\n \"description\": \"The color of the enum option. Defaults to `none`.\",\n \"type\": \"string\",\n \"example\": \"blue\"\n }\n }\n }\n },\n \"precision\": {\n \"description\": \"Only relevant for custom fields of type `Number`. This field dictates the number of places after the decimal to round to, i.e. 0 is integer values, 1 rounds to the nearest tenth, and so on. Must be between 0 and 6, inclusive.\\nFor percentage format, this may be unintuitive, as a value of 0.25 has a precision of 0, while a value of 0.251 has a precision of 1. This is due to 0.25 being displayed as 25%.\\nThe identifier format will always have a precision of 0.\",\n \"type\": \"integer\",\n \"example\": 2\n },\n \"format\": {\n \"description\": \"The format of this custom field.\",\n \"type\": \"string\",\n \"enum\": [\n \"currency\",\n \"identifier\",\n \"percentage\",\n \"custom\",\n \"duration\",\n \"none\"\n ],\n \"example\": \"custom\"\n },\n \"currency_code\": {\n \"description\": \"ISO 4217 currency code to format this custom field. This will be null if the `format` is not `currency`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"EUR\"\n },\n \"custom_label\": {\n \"description\": \"This is the string that appears next to the custom field value. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"gold pieces\"\n },\n \"custom_label_position\": {\n \"description\": \"Only relevant for custom fields with `custom` format. This depicts where to place the custom label. This will be null if the `format` is not `custom`.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"enum\": [\n \"prefix\",\n \"suffix\",\n null\n ],\n \"example\": \"suffix\"\n },\n \"is_global_to_workspace\": {\n \"description\": \"This flag describes whether this custom field is available to every container in the workspace. Before project-specific custom fields, this field was always true.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"has_notifications_enabled\": {\n \"description\": \"*Conditional*. This flag describes whether a follower of a task with this field should receive inbox notifications from changes to this field.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"asana_created_field\": {\n \"description\": \"*Conditional*. A unique identifier to associate this field with the template source of truth.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"nullable\": true,\n \"enum\": [\n \"a_v_requirements\",\n \"account_name\",\n \"actionable\",\n \"align_shipping_link\",\n \"align_status\",\n \"allotted_time\",\n \"appointment\",\n \"approval_stage\",\n \"approved\",\n \"article_series\",\n \"board_committee\",\n \"browser\",\n \"campaign_audience\",\n \"campaign_project_status\",\n \"campaign_regions\",\n \"channel_primary\",\n \"client_topic_type\",\n \"complete_by\",\n \"contact\",\n \"contact_email_address\",\n \"content_channels\",\n \"content_channels_needed\",\n \"content_stage\",\n \"content_type\",\n \"contract\",\n \"contract_status\",\n \"cost\",\n \"creation_stage\",\n \"creative_channel\",\n \"creative_needed\",\n \"creative_needs\",\n \"data_sensitivity\",\n \"deal_size\",\n \"delivery_appt\",\n \"delivery_appt_date\",\n \"department\",\n \"department_responsible\",\n \"design_request_needed\",\n \"design_request_type\",\n \"discussion_category\",\n \"do_this_task\",\n \"editorial_content_status\",\n \"editorial_content_tag\",\n \"editorial_content_type\",\n \"effort\",\n \"effort_level\",\n \"est_completion_date\",\n \"estimated_time\",\n \"estimated_value\",\n \"expected_cost\",\n \"external_steps_needed\",\n \"favorite_idea\",\n \"feedback_type\",\n \"financial\",\n \"funding_amount\",\n \"grant_application_process\",\n \"hiring_candidate_status\",\n \"idea_status\",\n \"ids_link\",\n \"ids_patient_link\",\n \"implementation_stage\",\n \"insurance\",\n \"interview_area\",\n \"interview_question_score\",\n \"itero_scan_link\",\n \"job_s_applied_to\",\n \"lab\",\n \"launch_status\",\n \"lead_status\",\n \"localization_language\",\n \"localization_market_team\",\n \"localization_status\",\n \"meeting_minutes\",\n \"meeting_needed\",\n \"minutes\",\n \"mrr\",\n \"must_localize\",\n \"name_of_foundation\",\n \"need_to_follow_up\",\n \"next_appointment\",\n \"next_steps_sales\",\n \"num_people\",\n \"number_of_user_reports\",\n \"office_location\",\n \"onboarding_activity\",\n \"owner\",\n \"participants_needed\",\n \"patient_date_of_birth\",\n \"patient_email\",\n \"patient_phone\",\n \"patient_status\",\n \"phone_number\",\n \"planning_category\",\n \"point_of_contact\",\n \"position\",\n \"post_format\",\n \"prescription\",\n \"priority\",\n \"priority_level\",\n \"product\",\n \"product_stage\",\n \"progress\",\n \"project_size\",\n \"project_status\",\n \"proposed_budget\",\n \"publish_status\",\n \"reason_for_scan\",\n \"referral\",\n \"request_type\",\n \"research_status\",\n \"responsible_department\",\n \"responsible_team\",\n \"risk_assessment_status\",\n \"room_name\",\n \"sales_counterpart\",\n \"sentiment\",\n \"shipping_link\",\n \"social_channels\",\n \"stage\",\n \"status\",\n \"status_design\",\n \"status_of_initiative\",\n \"system_setup\",\n \"task_progress\",\n \"team\",\n \"team_marketing\",\n \"team_responsible\",\n \"time_it_takes_to_complete_tasks\",\n \"timeframe\",\n \"treatment_type\",\n \"type_work_requests_it\",\n \"use_agency\",\n \"user_name\",\n \"vendor_category\",\n \"vendor_type\",\n \"word_count\",\n null\n ],\n \"example\": \"priority\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"workspace\"\n ],\n \"properties\": {\n \"workspace\": {\n \"type\": \"string\",\n \"description\": \"*Create-Only* The workspace to create a custom field in.\",\n \"example\": \"1331\"\n },\n \"owned_by_app\": {\n \"type\": \"boolean\",\n \"description\": \"*Allow-listed*. Instructs the API that this Custom Field is app-owned. This parameter is allow-listed to specific apps at this point in time. For apps that are not allow-listed, providing this parameter will result in a `403 Forbidden`.\"\n },\n \"people_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `people`. This array of user GIDs reflects the users to be written to a `people` custom field. Note that *write* operations will replace existing users (if any) in the custom field with the users specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"reference_value\": {\n \"description\": \"*Conditional*. Only relevant for custom fields of type `reference`. This array of GIDs reflects the objects to be written to a `reference` custom field. Note that *write* operations will replace existing objects (if any) in the custom field with the objects specified in this array.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"The GID of an object.\"\n },\n \"example\": [\n \"12345\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"resource_subtype\"\n ],\n \"properties\": {\n \"resource_subtype\": {\n \"description\": \"The type of the custom field. Must be one of the given values.\",\n \"type\": \"string\",\n \"example\": \"text\",\n \"enum\": [\n \"text\",\n \"enum\",\n \"multi_enum\",\n \"number\",\n \"date\",\n \"people\",\n \"reference\"\n ]\n }\n }\n }\n ]\n }\n ]\n },\n \"is_important\": {\n \"description\": \"Whether this field should be considered important to this container (for instance, to display in the list view of items in the container).\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"insert_before\": {\n \"description\": \"A gid of a Custom Field Setting on this container, before which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n },\n \"insert_after\": {\n \"description\": \"A gid of a Custom Field Setting on this container, after which the new Custom Field Setting will be added. `insert_before` and `insert_after` parameters cannot both be specified.\",\n \"type\": \"string\",\n \"example\": \"1331\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "removeCustomFieldSettingForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_custom_field_from_project",
"description": {
"tagline": "Remove a custom field setting from an Asana project.",
"detailed": "Use this tool to remove a custom field setting from a specified project in Asana. This requires the 'projects:write' scope."
},
"return_annotation": "Indicates the custom field setting was removed from the project.",
"arguments": [
{
"name": "project_unique_id",
"alternative_names": [
"project_id",
"gid_of_project"
],
"description": "Globally unique identifier for the Asana project.",
"endpoint_argument_name": "project_gid"
},
{
"name": "custom_field_id_to_remove",
"alternative_names": [
"field_id_to_remove",
"remove_custom_field_id"
],
"description": "The ID of the custom field to remove from the specified project in Asana.",
"endpoint_argument_name": "data.custom_field"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_pretty_output"
],
"description": "Formats the response in a readable way with line breaks and indentation. Use for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/removeCustomFieldSetting",
"tags": [
"Projects"
],
"summary": "Remove a custom field from a project",
"description": "<b>Required scope: </b><code>projects:write</code>\n\nRemoves a custom field setting from a project.",
"requires_security": true,
"oauth_scopes": [
"projects:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.custom_field",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The custom field to remove from this portfolio."
},
"description": "The custom field to remove from this portfolio.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The custom field to remove from this portfolio.",
"example": "14916"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the custom field setting being removed.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"custom_field\"\n ],\n \"properties\": {\n \"custom_field\": {\n \"description\": \"The custom field to remove from this portfolio.\",\n \"type\": \"string\",\n \"example\": \"14916\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getTaskCountsForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_task_counts_for_project",
"description": {
"tagline": "Retrieve task count details for a specific project in Asana.",
"detailed": "Use this tool to get detailed counts of tasks, including total, incomplete, and completed tasks, for a specific project in Asana. Ensure the necessary scopes are granted: `projects:read`, and optionally `custom_fields:read` and `teams:read`. Opt in to specific fields to retrieve data, considering rate and cost limits."
},
"return_annotation": "Task count details for a specified project.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_id",
"project_identifier"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"select_fields_to_include",
"opt_in_fields"
],
"description": "Comma-separated list of properties to include in the response. Opt-in to get specific data fields from the endpoint.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_response_pretty",
"pretty_print_output"
],
"description": "Set to true to format the response in a readable way with line breaks and indentation. Use for debugging due to increased response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/projects/{project_gid}/task_counts",
"tags": [
"Projects"
],
"summary": "Get task count of a project",
"description": "<b>Required scope: </b><code>projects:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>custom_field_settings</code></td>\n <td><code>custom_fields:read</code></td>\n </tr>\n <tr>\n <td><code>team</code></td>\n <td><code>teams:read</code></td>\n </tr>\n</table>\n\nGet an object that holds task count fields. **All fields are excluded by default**. You must [opt in](/docs/inputoutput-options) using `opt_fields` to get any information from this endpoint.\n\nThis endpoint has an additional [rate limit](/docs/rate-limits) and each field counts especially high against our [cost limits](/docs/rate-limits#cost-limits).\n\nMilestones are just tasks, so they are included in the `num_tasks`, `num_incomplete_tasks`, and `num_completed_tasks` counts.",
"requires_security": true,
"oauth_scopes": [
"projects:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"num_completed_milestones",
"num_completed_tasks",
"num_incomplete_milestones",
"num_incomplete_tasks",
"num_milestones",
"num_tasks"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "addMembersForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_members_to_project",
"description": {
"tagline": "Add specified users as members of a project in Asana.",
"detailed": "Use this tool to add users as members of a specific project. This may also add users as followers depending on their notification settings."
},
"return_annotation": "Returns the updated project record with new members.",
"arguments": [
{
"name": "project_unique_identifier",
"alternative_names": [
"project_global_id",
"project_id"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"add_optional_fields",
"extra_resource_properties"
],
"description": "A comma-separated list of optional properties to include in the response. This adds excluded properties by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "user_identifiers_array",
"alternative_names": [
"user_ids_list",
"members_list"
],
"description": "An array of strings identifying users to be added to the project. Values can be 'me', an email, or a user GID.",
"endpoint_argument_name": "data.members"
},
{
"name": "pretty_output",
"alternative_names": [
"pretty_response_format",
"formatted_output"
],
"description": "If true, the response is formatted with line breaks and indentation for readability. Use mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/addMembers",
"tags": [
"Projects"
],
"summary": "Add users to a project",
"description": "Adds the specified list of users as members of the project. Note that a user being added as a member may also be added as a *follower* as a result of this operation. This is because the user's default notification settings (i.e., in the \"Notifications\" tab of \"My Profile Settings\") will override this endpoint's default behavior of setting \"Tasks added\" notifications to `false`.\nReturns the updated project record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.members",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"example": "521621,621373"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the members being added.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"members\"\n ],\n \"properties\": {\n \"members\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"521621,621373\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeMembersForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_members_from_project",
"description": {
"tagline": "Remove specified users from a project in Asana.",
"detailed": "This tool calls the Asana API to remove a list of specified users from the members of a project. It returns the updated project record after the removal operation."
},
"return_annotation": "Updated project record with members removed.",
"arguments": [
{
"name": "project_identifier",
"alternative_names": [
"project_gid_value",
"project_unique_id"
],
"description": "Globally unique identifier for the project.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_fields_inclusion",
"fields_to_include"
],
"description": "A list of optional fields to include in the response. Use a comma-separated list to specify.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "user_identifiers",
"alternative_names": [
"members_to_remove",
"users_list"
],
"description": "Array of user identifiers to be removed from the project. Accepts \"me\", email, or user gid.",
"endpoint_argument_name": "data.members"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_output",
"format_output_nicely"
],
"description": "Set to true for formatted, human-readable JSON. Increases response size; use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/removeMembers",
"tags": [
"Projects"
],
"summary": "Remove users from a project",
"description": "Removes the specified list of users from members of the project.\nReturns the updated project record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.members",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"example": "521621,621373"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the members being removed.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"members\"\n ],\n \"properties\": {\n \"members\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"521621,621373\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addFollowersForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_followers_to_project",
"description": {
"tagline": "Add specified users as followers to an Asana project.",
"detailed": "This tool adds a list of users as followers to a specified project in Asana. Followers receive \"tasks added\" notifications and are made members of the project if they aren't already. Use this when needing to update project followers."
},
"return_annotation": "Updated project record with new followers.",
"arguments": [
{
"name": "project_unique_id",
"alternative_names": [
"project_identifier",
"project_gid_tool"
],
"description": "Globally unique identifier for the project to which followers will be added.",
"endpoint_argument_name": "project_gid"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"include_optional_fields",
"additional_fields"
],
"description": "Comma-separated list of optional properties to include in the response to enrich data output.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "user_identifiers_to_add_as_followers",
"alternative_names": [
"followers_user_identifiers",
"users_to_follow_project"
],
"description": "An array of user identifiers to add as followers. Accepts 'me', email addresses, or user gids.",
"endpoint_argument_name": "data.followers"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response",
"formatted_output"
],
"description": "Enable pretty JSON output for readability, useful for debugging. May slow responses.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/addFollowers",
"tags": [
"Projects"
],
"summary": "Add followers to a project",
"description": "Adds the specified list of users as followers to the project. Followers are a subset of members who have opted in to receive \"tasks added\" notifications for a project. Therefore, if the users are not already members of the project, they will also become members as a result of this operation.\nReturns the updated project record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.followers",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"example": "521621,621373"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the followers being added.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"followers\"\n ],\n \"properties\": {\n \"followers\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"521621,621373\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeFollowersForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_followers_from_project",
"description": {
"tagline": "Remove specified users from following a project in Asana.",
"detailed": "This tool removes a list of specified users from following a project in Asana without affecting their membership status. It should be called when you want to update who follows a project without altering project membership."
},
"return_annotation": "The updated project record without the specified followers.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_id",
"project_unique_id"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties",
"extra_properties"
],
"description": "A list of property names to include in the response, specified as strings. This should be used to include properties that are not returned by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "user_identifiers_to_unfollow",
"alternative_names": [
"unfollow_user_list",
"remove_follower_identifiers"
],
"description": "Array of user identifiers (e.g. \"me\", email, or gid) to remove from following the project.",
"endpoint_argument_name": "data.followers"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response_format",
"beautify_output"
],
"description": "Set to true to format the response with line breaks and indentation for readability. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/removeFollowers",
"tags": [
"Projects"
],
"summary": "Remove followers from a project",
"description": "Removes the specified list of users from following the project, this will not affect project membership status.\nReturns the updated project record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"archived",
"color",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_from_template",
"created_from_template.name",
"current_status",
"current_status.author",
"current_status.author.name",
"current_status.color",
"current_status.created_at",
"current_status.created_by",
"current_status.created_by.name",
"current_status.html_text",
"current_status.modified_at",
"current_status.text",
"current_status.title",
"current_status_update",
"current_status_update.resource_subtype",
"current_status_update.title",
"custom_field_settings",
"custom_field_settings.custom_field",
"custom_field_settings.custom_field.asana_created_field",
"custom_field_settings.custom_field.created_by",
"custom_field_settings.custom_field.created_by.name",
"custom_field_settings.custom_field.currency_code",
"custom_field_settings.custom_field.custom_label",
"custom_field_settings.custom_field.custom_label_position",
"custom_field_settings.custom_field.date_value",
"custom_field_settings.custom_field.date_value.date",
"custom_field_settings.custom_field.date_value.date_time",
"custom_field_settings.custom_field.default_access_level",
"custom_field_settings.custom_field.description",
"custom_field_settings.custom_field.display_value",
"custom_field_settings.custom_field.enabled",
"custom_field_settings.custom_field.enum_options",
"custom_field_settings.custom_field.enum_options.color",
"custom_field_settings.custom_field.enum_options.enabled",
"custom_field_settings.custom_field.enum_options.name",
"custom_field_settings.custom_field.enum_value",
"custom_field_settings.custom_field.enum_value.color",
"custom_field_settings.custom_field.enum_value.enabled",
"custom_field_settings.custom_field.enum_value.name",
"custom_field_settings.custom_field.format",
"custom_field_settings.custom_field.has_notifications_enabled",
"custom_field_settings.custom_field.id_prefix",
"custom_field_settings.custom_field.input_restrictions",
"custom_field_settings.custom_field.is_formula_field",
"custom_field_settings.custom_field.is_global_to_workspace",
"custom_field_settings.custom_field.is_value_read_only",
"custom_field_settings.custom_field.multi_enum_values",
"custom_field_settings.custom_field.multi_enum_values.color",
"custom_field_settings.custom_field.multi_enum_values.enabled",
"custom_field_settings.custom_field.multi_enum_values.name",
"custom_field_settings.custom_field.name",
"custom_field_settings.custom_field.number_value",
"custom_field_settings.custom_field.people_value",
"custom_field_settings.custom_field.people_value.name",
"custom_field_settings.custom_field.precision",
"custom_field_settings.custom_field.privacy_setting",
"custom_field_settings.custom_field.reference_value",
"custom_field_settings.custom_field.reference_value.name",
"custom_field_settings.custom_field.representation_type",
"custom_field_settings.custom_field.resource_subtype",
"custom_field_settings.custom_field.text_value",
"custom_field_settings.custom_field.type",
"custom_field_settings.is_important",
"custom_field_settings.parent",
"custom_field_settings.parent.name",
"custom_field_settings.project",
"custom_field_settings.project.name",
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"default_access_level",
"default_view",
"due_date",
"due_on",
"followers",
"followers.name",
"html_notes",
"icon",
"members",
"members.name",
"minimum_access_level_for_customization",
"minimum_access_level_for_sharing",
"modified_at",
"name",
"notes",
"owner",
"permalink_url",
"privacy_setting",
"project_brief",
"public",
"start_on",
"team",
"team.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.followers",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"example": "521621,621373"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the followers being removed.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"followers\"\n ],\n \"properties\": {\n \"followers\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"521621,621373\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "projectSaveAsTemplate",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_project_template",
"description": {
"tagline": "Create a project template in Asana asynchronously.",
"detailed": "This tool triggers the creation of a project template in Asana and returns details of the asynchronous job handling the process. Use this to save an existing project as a template, enabling its reuse."
},
"return_annotation": "Asynchronous job information for template creation.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_unique_id",
"project_gid_identifier"
],
"description": "Globally unique identifier for the project. Required to specify which project is being saved as a template.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_properties",
"optional_fields"
],
"description": "Specify a list of optional properties to include in the response by listing their names as strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "template_name",
"alternative_names": [
"project_template_name",
"new_template_name"
],
"description": "The name of the new project template in Asana.",
"endpoint_argument_name": "data.name"
},
{
"name": "team_id_for_project_template",
"alternative_names": [
"new_project_template_team",
"project_template_team_identifier"
],
"description": "Specify the team ID for the new project template. Use this when the project is in an organization.",
"endpoint_argument_name": "data.team"
},
{
"name": "workspace_id_for_project_template",
"alternative_names": [
"new_project_template_workspace_id",
"template_workspace_id"
],
"description": "Globally unique identifier for the workspace of the new project template. Use only if the project is in a workspace.",
"endpoint_argument_name": "data.workspace"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"format_output_pretty"
],
"description": "Enable pretty output formatting for easier readability in the response. Use mainly for debugging as it may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "make_template_public",
"alternative_names": [
"set_template_public",
"template_visibility"
],
"description": "Specify true to make the project template public to its team. Use false to keep it private.",
"endpoint_argument_name": "data.public"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/saveAsTemplate",
"tags": [
"Projects"
],
"summary": "Create a project template from a project",
"description": "Creates and returns a job that will asynchronously handle the project template creation.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"new_graph_export",
"new_graph_export.completed_at",
"new_graph_export.created_at",
"new_graph_export.download_url",
"new_project",
"new_project.name",
"new_project_template",
"new_project_template.name",
"new_resource_export",
"new_resource_export.completed_at",
"new_resource_export.created_at",
"new_resource_export.download_url",
"new_task",
"new_task.created_by",
"new_task.name",
"new_task.resource_subtype",
"new_task_template",
"new_task_template.name",
"resource_subtype",
"status"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The name of the new project template."
},
"description": "The name of the new project template.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The name of the new project template.",
"example": "New Project Template"
},
"schema_required": false
},
{
"name": "data.team",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Sets the team of the new project template. If the project exists in an organization, specify team and not workspace."
},
"description": "Sets the team of the new project template. If the project exists in an organization, specify team and not workspace.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Sets the team of the new project template. If the project exists in an organization, specify team and not workspace.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Sets the workspace of the new project template. Only specify workspace if the project exists in a workspace."
},
"description": "Sets the workspace of the new project template. Only specify workspace if the project exists in a workspace.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Sets the workspace of the new project template. Only specify workspace if the project exists in a workspace.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.public",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Sets the project template to public to its team."
},
"description": "Sets the project template to public to its team.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "boolean",
"description": "Sets the project template to public to its team.",
"example": true
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Describes the inputs used for creating a project template, such as the resulting project template's name, which team it should be created in.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"required\": [\n \"name\",\n \"public\"\n ],\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the new project template.\",\n \"type\": \"string\",\n \"example\": \"New Project Template\"\n },\n \"team\": {\n \"description\": \"Sets the team of the new project template. If the project exists in an organization, specify team and not workspace.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"workspace\": {\n \"description\": \"Sets the workspace of the new project template. Only specify workspace if the project exists in a workspace.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"public\": {\n \"description\": \"Sets the project template to public to its team.\",\n \"type\": \"boolean\",\n \"example\": true\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getReactionsOnObject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_reactions_by_emoji",
"description": {
"tagline": "Retrieve reactions with a specific emoji on an object.",
"detailed": "Use this tool to get a list of reactions for a specific emoji character on an Asana object. Useful for analyzing engagement or feedback expressed through emojis."
},
"return_annotation": "Reactions with the specified emoji on the object.",
"arguments": [
{
"name": "object_gid",
"alternative_names": [
"object_id",
"object_identifier"
],
"description": "Globally unique identifier (GID) for the Asana object (status update or story) from which to fetch reactions.",
"endpoint_argument_name": "target"
},
{
"name": "emoji_base_character",
"alternative_names": [
"emoji_char",
"emoji_base_string"
],
"description": "Specify the emoji base character to filter reactions. Returns only reactions with this emoji.",
"endpoint_argument_name": "emoji_base"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Specify the number of results to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"pagination_offset"
],
"description": "Offset token to retrieve the next page of results. Use the token provided by a previous paginated request. If not specified, the API returns the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable for readable JSON output with line breaks and indentation. Use primarily for debugging due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/reactions",
"tags": [
"Reactions"
],
"summary": "Get reactions with an emoji base on an object.",
"description": "Returns the reactions with a specified emoji base character on the object.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "target",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for object to fetch reactions from. Must be a GID for a status update or story."
},
"description": "Globally unique identifier for object to fetch reactions from. Must be a GID for a status update or story.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "emoji_base",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return reactions with this emoji base character."
},
"description": "Only return reactions with this emoji base character.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "triggerRule",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "trigger_asana_rule",
"description": {
"tagline": "Trigger a rule in Asana using an incoming web request.",
"detailed": "Use this tool to trigger a specific rule in Asana that is set up with an \"incoming web request\" trigger. Ideal for automating workflows by executing preset rules on demand."
},
"return_annotation": "Confirmation of rule execution status.",
"arguments": [
{
"name": "incoming_web_request_trigger_id",
"alternative_names": [
"trigger_rule_id",
"web_request_trigger_id"
],
"description": "The ID of the incoming web request trigger used to execute the rule in Asana. This is automatically generated for the API endpoint.",
"endpoint_argument_name": "rule_trigger_gid"
},
{
"name": "rule_variables_dictionary",
"alternative_names": [
"rule_parameters",
"webhook_variables"
],
"description": "A JSON dictionary containing variables accessible within the rule. It includes 'resource' (ID of the resource, always a task) and 'action_data' (dynamic keys and values for rule actions).",
"endpoint_argument_name": "requestBody"
}
]
},
"method": "POST",
"path": "/rule_triggers/{rule_trigger_gid}/run",
"tags": [
"Rules"
],
"summary": "Trigger a rule",
"description": "Trigger a rule which uses an [\"incoming web request\"](/docs/incoming-web-requests) trigger.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [],
"path": [
{
"name": "rule_trigger_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The ID of the incoming web request trigger. This value is a path parameter that is automatically generated for the API endpoint."
},
"description": "The ID of the incoming web request trigger. This value is a path parameter that is automatically generated for the API endpoint.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"resource": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The ID of the resource. For the duration of the beta, this resource is always a task, and this task must exist in the project in which the rule is created."
},
"action_data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The dynamic keys and values of the request. These fields are intended to be used in the action for the rule associated with this trigger."
}
},
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "A dictionary of variables accessible from within the rule."
},
"description": "A dictionary of variables accessible from within the rule.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"resource": {
"type": "string",
"description": "The ID of the resource. For the duration of the beta, this resource is always a task, and this task must exist in the project in which the rule is created.",
"example": "12345"
},
"action_data": {
"type": "object",
"description": "The dynamic keys and values of the request. These fields are intended to be used in the action for the rule associated with this trigger.",
"properties": {},
"additionalProperties": true
}
},
"required": [
"resource",
"action_data"
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"A dictionary of variables accessible from within the rule.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"resource\": {\n \"description\": \"The ID of the resource. For the duration of the beta, this resource is always a task, and this task must exist in the project in which the rule is created.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"action_data\": {\n \"type\": \"object\",\n \"additionalProperties\": true,\n \"description\": \"The dynamic keys and values of the request. These fields are intended to be used in the action for the rule associated with this trigger.\",\n \"example\": {\n \"jira_ticket_name\": \"Test\",\n \"jira_ticket_id\": \"123\"\n }\n }\n },\n \"required\": [\n \"resource\",\n \"action_data\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getSection",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_section",
"description": {
"tagline": "Retrieve a complete record of a single Asana section.",
"detailed": "Use this tool to obtain detailed information about a specific section in Asana by providing the section's GID."
},
"return_annotation": "Complete record of a single Asana section.",
"arguments": [
{
"name": "section_global_id",
"alternative_names": [
"section_identifier",
"section_gid"
],
"description": "The globally unique identifier for the section to retrieve.",
"endpoint_argument_name": "section_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties_to_include",
"fields_to_include"
],
"description": "Specify a list of optional properties to include in the response. This should be an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting_enabled",
"use_pretty_output"
],
"description": "Set to true to receive the response in a 'pretty' format with line breaks and indentation. Useful for debugging. This increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/sections/{section_gid}",
"tags": [
"Sections"
],
"summary": "Get a section",
"description": "Returns the complete record for a single section.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"name",
"project",
"project.name",
"projects",
"projects.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "section_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The globally unique identifier for the section."
},
"description": "The globally unique identifier for the section.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateSection",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_section_name_asana",
"description": {
"tagline": "Update the name of a specific section in Asana.",
"detailed": "Use this tool to update the name of an existing section in an Asana project. It specifically changes the `name` field of a section without affecting other fields. Ideal for modifying section titles while preserving other data."
},
"return_annotation": "The complete updated section record.",
"arguments": [
{
"name": "section_global_identifier",
"alternative_names": [
"section_gid",
"section_unique_id"
],
"description": "The globally unique identifier for the section to be updated in Asana.",
"endpoint_argument_name": "section_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"extra_fields"
],
"description": "Comma-separated list of properties to include in the response. Allows inclusion of optional fields excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "section_name",
"alternative_names": [
"new_section_name",
"section_title"
],
"description": "The new name for the section. It cannot be an empty string.",
"endpoint_argument_name": "data.name"
},
{
"name": "section_insert_before_id",
"alternative_names": [
"insert_before_section_id",
"preceding_section_id"
],
"description": "The ID of an existing section in the project before which the updated section should be inserted. Cannot be provided with section_insert_after_id.",
"endpoint_argument_name": "data.insert_before"
},
{
"name": "insert_after_section_id",
"alternative_names": [
"after_section",
"post_section_id"
],
"description": "Identifier of an existing section after which the updated section should be inserted. Cannot be used with `insert_before_section_id`.",
"endpoint_argument_name": "data.insert_after"
},
{
"name": "pretty_output",
"alternative_names": [
"pretty_response",
"readable_format"
],
"description": "Set to true for a readable, pretty formatted response with line breaks and indentation. Recommended for debugging as it increases response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/sections/{section_gid}",
"tags": [
"Sections"
],
"summary": "Update a section",
"description": "A specific, existing section can be updated by making a PUT request on\nthe URL for that project. Only the fields provided in the `data` block\nwill be updated; any unspecified fields will remain unchanged. (note that\nat this time, the only field that can be updated is the `name` field.)\n\nWhen using this method, it is best to specify only those fields you wish\nto change, or else you may overwrite changes made by another user since\nyou last retrieved the task.\n\nReturns the complete updated section record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"name",
"project",
"project.name",
"projects",
"projects.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "section_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The globally unique identifier for the section."
},
"description": "The globally unique identifier for the section.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The text to be displayed as the section name. This cannot be an empty string."
},
"description": "The text to be displayed as the section name. This cannot be an empty string.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The text to be displayed as the section name. This cannot be an empty string.",
"example": "Next Actions"
},
"schema_required": false
},
{
"name": "data.insert_before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after."
},
"description": "An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after.",
"example": "86420"
},
"schema_required": false
},
{
"name": "data.insert_after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before."
},
"description": "An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before.",
"example": "987654"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The section to create.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"The text to be displayed as the section name. This cannot be an empty string.\",\n \"type\": \"string\",\n \"example\": \"Next Actions\"\n },\n \"insert_before\": {\n \"description\": \"An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after.\",\n \"type\": \"string\",\n \"example\": \"86420\"\n },\n \"insert_after\": {\n \"description\": \"An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before.\",\n \"type\": \"string\",\n \"example\": \"987654\"\n }\n },\n \"required\": [\n \"name\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "deleteSection",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_section",
"description": {
"tagline": "Delete a specific, existing section in Asana.",
"detailed": "This tool deletes a specific, existing section in an Asana project using its GID. Note that the section must be empty to be deleted, and the last remaining section cannot be removed. The tool confirms deletion or provides error details if it fails."
},
"return_annotation": "Confirms the section deletion or explains failure.",
"arguments": [
{
"name": "section_global_identifier",
"alternative_names": [
"section_gid_identifier",
"section_unique_id"
],
"description": "The globally unique identifier for the section to be deleted in Asana.",
"endpoint_argument_name": "section_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_output_pretty"
],
"description": "If true, returns JSON with line breaks and indentation for readability. Increases response time and size, suitable for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/sections/{section_gid}",
"tags": [
"Sections"
],
"summary": "Delete a section",
"description": "A specific, existing section can be deleted by making a DELETE request on\nthe URL for that section.\n\nNote that sections must be empty to be deleted.\n\nThe last remaining section cannot be deleted.\n\nReturns an empty data block.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "section_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The globally unique identifier for the section."
},
"description": "The globally unique identifier for the section.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getSectionsForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_sections",
"description": {
"tagline": "Fetch compact records for sections in a specified project.",
"detailed": "Use this tool to obtain a list of all sections within a specific project on Asana. It helps in managing and organizing project components effectively by retrieving key details of each section."
},
"return_annotation": "Compact records of all sections in the specified project.",
"arguments": [
{
"name": "project_unique_identifier",
"alternative_names": [
"project_gid",
"project_global_id"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Specify the number of sections to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"page_offset",
"result_page_offset"
],
"description": "Offset token for paginated API requests. Use it to retrieve the next set of results. If not provided, the API returns the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "included_optional_fields",
"alternative_names": [
"extra_properties_to_include",
"optional_section_fields"
],
"description": "List of optional properties to include in the response, specified as strings. This allows you to fetch additional details about the sections that are not included by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_print_response"
],
"description": "Enables readable formatting of the response when true, using line breaks and indentation. Recommended for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/projects/{project_gid}/sections",
"tags": [
"Sections"
],
"summary": "Get sections in a project",
"description": "Returns the compact records for all sections in the specified project.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"name",
"offset",
"path",
"project",
"project.name",
"projects",
"projects.name",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createSectionForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_section_in_project",
"description": {
"tagline": "Create a new section in an Asana project.",
"detailed": "Use this tool to create a new section within a specified Asana project. It returns the complete details of the newly added section, helping you organize tasks by sections."
},
"return_annotation": "Full record of the newly created project section.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_id",
"project_identifier"
],
"description": "Globally unique identifier for the project in which to create the section.",
"endpoint_argument_name": "project_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"fields_to_include",
"optional_properties"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "section_name",
"alternative_names": [
"name_of_section",
"section_title"
],
"description": "The name to display as the section title in the project. This cannot be empty.",
"endpoint_argument_name": "data.name"
},
{
"name": "insert_before_section_id",
"alternative_names": [
"before_section_id",
"preceding_section_id"
],
"description": "ID of an existing section in the project before which the new section will be inserted. Cannot be used with 'insert_after_section_id'.",
"endpoint_argument_name": "data.insert_before"
},
{
"name": "insert_after_section_id",
"alternative_names": [
"post_section_id",
"position_after_section_id"
],
"description": "ID of an existing section to insert the new section after. Cannot be used with insert_before_section_id.",
"endpoint_argument_name": "data.insert_after"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response_format",
"format_pretty"
],
"description": "Set to true for a readable response format with line breaks and indentation. Use for debugging only.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/sections",
"tags": [
"Sections"
],
"summary": "Create a section in a project",
"description": "Creates a new section in a project.\nReturns the full record of the newly created section.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"name",
"project",
"project.name",
"projects",
"projects.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The text to be displayed as the section name. This cannot be an empty string."
},
"description": "The text to be displayed as the section name. This cannot be an empty string.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The text to be displayed as the section name. This cannot be an empty string.",
"example": "Next Actions"
},
"schema_required": false
},
{
"name": "data.insert_before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after."
},
"description": "An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after.",
"example": "86420"
},
"schema_required": false
},
{
"name": "data.insert_after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before."
},
"description": "An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before.",
"example": "987654"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The section to create.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"The text to be displayed as the section name. This cannot be an empty string.\",\n \"type\": \"string\",\n \"example\": \"Next Actions\"\n },\n \"insert_before\": {\n \"description\": \"An existing section within this project before which the added section should be inserted. Cannot be provided together with insert_after.\",\n \"type\": \"string\",\n \"example\": \"86420\"\n },\n \"insert_after\": {\n \"description\": \"An existing section within this project after which the added section should be inserted. Cannot be provided together with insert_before.\",\n \"type\": \"string\",\n \"example\": \"987654\"\n }\n },\n \"required\": [\n \"name\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addTaskForSection",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_task_to_section",
"description": {
"tagline": "Add a task to a specified section in Asana.",
"detailed": "Use this tool to add a task to a specific, existing section in an Asana project. The task will be positioned at the top unless specified otherwise, and will be removed from other sections in the project. It cannot be used to add separators."
},
"return_annotation": "Confirmation of task addition to the section.",
"arguments": [
{
"name": "section_global_identifier",
"alternative_names": [
"section_id",
"section_unique_identifier"
],
"description": "The globally unique identifier for the section where the task will be added.",
"endpoint_argument_name": "section_gid"
},
{
"name": "task_description",
"alternative_names": [
"task_details",
"task_info"
],
"description": "The name or description of the task to be added to the specified section.",
"endpoint_argument_name": "data.task"
},
{
"name": "insert_task_before",
"alternative_names": [
"place_task_before",
"position_task_before"
],
"description": "The ID of an existing task in the section to insert the new task before. Cannot be used with insert_task_after.",
"endpoint_argument_name": "data.insert_before"
},
{
"name": "insert_after_task_id",
"alternative_names": [
"after_task_id",
"post_task_id"
],
"description": "Specify the task ID after which the new task should be inserted within the section. Cannot be used with insert_before.",
"endpoint_argument_name": "data.insert_after"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting_enabled",
"use_pretty_format"
],
"description": "Enable pretty formatting for the API response, with line breaks and indentation for readability. Use mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/sections/{section_gid}/addTask",
"tags": [
"Sections"
],
"summary": "Add task to section",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nAdd a task to a specific, existing section. This will remove the task from other sections of the project.\n\nThe task will be inserted at the top of a section unless an insert_before or insert_after parameter is declared.\n\nThis does not work for separators (tasks with the resource_subtype of section).",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "section_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The globally unique identifier for the section."
},
"description": "The globally unique identifier for the section.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.task",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to add to this section."
},
"description": "The task to add to this section.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The task to add to this section.",
"example": "123456"
},
"schema_required": false
},
{
"name": "data.insert_before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing task within this section before which the added task should be inserted. Cannot be provided together with insert_after."
},
"description": "An existing task within this section before which the added task should be inserted. Cannot be provided together with insert_after.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing task within this section before which the added task should be inserted. Cannot be provided together with insert_after.",
"example": "86420"
},
"schema_required": false
},
{
"name": "data.insert_after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An existing task within this section after which the added task should be inserted. Cannot be provided together with insert_before."
},
"description": "An existing task within this section after which the added task should be inserted. Cannot be provided together with insert_before.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "An existing task within this section after which the added task should be inserted. Cannot be provided together with insert_before.",
"example": "987654"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The task and optionally the insert location.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"task\": {\n \"description\": \"The task to add to this section.\",\n \"type\": \"string\",\n \"example\": \"123456\"\n },\n \"insert_before\": {\n \"description\": \"An existing task within this section before which the added task should be inserted. Cannot be provided together with insert_after.\",\n \"type\": \"string\",\n \"example\": \"86420\"\n },\n \"insert_after\": {\n \"description\": \"An existing task within this section after which the added task should be inserted. Cannot be provided together with insert_before.\",\n \"type\": \"string\",\n \"example\": \"987654\"\n }\n },\n \"required\": [\n \"task\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "insertSectionForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "move_section_in_project",
"description": {
"tagline": "Reorder sections within a project in Asana.",
"detailed": "Use this tool to move sections relative to each other within a single Asana project. Either 'before_section' or 'after_section' must be specified. This tool does not support moving sections between different projects."
},
"return_annotation": "Confirms section movement within a project.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_id",
"global_project_identifier"
],
"description": "Globally unique identifier for the project in Asana.",
"endpoint_argument_name": "project_gid"
},
{
"name": "section_to_reorder",
"alternative_names": [
"target_section_id",
"section_id_to_move"
],
"description": "Globally unique identifier for the section to move within the project.",
"endpoint_argument_name": "data.section"
},
{
"name": "insert_before_section_id",
"alternative_names": [
"position_before_section_id",
"precede_section_id"
],
"description": "Specify the section ID to place the given section immediately before it.",
"endpoint_argument_name": "data.before_section"
},
{
"name": "insert_after_section_id",
"alternative_names": [
"place_after_section_id",
"position_after_section_id"
],
"description": "The ID of the section after which the given section will be inserted. Specify to reorder sections within the same project.",
"endpoint_argument_name": "data.after_section"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"format_response_readably"
],
"description": "If true, enables pretty output with line breaks and indentation for readability. Use primarily for debugging, as it may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/projects/{project_gid}/sections/insert",
"tags": [
"Sections"
],
"summary": "Move or Insert sections",
"description": "Move sections relative to each other. One of\n`before_section` or `after_section` is required.\n\nSections cannot be moved between projects.\n\nReturns an empty data block.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.section",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The section to reorder."
},
"description": "The section to reorder.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The section to reorder.",
"example": "321654"
},
"schema_required": false
},
{
"name": "data.before_section",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Insert the given section immediately before the section specified by this parameter."
},
"description": "Insert the given section immediately before the section specified by this parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Insert the given section immediately before the section specified by this parameter.",
"example": "86420"
},
"schema_required": false
},
{
"name": "data.after_section",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Insert the given section immediately after the section specified by this parameter."
},
"description": "Insert the given section immediately after the section specified by this parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Insert the given section immediately after the section specified by this parameter.",
"example": "987654"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The section's move action.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"section\": {\n \"description\": \"The section to reorder.\",\n \"type\": \"string\",\n \"example\": \"321654\"\n },\n \"before_section\": {\n \"description\": \"Insert the given section immediately before the section specified by this parameter.\",\n \"type\": \"string\",\n \"example\": \"86420\"\n },\n \"after_section\": {\n \"description\": \"Insert the given section immediately after the section specified by this parameter.\",\n \"type\": \"string\",\n \"example\": \"987654\"\n }\n },\n \"required\": [\n \"section\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getStatus",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_status_update",
"description": {
"tagline": "Fetch the complete record for a specific status update.",
"detailed": "Use this tool to get detailed information about a specific status update by providing its unique identifier."
},
"return_annotation": "Detailed record of a single status update.",
"arguments": [
{
"name": "status_update_id",
"alternative_names": [
"status_gid",
"update_id"
],
"description": "Unique identifier for the status update to retrieve the complete record.",
"endpoint_argument_name": "status_update_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"select_additional_properties",
"expand_resource_fields"
],
"description": "A list of optional fields to include in the response. Provide the fields as a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"formatted_response"
],
"description": "Set to true for a readable, pretty format with indentation. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/status_updates/{status_update_gid}",
"tags": [
"Status updates"
],
"summary": "Get a status update",
"description": "Returns the complete record for a single status update.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"author",
"author.name",
"created_at",
"created_by",
"created_by.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_text",
"liked",
"likes",
"likes.user",
"likes.user.name",
"modified_at",
"num_hearts",
"num_likes",
"parent",
"parent.name",
"reaction_summary",
"reaction_summary.count",
"reaction_summary.emoji_base",
"reaction_summary.reacted",
"reaction_summary.variant",
"resource_subtype",
"status_type",
"text",
"title"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "status_update_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The status update to get."
},
"description": "The status update to get.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "deleteStatus",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_status_update",
"description": {
"tagline": "Delete a specific status update from Asana.",
"detailed": "Use this tool to remove a specific status update in Asana by providing the status update's unique ID. This is useful for managing project updates and maintaining current information. The tool confirms successful deletion."
},
"return_annotation": "Confirmation of status update deletion.",
"arguments": [
{
"name": "status_update_id",
"alternative_names": [
"status_update_identifier",
"update_id"
],
"description": "Unique ID of the status update to be deleted.",
"endpoint_argument_name": "status_update_gid"
},
{
"name": "pretty_output",
"alternative_names": [
"formatted_output",
"readable_output"
],
"description": "If true, the response is formatted for readability with line breaks and indentation. This increases response size and time, so use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/status_updates/{status_update_gid}",
"tags": [
"Status updates"
],
"summary": "Delete a status update",
"description": "Deletes a specific, existing status update.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "status_update_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The status update to get."
},
"description": "The status update to get.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getStatusesForObject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_status_updates_for_object",
"description": {
"tagline": "Retrieve status updates for a specified object in Asana.",
"detailed": "Use this tool to get the compact status update records for all updates related to a specific object in Asana. It is helpful for tracking changes or updates on any Asana object."
},
"return_annotation": "Compact status update records for the specified object.",
"arguments": [
{
"name": "object_gid",
"alternative_names": [
"object_identifier",
"object_id"
],
"description": "Globally unique identifier (GID) for the Asana object (project, portfolio, or goal) to fetch status updates from.",
"endpoint_argument_name": "parent"
},
{
"name": "results_per_page",
"alternative_names": [
"page_limit",
"objects_per_page"
],
"description": "Number of results to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"page_offset_token",
"next_page_offset"
],
"description": "Token to fetch the next page of results. Use an offset returned from a previous paginated request.",
"endpoint_argument_name": "offset"
},
{
"name": "created_since_time",
"alternative_names": [
"since_creation_time",
"after_creation_time"
],
"description": "Return statuses created after the specified time. Use ISO 8601 format.",
"endpoint_argument_name": "created_since"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_retrieve",
"extra_fields_to_include"
],
"description": "List the optional properties to include in the response. Provide as a comma-separated list of property names.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_format_output"
],
"description": "Enable pretty JSON output with line breaks and indentation for readability. Mainly used for debugging, as it increases response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/status_updates",
"tags": [
"Status updates"
],
"summary": "Get status updates from an object",
"description": "Returns the compact status update records for all updates on the object.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "parent",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for object to fetch statuses from. Must be a GID for a project, portfolio, or goal."
},
"description": "Globally unique identifier for object to fetch statuses from. Must be a GID for a project, portfolio, or goal.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "created_since",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return statuses that have been created since the given time."
},
"description": "Only return statuses that have been created since the given time.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"author",
"author.name",
"created_at",
"created_by",
"created_by.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_text",
"liked",
"likes",
"likes.user",
"likes.user.name",
"modified_at",
"num_hearts",
"num_likes",
"offset",
"parent",
"parent.name",
"path",
"reaction_summary",
"reaction_summary.count",
"reaction_summary.emoji_base",
"reaction_summary.reacted",
"reaction_summary.variant",
"resource_subtype",
"status_type",
"text",
"title",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createStatusForObject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_status_update",
"description": {
"tagline": "Create a new status update on an object in Asana.",
"detailed": "Use this tool to add a status update to an object in Asana, such as a project. It returns the full record of the newly created status update, providing insight into the update's details and context."
},
"return_annotation": "Details of the newly created status update.",
"arguments": [
{
"name": "status_update_content",
"alternative_names": [
"status_update_data",
"status_update_payload"
],
"description": "The content of the status update to create, provided as a JSON object.",
"endpoint_argument_name": "requestBody"
},
{
"name": "results_per_page",
"alternative_names": [
"per_page_limit",
"page_result_count"
],
"description": "Number of status updates to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"page_offset",
"next_page_token"
],
"description": "Token to fetch the next page of results. Received from a previous API response for pagination. If omitted, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"opt_fields_inclusion",
"include_fields"
],
"description": "List of properties to include. Provide as an array of strings to include optional properties in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"format_pretty"
],
"description": "Set to true to receive the response in a readable, indented format. Use for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/status_updates",
"tags": [
"Status updates"
],
"summary": "Create a status update",
"description": "Creates a new status update on an object.\nReturns the full record of the newly created status update.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"author",
"author.name",
"created_at",
"created_by",
"created_by.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_text",
"liked",
"likes",
"likes.user",
"likes.user.name",
"modified_at",
"num_hearts",
"num_likes",
"parent",
"parent.name",
"reaction_summary",
"reaction_summary.count",
"reaction_summary.emoji_base",
"reaction_summary.reacted",
"reaction_summary.variant",
"resource_subtype",
"status_type",
"text",
"title"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The status update to create."
},
"description": "The status update to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "status_update"
},
"title": {
"type": "string",
"description": "The title of the status update.",
"example": "Status Update - Jun 15"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe `resource_subtype`s for `status` objects represent the type of their parent.",
"enum": [
"project_status_update",
"portfolio_status_update",
"goal_status_update"
],
"example": "project_status_update"
}
}
},
{
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The text content of the status update.",
"example": "The project is moving forward according to plan..."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.",
"example": "<body>The project <strong>is</strong> moving forward according to plan...</body>"
},
"status_type": {
"type": "string",
"description": "The type associated with the status update. This represents the current state of the object this object is on.",
"enum": [
"on_track",
"at_risk",
"off_track",
"on_hold",
"complete",
"achieved",
"partial",
"missed",
"dropped"
]
}
},
"required": [
"text",
"status_type"
]
}
]
},
{
"type": "object",
"properties": {
"parent": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "string",
"description": "The id of parent to send this status update to. This can be a project, goal or portfolio."
}
]
}
},
"required": [
"parent"
]
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The status update to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *status update* is an update on the progress of a particular project, portfolio, or goal, and is sent out to all of its parent's followers when created. These updates include both text describing the update and a `status_type` intended to represent the overall state of the project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"status_update\",\n \"x-insert-after\": \"gid\"\n },\n \"title\": {\n \"description\": \"The title of the status update.\",\n \"type\": \"string\",\n \"example\": \"Status Update - Jun 15\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe `resource_subtype`s for `status` objects represent the type of their parent.\",\n \"enum\": [\n \"project_status_update\",\n \"portfolio_status_update\",\n \"goal_status_update\"\n ],\n \"example\": \"project_status_update\",\n \"readOnly\": true\n }\n }\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"text\",\n \"status_type\"\n ],\n \"properties\": {\n \"text\": {\n \"description\": \"The text content of the status update.\",\n \"type\": \"string\",\n \"example\": \"The project is moving forward according to plan...\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The text content of the status update with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>The project <strong>is</strong> moving forward according to plan...</body>\"\n },\n \"status_type\": {\n \"description\": \"The type associated with the status update. This represents the current state of the object this object is on.\",\n \"type\": \"string\",\n \"enum\": [\n \"on_track\",\n \"at_risk\",\n \"off_track\",\n \"on_hold\",\n \"complete\",\n \"achieved\",\n \"partial\",\n \"missed\",\n \"dropped\"\n ]\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"required\": [\n \"parent\"\n ],\n \"properties\": {\n \"parent\": {\n \"allOf\": [\n {\n \"type\": \"string\",\n \"description\": \"The id of parent to send this status update to. This can be a project, goal or portfolio.\"\n }\n ]\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getStory",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_story",
"description": {
"tagline": "Fetch the full record of a specific Asana story.",
"detailed": "Use this tool to retrieve detailed information about a specific story in Asana. It requires the 'stories:read' scope, and optionally reads 'attachments:read' for previews and attachments."
},
"return_annotation": "Full record of a single Asana story.",
"arguments": [
{
"name": "story_identifier",
"alternative_names": [
"story_gid_parameter",
"story_global_id"
],
"description": "Globally unique identifier for the Asana story to be retrieved.",
"endpoint_argument_name": "story_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields",
"extra_attributes"
],
"description": "A list of optional properties to include in the story record, specified as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_json_output",
"formatted_response_output"
],
"description": "Set to true to format the response with line breaks and indentation for readability. Recommended only for debugging, as it increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/stories/{story_gid}",
"tags": [
"Stories"
],
"summary": "Get a story",
"description": "<b>Required scope: </b><code>stories:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>previews</code></td>\n <td><code>attachments:read</code></td>\n </tr>\n <tr>\n <td><code>attachments</code></td>\n <td><code>attachments:read</code></td>\n </tr>\n</table>\n\nReturns the full record for a single story.",
"requires_security": true,
"oauth_scopes": [
"stories:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_at",
"created_by",
"created_by.name",
"custom_field",
"custom_field.date_value",
"custom_field.date_value.date",
"custom_field.date_value.date_time",
"custom_field.display_value",
"custom_field.enabled",
"custom_field.enum_options",
"custom_field.enum_options.color",
"custom_field.enum_options.enabled",
"custom_field.enum_options.name",
"custom_field.enum_value",
"custom_field.enum_value.color",
"custom_field.enum_value.enabled",
"custom_field.enum_value.name",
"custom_field.id_prefix",
"custom_field.input_restrictions",
"custom_field.is_formula_field",
"custom_field.multi_enum_values",
"custom_field.multi_enum_values.color",
"custom_field.multi_enum_values.enabled",
"custom_field.multi_enum_values.name",
"custom_field.name",
"custom_field.number_value",
"custom_field.representation_type",
"custom_field.text_value",
"custom_field.type",
"dependency",
"dependency.created_by",
"dependency.name",
"dependency.resource_subtype",
"duplicate_of",
"duplicate_of.created_by",
"duplicate_of.name",
"duplicate_of.resource_subtype",
"duplicated_from",
"duplicated_from.created_by",
"duplicated_from.name",
"duplicated_from.resource_subtype",
"follower",
"follower.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_text",
"is_editable",
"is_edited",
"is_pinned",
"liked",
"likes",
"likes.user",
"likes.user.name",
"new_approval_status",
"new_date_value",
"new_dates",
"new_dates.due_at",
"new_dates.due_on",
"new_dates.start_on",
"new_enum_value",
"new_enum_value.color",
"new_enum_value.enabled",
"new_enum_value.name",
"new_multi_enum_values",
"new_multi_enum_values.color",
"new_multi_enum_values.enabled",
"new_multi_enum_values.name",
"new_name",
"new_number_value",
"new_people_value",
"new_people_value.name",
"new_resource_subtype",
"new_section",
"new_section.name",
"new_text_value",
"num_hearts",
"num_likes",
"old_approval_status",
"old_date_value",
"old_dates",
"old_dates.due_at",
"old_dates.due_on",
"old_dates.start_on",
"old_enum_value",
"old_enum_value.color",
"old_enum_value.enabled",
"old_enum_value.name",
"old_multi_enum_values",
"old_multi_enum_values.color",
"old_multi_enum_values.enabled",
"old_multi_enum_values.name",
"old_name",
"old_number_value",
"old_people_value",
"old_people_value.name",
"old_resource_subtype",
"old_section",
"old_section.name",
"old_text_value",
"previews",
"previews.fallback",
"previews.footer",
"previews.header",
"previews.header_link",
"previews.html_text",
"previews.text",
"previews.title",
"previews.title_link",
"project",
"project.name",
"reaction_summary",
"reaction_summary.count",
"reaction_summary.emoji_base",
"reaction_summary.reacted",
"reaction_summary.variant",
"resource_subtype",
"source",
"sticker_name",
"story",
"story.created_at",
"story.created_by",
"story.created_by.name",
"story.resource_subtype",
"story.text",
"tag",
"tag.name",
"target",
"target.created_by",
"target.name",
"target.resource_subtype",
"task",
"task.created_by",
"task.name",
"task.resource_subtype",
"text",
"type"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "story_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the story."
},
"description": "Globally unique identifier for the story.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateStory",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_asana_story",
"description": {
"tagline": "Update an Asana story's details.",
"detailed": "Use this tool to update the text of a comment story or pin/unpin comment and attachment stories in Asana. Only one of `text` or `html_text` can be updated at a time. Requires 'stories:write' permission."
},
"return_annotation": "Returns the updated Asana story record.",
"arguments": [
{
"name": "story_global_id",
"alternative_names": [
"story_id_global",
"global_id_story"
],
"description": "Globally unique identifier for the Asana story to be updated.",
"endpoint_argument_name": "story_gid"
},
{
"name": "asana_comment_story_update_data",
"alternative_names": [
"story_update_data",
"comment_story_data"
],
"description": "JSON object containing details of the comment story to be updated, including `gid`, `resource_type`, and either `text` or `html_text`.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_extra_fields",
"select_optional_fields"
],
"description": "Comma-separated list of optional properties to include in the response. Defaults to excluding some properties.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"format_output_pretty"
],
"description": "Set to true for a readable, formatted response. Use for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/stories/{story_gid}",
"tags": [
"Stories"
],
"summary": "Update a story",
"description": "<b>Required scope: </b><code>stories:write</code>\n\nUpdates the story and returns the full record for the updated story. Only comment stories can have their text updated, and only comment stories and attachment stories can be pinned. Only one of `text` and `html_text` can be specified.",
"requires_security": true,
"oauth_scopes": [
"stories:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_at",
"created_by",
"created_by.name",
"custom_field",
"custom_field.date_value",
"custom_field.date_value.date",
"custom_field.date_value.date_time",
"custom_field.display_value",
"custom_field.enabled",
"custom_field.enum_options",
"custom_field.enum_options.color",
"custom_field.enum_options.enabled",
"custom_field.enum_options.name",
"custom_field.enum_value",
"custom_field.enum_value.color",
"custom_field.enum_value.enabled",
"custom_field.enum_value.name",
"custom_field.id_prefix",
"custom_field.input_restrictions",
"custom_field.is_formula_field",
"custom_field.multi_enum_values",
"custom_field.multi_enum_values.color",
"custom_field.multi_enum_values.enabled",
"custom_field.multi_enum_values.name",
"custom_field.name",
"custom_field.number_value",
"custom_field.representation_type",
"custom_field.text_value",
"custom_field.type",
"dependency",
"dependency.created_by",
"dependency.name",
"dependency.resource_subtype",
"duplicate_of",
"duplicate_of.created_by",
"duplicate_of.name",
"duplicate_of.resource_subtype",
"duplicated_from",
"duplicated_from.created_by",
"duplicated_from.name",
"duplicated_from.resource_subtype",
"follower",
"follower.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_text",
"is_editable",
"is_edited",
"is_pinned",
"liked",
"likes",
"likes.user",
"likes.user.name",
"new_approval_status",
"new_date_value",
"new_dates",
"new_dates.due_at",
"new_dates.due_on",
"new_dates.start_on",
"new_enum_value",
"new_enum_value.color",
"new_enum_value.enabled",
"new_enum_value.name",
"new_multi_enum_values",
"new_multi_enum_values.color",
"new_multi_enum_values.enabled",
"new_multi_enum_values.name",
"new_name",
"new_number_value",
"new_people_value",
"new_people_value.name",
"new_resource_subtype",
"new_section",
"new_section.name",
"new_text_value",
"num_hearts",
"num_likes",
"old_approval_status",
"old_date_value",
"old_dates",
"old_dates.due_at",
"old_dates.due_on",
"old_dates.start_on",
"old_enum_value",
"old_enum_value.color",
"old_enum_value.enabled",
"old_enum_value.name",
"old_multi_enum_values",
"old_multi_enum_values.color",
"old_multi_enum_values.enabled",
"old_multi_enum_values.name",
"old_name",
"old_number_value",
"old_people_value",
"old_people_value.name",
"old_resource_subtype",
"old_section",
"old_section.name",
"old_text_value",
"previews",
"previews.fallback",
"previews.footer",
"previews.header",
"previews.header_link",
"previews.html_text",
"previews.text",
"previews.title",
"previews.title_link",
"project",
"project.name",
"reaction_summary",
"reaction_summary.count",
"reaction_summary.emoji_base",
"reaction_summary.reacted",
"reaction_summary.variant",
"resource_subtype",
"source",
"sticker_name",
"story",
"story.created_at",
"story.created_by",
"story.created_by.name",
"story.resource_subtype",
"story.text",
"tag",
"tag.name",
"target",
"target.created_by",
"target.name",
"target.resource_subtype",
"task",
"task.created_by",
"task.name",
"task.resource_subtype",
"text",
"type"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "story_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the story."
},
"description": "Globally unique identifier for the story.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"gid": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the resource, as a string."
},
"resource_type": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The base type of this resource."
},
"created_at": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The time at which this resource was created."
},
"resource_subtype": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning."
},
"text": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The plain text of the comment to add. Cannot be used with html_text."
},
"html_text": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "[Opt In](/docs/inputoutput-options). HTML formatted text for a comment. This will not include the name of the creator."
},
"is_pinned": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Conditional*. Whether the story should be pinned on the resource."
},
"sticker_name": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"green_checkmark",
"people_dancing",
"dancing_unicorn",
"heart",
"party_popper",
"people_waving_flags",
"splashing_narwhal",
"trophy",
"yeti_riding_unicorn",
"celebrating_people",
"determined_climbers",
"phoenix_spreading_love"
],
"properties": null,
"inner_properties": null,
"description": "The name of the sticker in this story. `null` if there is no sticker."
}
},
"inner_properties": null,
"description": "A story represents an activity associated with an object in the Asana system."
}
},
"inner_properties": null,
"description": "The comment story to update."
},
"description": "The comment story to update.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "A story represents an activity associated with an object in the Asana system.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "story"
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.",
"example": "comment_added"
},
"text": {
"type": "string",
"description": "The plain text of the comment to add. Cannot be used with html_text.",
"example": "This is a comment."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). HTML formatted text for a comment. This will not include the name of the creator.",
"example": "<body>This is a comment.</body>"
},
"is_pinned": {
"type": "boolean",
"description": "*Conditional*. Whether the story should be pinned on the resource.",
"example": false
},
"sticker_name": {
"type": "string",
"description": "The name of the sticker in this story. `null` if there is no sticker.",
"enum": [
"green_checkmark",
"people_dancing",
"dancing_unicorn",
"heart",
"party_popper",
"people_waving_flags",
"splashing_narwhal",
"trophy",
"yeti_riding_unicorn",
"celebrating_people",
"determined_climbers",
"phoenix_spreading_love"
],
"example": "dancing_unicorn"
}
}
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The comment story to update.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A story represents an activity associated with an object in the Asana system.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"story\",\n \"x-insert-after\": \"gid\"\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"resource_subtype\": {\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"comment_added\"\n },\n \"text\": {\n \"description\": \"The plain text of the comment to add. Cannot be used with html_text.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). HTML formatted text for a comment. This will not include the name of the creator.\",\n \"type\": \"string\",\n \"example\": \"<body>This is a comment.</body>\"\n },\n \"is_pinned\": {\n \"description\": \"*Conditional*. Whether the story should be pinned on the resource.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"sticker_name\": {\n \"description\": \"The name of the sticker in this story. `null` if there is no sticker.\",\n \"type\": \"string\",\n \"enum\": [\n \"green_checkmark\",\n \"people_dancing\",\n \"dancing_unicorn\",\n \"heart\",\n \"party_popper\",\n \"people_waving_flags\",\n \"splashing_narwhal\",\n \"trophy\",\n \"yeti_riding_unicorn\",\n \"celebrating_people\",\n \"determined_climbers\",\n \"phoenix_spreading_love\"\n ],\n \"example\": \"dancing_unicorn\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteStory",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_story",
"description": {
"tagline": "Delete a story you've created on Asana.",
"detailed": "This tool deletes a story on Asana if the story was created by the user. It should be called when a user wants to remove their own stories for tasks or projects in Asana."
},
"return_annotation": "Confirms deletion of a user-created story.",
"arguments": [
{
"name": "story_unique_id",
"alternative_names": [
"story_id",
"story_global_id"
],
"description": "Globally unique identifier for the story to be deleted.",
"endpoint_argument_name": "story_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"formatted_output",
"pretty_response"
],
"description": "Enable this for a readable, formatted response. Useful for debugging, but increases response time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/stories/{story_gid}",
"tags": [
"Stories"
],
"summary": "Delete a story",
"description": "Deletes a story. A user can only delete stories they have created.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "story_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the story."
},
"description": "Globally unique identifier for the story.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getStoriesForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_task_stories",
"description": {
"tagline": "Retrieve all stories for a specified Asana task.",
"detailed": "This tool fetches all compact records for stories associated with a specific task in Asana, requiring the 'stories:read' scope."
},
"return_annotation": "Compact records for all stories on a task.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_id",
"task_global_id"
],
"description": "The unique identifier for the task to retrieve stories from.",
"endpoint_argument_name": "task_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"per_page_limit"
],
"description": "Specify the number of stories to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"page_offset",
"result_offset"
],
"description": "An offset token for paginating through results. Use a token returned from a previous API call to access subsequent pages. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "List of optional resource properties to include, specified as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to true for a readable, pretty format with line breaks and indentation. Useful for debugging. This will increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}/stories",
"tags": [
"Stories"
],
"summary": "Get stories from a task",
"description": "<b>Required scope: </b><code>stories:read</code>\n\nReturns the compact records for all stories on the task.",
"requires_security": true,
"oauth_scopes": [
"stories:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_at",
"created_by",
"created_by.name",
"custom_field",
"custom_field.date_value",
"custom_field.date_value.date",
"custom_field.date_value.date_time",
"custom_field.display_value",
"custom_field.enabled",
"custom_field.enum_options",
"custom_field.enum_options.color",
"custom_field.enum_options.enabled",
"custom_field.enum_options.name",
"custom_field.enum_value",
"custom_field.enum_value.color",
"custom_field.enum_value.enabled",
"custom_field.enum_value.name",
"custom_field.id_prefix",
"custom_field.input_restrictions",
"custom_field.is_formula_field",
"custom_field.multi_enum_values",
"custom_field.multi_enum_values.color",
"custom_field.multi_enum_values.enabled",
"custom_field.multi_enum_values.name",
"custom_field.name",
"custom_field.number_value",
"custom_field.representation_type",
"custom_field.text_value",
"custom_field.type",
"dependency",
"dependency.created_by",
"dependency.name",
"dependency.resource_subtype",
"duplicate_of",
"duplicate_of.created_by",
"duplicate_of.name",
"duplicate_of.resource_subtype",
"duplicated_from",
"duplicated_from.created_by",
"duplicated_from.name",
"duplicated_from.resource_subtype",
"follower",
"follower.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_text",
"is_editable",
"is_edited",
"is_pinned",
"liked",
"likes",
"likes.user",
"likes.user.name",
"new_approval_status",
"new_date_value",
"new_dates",
"new_dates.due_at",
"new_dates.due_on",
"new_dates.start_on",
"new_enum_value",
"new_enum_value.color",
"new_enum_value.enabled",
"new_enum_value.name",
"new_multi_enum_values",
"new_multi_enum_values.color",
"new_multi_enum_values.enabled",
"new_multi_enum_values.name",
"new_name",
"new_number_value",
"new_people_value",
"new_people_value.name",
"new_resource_subtype",
"new_section",
"new_section.name",
"new_text_value",
"num_hearts",
"num_likes",
"offset",
"old_approval_status",
"old_date_value",
"old_dates",
"old_dates.due_at",
"old_dates.due_on",
"old_dates.start_on",
"old_enum_value",
"old_enum_value.color",
"old_enum_value.enabled",
"old_enum_value.name",
"old_multi_enum_values",
"old_multi_enum_values.color",
"old_multi_enum_values.enabled",
"old_multi_enum_values.name",
"old_name",
"old_number_value",
"old_people_value",
"old_people_value.name",
"old_resource_subtype",
"old_section",
"old_section.name",
"old_text_value",
"path",
"previews",
"previews.fallback",
"previews.footer",
"previews.header",
"previews.header_link",
"previews.html_text",
"previews.text",
"previews.title",
"previews.title_link",
"project",
"project.name",
"reaction_summary",
"reaction_summary.count",
"reaction_summary.emoji_base",
"reaction_summary.reacted",
"reaction_summary.variant",
"resource_subtype",
"source",
"sticker_name",
"story",
"story.created_at",
"story.created_by",
"story.created_by.name",
"story.resource_subtype",
"story.text",
"tag",
"tag.name",
"target",
"target.created_by",
"target.name",
"target.resource_subtype",
"task",
"task.created_by",
"task.name",
"task.resource_subtype",
"text",
"type",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createStoryForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_task_comment",
"description": {
"tagline": "Add a comment to a specific task in Asana.",
"detailed": "This tool adds a comment to a task in Asana, authored by the authenticated user, and returns the full record of the newly created comment."
},
"return_annotation": "The full record of the new story added to the task.",
"arguments": [
{
"name": "target_task_id",
"alternative_names": [
"task_identifier",
"operation_task_id"
],
"description": "The ID of the task to which the comment will be added. It is required to specify the task you want to operate on.",
"endpoint_argument_name": "task_gid"
},
{
"name": "story_details",
"alternative_names": [
"comment_details",
"story_data"
],
"description": "JSON object containing the story to be created, including text, optional HTML formatted text, and other attributes.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"fields_to_include"
],
"description": "Comma-separated list of optional properties to include in the response, as the endpoint excludes some by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"formatted_response"
],
"description": "Formats the response for readability with line breaks and indentation when true. Recommended for debugging due to extra processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/stories",
"tags": [
"Stories"
],
"summary": "Create a story on a task",
"description": "<b>Required scope: </b><code>stories:write</code>\n\nAdds a story to a task. This endpoint currently only allows for comment\nstories to be created. The comment will be authored by the currently\nauthenticated user, and timestamped when the server receives the request.\n\nReturns the full record for the new story added to the task.",
"requires_security": true,
"oauth_scopes": [
"stories:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"assignee",
"assignee.name",
"created_at",
"created_by",
"created_by.name",
"custom_field",
"custom_field.date_value",
"custom_field.date_value.date",
"custom_field.date_value.date_time",
"custom_field.display_value",
"custom_field.enabled",
"custom_field.enum_options",
"custom_field.enum_options.color",
"custom_field.enum_options.enabled",
"custom_field.enum_options.name",
"custom_field.enum_value",
"custom_field.enum_value.color",
"custom_field.enum_value.enabled",
"custom_field.enum_value.name",
"custom_field.id_prefix",
"custom_field.input_restrictions",
"custom_field.is_formula_field",
"custom_field.multi_enum_values",
"custom_field.multi_enum_values.color",
"custom_field.multi_enum_values.enabled",
"custom_field.multi_enum_values.name",
"custom_field.name",
"custom_field.number_value",
"custom_field.representation_type",
"custom_field.text_value",
"custom_field.type",
"dependency",
"dependency.created_by",
"dependency.name",
"dependency.resource_subtype",
"duplicate_of",
"duplicate_of.created_by",
"duplicate_of.name",
"duplicate_of.resource_subtype",
"duplicated_from",
"duplicated_from.created_by",
"duplicated_from.name",
"duplicated_from.resource_subtype",
"follower",
"follower.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_text",
"is_editable",
"is_edited",
"is_pinned",
"liked",
"likes",
"likes.user",
"likes.user.name",
"new_approval_status",
"new_date_value",
"new_dates",
"new_dates.due_at",
"new_dates.due_on",
"new_dates.start_on",
"new_enum_value",
"new_enum_value.color",
"new_enum_value.enabled",
"new_enum_value.name",
"new_multi_enum_values",
"new_multi_enum_values.color",
"new_multi_enum_values.enabled",
"new_multi_enum_values.name",
"new_name",
"new_number_value",
"new_people_value",
"new_people_value.name",
"new_resource_subtype",
"new_section",
"new_section.name",
"new_text_value",
"num_hearts",
"num_likes",
"old_approval_status",
"old_date_value",
"old_dates",
"old_dates.due_at",
"old_dates.due_on",
"old_dates.start_on",
"old_enum_value",
"old_enum_value.color",
"old_enum_value.enabled",
"old_enum_value.name",
"old_multi_enum_values",
"old_multi_enum_values.color",
"old_multi_enum_values.enabled",
"old_multi_enum_values.name",
"old_name",
"old_number_value",
"old_people_value",
"old_people_value.name",
"old_resource_subtype",
"old_section",
"old_section.name",
"old_text_value",
"previews",
"previews.fallback",
"previews.footer",
"previews.header",
"previews.header_link",
"previews.html_text",
"previews.text",
"previews.title",
"previews.title_link",
"project",
"project.name",
"reaction_summary",
"reaction_summary.count",
"reaction_summary.emoji_base",
"reaction_summary.reacted",
"reaction_summary.variant",
"resource_subtype",
"source",
"sticker_name",
"story",
"story.created_at",
"story.created_by",
"story.created_by.name",
"story.resource_subtype",
"story.text",
"tag",
"tag.name",
"target",
"target.created_by",
"target.name",
"target.resource_subtype",
"task",
"task.created_by",
"task.name",
"task.resource_subtype",
"text",
"type"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"gid": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the resource, as a string."
},
"resource_type": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The base type of this resource."
},
"created_at": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The time at which this resource was created."
},
"resource_subtype": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning."
},
"text": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The plain text of the comment to add. Cannot be used with html_text."
},
"html_text": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "[Opt In](/docs/inputoutput-options). HTML formatted text for a comment. This will not include the name of the creator."
},
"is_pinned": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Conditional*. Whether the story should be pinned on the resource."
},
"sticker_name": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"green_checkmark",
"people_dancing",
"dancing_unicorn",
"heart",
"party_popper",
"people_waving_flags",
"splashing_narwhal",
"trophy",
"yeti_riding_unicorn",
"celebrating_people",
"determined_climbers",
"phoenix_spreading_love"
],
"properties": null,
"inner_properties": null,
"description": "The name of the sticker in this story. `null` if there is no sticker."
}
},
"inner_properties": null,
"description": "A story represents an activity associated with an object in the Asana system."
}
},
"inner_properties": null,
"description": "The story to create."
},
"description": "The story to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"description": "A story represents an activity associated with an object in the Asana system.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "story"
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.",
"example": "comment_added"
},
"text": {
"type": "string",
"description": "The plain text of the comment to add. Cannot be used with html_text.",
"example": "This is a comment."
},
"html_text": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). HTML formatted text for a comment. This will not include the name of the creator.",
"example": "<body>This is a comment.</body>"
},
"is_pinned": {
"type": "boolean",
"description": "*Conditional*. Whether the story should be pinned on the resource.",
"example": false
},
"sticker_name": {
"type": "string",
"description": "The name of the sticker in this story. `null` if there is no sticker.",
"enum": [
"green_checkmark",
"people_dancing",
"dancing_unicorn",
"heart",
"party_popper",
"people_waving_flags",
"splashing_narwhal",
"trophy",
"yeti_riding_unicorn",
"celebrating_people",
"determined_climbers",
"phoenix_spreading_love"
],
"example": "dancing_unicorn"
}
}
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The story to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A story represents an activity associated with an object in the Asana system.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"story\",\n \"x-insert-after\": \"gid\"\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"resource_subtype\": {\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"comment_added\"\n },\n \"text\": {\n \"description\": \"The plain text of the comment to add. Cannot be used with html_text.\",\n \"type\": \"string\",\n \"example\": \"This is a comment.\"\n },\n \"html_text\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). HTML formatted text for a comment. This will not include the name of the creator.\",\n \"type\": \"string\",\n \"example\": \"<body>This is a comment.</body>\"\n },\n \"is_pinned\": {\n \"description\": \"*Conditional*. Whether the story should be pinned on the resource.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"sticker_name\": {\n \"description\": \"The name of the sticker in this story. `null` if there is no sticker.\",\n \"type\": \"string\",\n \"enum\": [\n \"green_checkmark\",\n \"people_dancing\",\n \"dancing_unicorn\",\n \"heart\",\n \"party_popper\",\n \"people_waving_flags\",\n \"splashing_narwhal\",\n \"trophy\",\n \"yeti_riding_unicorn\",\n \"celebrating_people\",\n \"determined_climbers\",\n \"phoenix_spreading_love\"\n ],\n \"example\": \"dancing_unicorn\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getTags",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_filtered_tags",
"description": {
"tagline": "Retrieve compact tag records with optional filters.",
"detailed": "Call this tool to get a list of compact tag records from Asana based on specific filter parameters. Requires 'tags:read' scope."
},
"return_annotation": "List of compact tag records based on filters.",
"arguments": [
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"tags_page_limit"
],
"description": "Specifies how many tag records to return per page. Must be an integer between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"page_offset",
"next_page_token"
],
"description": "Offset token for pagination. Use the offset from the previous response to get the next page. If not provided, returns the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "workspace_for_filtering",
"alternative_names": [
"workspace_identifier",
"workspace_id"
],
"description": "The workspace ID used to filter tags in the request.",
"endpoint_argument_name": "workspace"
},
{
"name": "include_optional_properties",
"alternative_names": [
"with_extra_fields",
"additional_properties"
],
"description": "A list of properties to include in the response, specified as strings. Use to retrieve fields not returned by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to 'true' for pretty JSON output with line breaks and indentation. Use for readability during debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tags",
"tags": [
"Tags"
],
"summary": "Get multiple tags",
"description": "<b>Required scope: </b><code>tags:read</code>\n\nReturns the compact tag records for some filtered set of tags. Use one or more of the parameters provided to filter the tags returned.",
"requires_security": true,
"oauth_scopes": [
"tags:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace to filter tags on."
},
"description": "The workspace to filter tags on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"created_at",
"followers",
"followers.name",
"name",
"notes",
"offset",
"path",
"permalink_url",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createTag",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_new_asana_tag",
"description": {
"tagline": "Create a new tag in an Asana workspace or organization.",
"detailed": "This tool should be called when there's a need to create a new tag within a specific Asana workspace or organization. It requires the 'tags:write' scope and returns the full record of the newly created tag."
},
"return_annotation": "Details of the newly created tag in Asana.",
"arguments": [
{
"name": "tag_details_json",
"alternative_names": [
"tag_creation_details",
"new_tag_data"
],
"description": "JSON object containing the details of the tag to be created in Asana, including necessary fields like name, workspace, or organization.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"extra_attributes"
],
"description": "Specify optional properties to include in the response as a list of strings. These properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"enable_pretty_format",
"use_pretty_output"
],
"description": "Set to true for a well-indented, readable response format. Recommend use only for debugging due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tags",
"tags": [
"Tags"
],
"summary": "Create a tag",
"description": "<b>Required scope: </b><code>tags:write</code>\n\nCreates a new tag in a workspace or organization.\n\nEvery tag is required to be created in a specific workspace or\norganization, and this cannot be changed once set. Note that you can use\nthe workspace parameter regardless of whether or not it is an\norganization.\n\nReturns the full record of the newly created tag.",
"requires_security": true,
"oauth_scopes": [
"tags:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"created_at",
"followers",
"followers.name",
"name",
"notes",
"permalink_url",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The tag to create."
},
"description": "The tag to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *tag* is a label that can be attached to any task in Asana. It exists in a single workspace or organization.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "tag"
},
"name": {
"type": "string",
"description": "Name of the tag. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"properties": {
"color": {
"type": "string",
"description": "Color of the tag.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray",
null
],
"example": "light-green"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the tag (i.e. its description).",
"example": "Mittens really likes the stuff from Humboldt."
}
}
}
]
},
{
"type": "object",
"properties": {
"followers": {
"type": "array",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"items": {
"type": "string"
}
},
"workspace": {
"type": "string",
"description": "Gid of an object.",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The tag to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *tag* is a label that can be attached to any task in Asana. It exists in a single workspace or organization.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"tag\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the tag. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"color\": {\n \"type\": \"string\",\n \"description\": \"Color of the tag.\",\n \"nullable\": true,\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\",\n null\n ],\n \"example\": \"light-green\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the tag (i.e. its description).\",\n \"type\": \"string\",\n \"example\": \"Mittens really likes the stuff from Humboldt.\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"followers\": {\n \"type\": \"array\",\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"12345\",\n \"42563\"\n ]\n },\n \"workspace\": {\n \"type\": \"string\",\n \"x-env-variable\": true,\n \"description\": \"Gid of an object.\",\n \"example\": \"12345\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getTag",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_tag_details",
"description": {
"tagline": "Retrieve complete details for a specific Asana tag.",
"detailed": "Fetches the full tag record for a provided tag ID in Asana. Useful for obtaining information about a specific tag to understand its properties and associated tasks."
},
"return_annotation": "Details of a specific Asana tag.",
"arguments": [
{
"name": "tag_global_identifier",
"alternative_names": [
"tag_gid_identifier",
"asana_tag_id"
],
"description": "Globally unique identifier for the tag in Asana used to fetch the complete tag details.",
"endpoint_argument_name": "tag_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_tag_properties",
"extra_tag_fields"
],
"description": "Comma-separated list of additional tag properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"pretty_print_output"
],
"description": "Enable to format the response in a readable, pretty format. Increases response size and time; useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tags/{tag_gid}",
"tags": [
"Tags"
],
"summary": "Get a tag",
"description": "<b>Required scope: </b><code>tags:read</code>\n\nReturns the complete tag record for a single tag.",
"requires_security": true,
"oauth_scopes": [
"tags:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"created_at",
"followers",
"followers.name",
"name",
"notes",
"permalink_url",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "tag_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the tag."
},
"description": "Globally unique identifier for the tag.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateTag",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_asana_tag",
"description": {
"tagline": "Update properties of an Asana tag.",
"detailed": "Updates specific properties of an Asana tag using the provided tag ID. Specify only the fields you wish to change to avoid overwriting other users' changes. Returns the complete updated tag record."
},
"return_annotation": "Updated tag record from Asana.",
"arguments": [
{
"name": "tag_global_identifier",
"alternative_names": [
"tag_unique_id",
"tag_gid_identifier"
],
"description": "Globally unique identifier for the tag to update in Asana.",
"endpoint_argument_name": "tag_gid"
},
{
"name": "tag_update_data",
"alternative_names": [
"tag_update_payload",
"tag_modification_details"
],
"description": "JSON object specifying the fields of the tag to update. Include only the fields you wish to change.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_fields",
"alternative_names": [
"include_fields",
"optional_fields_to_include"
],
"description": "List of optional properties to include with the tag resource. Provide as an array of property names.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_json_response",
"formatted_output"
],
"description": "Set to true to receive the response in a readable format with proper indentation and line breaks. This is advised only for debugging as it increases response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/tags/{tag_gid}",
"tags": [
"Tags"
],
"summary": "Update a tag",
"description": "<b>Required scope: </b><code>tags:write</code>\n\nUpdates the properties of a tag. Only the fields provided in the `data`\nblock will be updated; any unspecified fields will remain unchanged.\n\nWhen using this method, it is best to specify only those fields you wish\nto change, or else you may overwrite changes made by another user since\nyou last retrieved the tag.\n\nReturns the complete updated tag record.",
"requires_security": true,
"oauth_scopes": [
"tags:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"created_at",
"followers",
"followers.name",
"name",
"notes",
"permalink_url",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "tag_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the tag."
},
"description": "Globally unique identifier for the tag.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The tag to update."
},
"description": "The tag to update.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *tag* is a label that can be attached to any task in Asana. It exists in a single workspace or organization.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "tag"
},
"name": {
"type": "string",
"description": "Name of the tag. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"properties": {
"color": {
"type": "string",
"description": "Color of the tag.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray",
null
],
"example": "light-green"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the tag (i.e. its description).",
"example": "Mittens really likes the stuff from Humboldt."
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The tag to update.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"description\": \"A *tag* is a label that can be attached to any task in Asana. It exists in a single workspace or organization.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"tag\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the tag. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"color\": {\n \"type\": \"string\",\n \"description\": \"Color of the tag.\",\n \"nullable\": true,\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\",\n null\n ],\n \"example\": \"light-green\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the tag (i.e. its description).\",\n \"type\": \"string\",\n \"example\": \"Mittens really likes the stuff from Humboldt.\"\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteTag",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_tag",
"description": {
"tagline": "Delete a specific tag in Asana with its unique ID.",
"detailed": "Use this tool to delete an existing tag in Asana by providing its unique global ID (tag_gid). This operation is permanent and should be used when a tag is no longer needed."
},
"return_annotation": "Confirmation of tag deletion.",
"arguments": [
{
"name": "tag_unique_identifier",
"alternative_names": [
"tag_id",
"tag_identifier"
],
"description": "The globally unique identifier for the Asana tag to be deleted.",
"endpoint_argument_name": "tag_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_response_pretty",
"pretty_print_response"
],
"description": "Set to true for formatted JSON output with line breaks and indentation. Use mainly for debugging as it increases response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/tags/{tag_gid}",
"tags": [
"Tags"
],
"summary": "Delete a tag",
"description": "A specific, existing tag can be deleted by making a DELETE request on\nthe URL for that tag.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "tag_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the tag."
},
"description": "Globally unique identifier for the tag.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTagsForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_tags_for_task",
"description": {
"tagline": "Retrieve all tags for a given task.",
"detailed": "Use this tool to get a list of tags linked to a specific task in Asana. It requires the 'tags:read' scope to access the data."
},
"return_annotation": "Compact list of tags associated with a specific task.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_id",
"task_reference"
],
"description": "The unique identifier of the task to retrieve tags for in Asana.",
"endpoint_argument_name": "task_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_per_page"
],
"description": "Number of objects to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"page_offset_token",
"next_page_offset"
],
"description": "An offset token for paginating results. Use the token from a previous response to access subsequent pages.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"select_optional_properties",
"add_optional_fields"
],
"description": "List of optional properties to include in the response as comma-separated values.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to true to receive the response in a formatted, readable form. Useful for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}/tags",
"tags": [
"Tags"
],
"summary": "Get a task's tags",
"description": "<b>Required scope: </b><code>tags:read</code>\n\nGet a compact representation of all of the tags the task has.",
"requires_security": true,
"oauth_scopes": [
"tags:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"created_at",
"followers",
"followers.name",
"name",
"notes",
"offset",
"path",
"permalink_url",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTagsForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "retrieve_workspace_tags",
"description": {
"tagline": "Retrieve tags for a specific workspace in Asana.",
"detailed": "Use this tool to get compact tag records for a specified workspace in Asana. The tags can be filtered using various parameters."
},
"return_annotation": "Compact tag records for the workspace.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_id",
"org_id"
],
"description": "Globally unique identifier for the Asana workspace or organization.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_limit",
"max_objects_per_page"
],
"description": "Specify the number of tag records to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "offset_token",
"alternative_names": [
"pagination_offset",
"next_page_offset"
],
"description": "The offset token to retrieve the next page of results. Use a token from a previous response for pagination.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"extra_properties"
],
"description": "List of optional tag properties to include, specified as strings. These properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"pretty_response"
],
"description": "Enable pretty JSON output with proper line breaking and indentation intended for debugging. This may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/tags",
"tags": [
"Tags"
],
"summary": "Get tags in a workspace",
"description": "<b>Required scope: </b><code>tags:read</code>\n\nReturns the compact tag records for some filtered set of tags. Use one or more of the parameters provided to filter the tags returned.",
"requires_security": true,
"oauth_scopes": [
"tags:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"created_at",
"followers",
"followers.name",
"name",
"notes",
"offset",
"path",
"permalink_url",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createTagForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_workspace_tag",
"description": {
"tagline": "Create a new tag in a specific Asana workspace.",
"detailed": "This tool creates a new tag in a designated workspace or organization in Asana. The tag is permanently associated with the specified workspace. It returns the full details of the newly created tag. This is useful for organizing tasks with a new categorization."
},
"return_annotation": "Details of the newly created tag.",
"arguments": [
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"workspace_gid_code"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "tag_details",
"alternative_names": [
"tag_information",
"new_tag_data"
],
"description": "JSON object containing details of the tag to be created, including name and any other relevant attributes.",
"endpoint_argument_name": "requestBody"
},
{
"name": "included_optional_properties",
"alternative_names": [
"optional_fields",
"extra_properties"
],
"description": "List of optional properties to include in the response, specified as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"use_pretty_response_format"
],
"description": "Enable pretty JSON formatting for improved readability. Use mainly during debugging as it may increase response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/workspaces/{workspace_gid}/tags",
"tags": [
"Tags"
],
"summary": "Create a tag in a workspace",
"description": "<b>Required scope: </b><code>tags:write</code>\n\nCreates a new tag in a workspace or organization.\n\nEvery tag is required to be created in a specific workspace or\norganization, and this cannot be changed once set. Note that you can use\nthe workspace parameter regardless of whether or not it is an\norganization.\n\nReturns the full record of the newly created tag.",
"requires_security": true,
"oauth_scopes": [
"tags:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"color",
"created_at",
"followers",
"followers.name",
"name",
"notes",
"permalink_url",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The tag to create."
},
"description": "The tag to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *tag* is a label that can be attached to any task in Asana. It exists in a single workspace or organization.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "tag"
},
"name": {
"type": "string",
"description": "Name of the tag. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
{
"type": "object",
"properties": {
"color": {
"type": "string",
"description": "Color of the tag.",
"enum": [
"dark-pink",
"dark-green",
"dark-blue",
"dark-red",
"dark-teal",
"dark-brown",
"dark-orange",
"dark-purple",
"dark-warm-gray",
"light-pink",
"light-green",
"light-blue",
"light-red",
"light-teal",
"light-brown",
"light-orange",
"light-purple",
"light-warm-gray",
null
],
"example": "light-green"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the tag (i.e. its description).",
"example": "Mittens really likes the stuff from Humboldt."
}
}
}
]
},
{
"type": "object",
"properties": {
"followers": {
"type": "array",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"items": {
"type": "string"
}
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The tag to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"A *tag* is a label that can be attached to any task in Asana. It exists in a single workspace or organization.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"tag\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the tag. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"color\": {\n \"type\": \"string\",\n \"description\": \"Color of the tag.\",\n \"nullable\": true,\n \"enum\": [\n \"dark-pink\",\n \"dark-green\",\n \"dark-blue\",\n \"dark-red\",\n \"dark-teal\",\n \"dark-brown\",\n \"dark-orange\",\n \"dark-purple\",\n \"dark-warm-gray\",\n \"light-pink\",\n \"light-green\",\n \"light-blue\",\n \"light-red\",\n \"light-teal\",\n \"light-brown\",\n \"light-orange\",\n \"light-purple\",\n \"light-warm-gray\",\n null\n ],\n \"example\": \"light-green\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the tag (i.e. its description).\",\n \"type\": \"string\",\n \"example\": \"Mittens really likes the stuff from Humboldt.\"\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"followers\": {\n \"type\": \"array\",\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"12345\",\n \"42563\"\n ]\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getTaskTemplates",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_project_task_templates",
"description": {
"tagline": "Retrieve compact task template records for a specific project.",
"detailed": "Call this tool to obtain a list of compact task template records from Asana for a given project. This can be useful when you need to view or manage task templates associated with a particular project scope."
},
"return_annotation": "Compact records of task templates for a specified project.",
"arguments": [
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_per_page"
],
"description": "Number of task templates to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"page_offset_token"
],
"description": "Offset token for pagination, returned by the API. Use to request the next page of results.",
"endpoint_argument_name": "offset"
},
{
"name": "project_id",
"alternative_names": [
"project_identifier",
"project_reference"
],
"description": "The unique identifier for the project to filter task templates.",
"endpoint_argument_name": "project"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"include_fields",
"select_fields"
],
"description": "A list of property names to include in the response. Specify the properties you wish to see for the task templates.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable this to receive the response in a readable format with proper indentation. Useful for debugging, but increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/task_templates",
"tags": [
"Task templates"
],
"summary": "Get multiple task templates",
"description": "<b>Required scope: </b><code>task_templates:read</code>\n\nReturns the compact task template records for some filtered set of task templates. You must specify a `project`",
"requires_security": true,
"oauth_scopes": [
"task_templates:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "project",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The project to filter task templates on."
},
"description": "The project to filter task templates on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"created_by",
"name",
"project",
"template"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTaskTemplate",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_task_template",
"description": {
"tagline": "Retrieve the complete record of a specific task template in Asana.",
"detailed": "Use this tool to get detailed information about a task template from Asana by providing the task template's GID. Make sure your token has the 'task_templates:read' scope."
},
"return_annotation": "Complete task template record for a specified template.",
"arguments": [
{
"name": "task_template_unique_id",
"alternative_names": [
"template_gid",
"task_template_id"
],
"description": "Globally unique identifier for the task template to retrieve its complete record.",
"endpoint_argument_name": "task_template_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_fields",
"optional_properties"
],
"description": "Specify properties to include in the response. Provide as a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable pretty formatting for the output, making it more readable with line breaking and indentation. Use mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/task_templates/{task_template_gid}",
"tags": [
"Task templates"
],
"summary": "Get a task template",
"description": "<b>Required scope: </b><code>task_templates:read</code>\n\nReturns the complete task template record for a single task template.",
"requires_security": true,
"oauth_scopes": [
"task_templates:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"created_by",
"name",
"project",
"template"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_template_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the task template."
},
"description": "Globally unique identifier for the task template.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "deleteTaskTemplate",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_task_template",
"description": {
"tagline": "Delete a specific task template by its ID.",
"detailed": "Use this tool to delete an existing task template in Asana by providing its unique GID. It's useful for removing templates that are no longer needed."
},
"return_annotation": "Confirmation of deleted task template.",
"arguments": [
{
"name": "task_template_id",
"alternative_names": [
"template_gid",
"template_identifier"
],
"description": "Globally unique identifier for the task template to be deleted.",
"endpoint_argument_name": "task_template_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_response",
"formatted_output"
],
"description": "Set to True for a pretty, formatted JSON response. This is useful for debugging but may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/task_templates/{task_template_gid}",
"tags": [
"Task templates"
],
"summary": "Delete a task template",
"description": "A specific, existing task template can be deleted by making a DELETE request on the URL for that task template. Returns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_template_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the task template."
},
"description": "Globally unique identifier for the task template.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "instantiateTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_asana_task",
"description": {
"tagline": "Create and initiate an Asana task asynchronously.",
"detailed": "This tool creates a job to instantiate a task in Asana using a specified task template. It should be called when you want to initiate a task based on a template, resulting in the creation of an asynchronous job that returns the job details."
},
"return_annotation": "Details of the job handling the task instantiation.",
"arguments": [
{
"name": "task_template_id",
"alternative_names": [
"template_identifier",
"unique_template_id"
],
"description": "Globally unique identifier for the task template used to create the task.",
"endpoint_argument_name": "task_template_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties",
"properties_to_include"
],
"description": "List of optional properties to include in the task resource, comma-separated.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "task_name",
"alternative_names": [
"new_task_name",
"task_title"
],
"description": "The name of the new task to be created. If not provided, the task template name will be used by default.",
"endpoint_argument_name": "data.name"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_print_response"
],
"description": "Enable 'pretty' formatting of the response for better readability. Useful for debugging but may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/task_templates/{task_template_gid}/instantiateTask",
"tags": [
"Task templates"
],
"summary": "Instantiate a task from a task template",
"description": "Creates and returns a job that will asynchronously handle the task instantiation.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"new_graph_export",
"new_graph_export.completed_at",
"new_graph_export.created_at",
"new_graph_export.download_url",
"new_project",
"new_project.name",
"new_project_template",
"new_project_template.name",
"new_resource_export",
"new_resource_export.completed_at",
"new_resource_export.created_at",
"new_resource_export.download_url",
"new_task",
"new_task.created_by",
"new_task.name",
"new_task.resource_subtype",
"new_task_template",
"new_task_template.name",
"resource_subtype",
"status"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_template_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the task template."
},
"description": "Globally unique identifier for the task template.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The name of the new task. If not provided, the name of the task template will be used."
},
"description": "The name of the new task. If not provided, the name of the task template will be used.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The name of the new task. If not provided, the name of the task template will be used.",
"example": "New Task"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Describes the inputs used for instantiating a task - the task's name.\",\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the new task. If not provided, the name of the task template will be used.\",\n \"type\": \"string\",\n \"example\": \"New Task\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getTasks",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_filtered_tasks",
"description": {
"tagline": "Retrieve filtered task records from Asana.",
"detailed": "Use this tool to get compact task records based on specific filters like project, tag, assignee, or workspace. Ensure to specify a `project` or `tag` if `assignee` and `workspace` are not provided."
},
"return_annotation": "Compact task records for specified filters.",
"arguments": [
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"objects_per_page"
],
"description": "Defines the number of task records to return per page. The value must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_token",
"result_page_offset"
],
"description": "An offset token for pagination to retrieve the next page of results. Use a previously returned token to continue pagination.",
"endpoint_argument_name": "offset"
},
{
"name": "assignee_id",
"alternative_names": [
"task_assignee",
"filter_by_assignee"
],
"description": "The ID of the assignee to filter tasks on. If searching for unassigned tasks, use 'null'. Must be used with 'workspace'.",
"endpoint_argument_name": "assignee"
},
{
"name": "filter_by_project",
"alternative_names": [
"tasks_project_filter",
"project_task_filter"
],
"description": "Specify the project to filter tasks. Use a string identifier for the project.",
"endpoint_argument_name": "project"
},
{
"name": "section_filter",
"alternative_names": [
"task_section",
"section_filtering"
],
"description": "The section to filter tasks within a project in Asana. Specify a section name to narrow down the tasks.",
"endpoint_argument_name": "section"
},
{
"name": "filter_by_workspace",
"alternative_names": [
"workspace_filter",
"tasks_workspace_filter"
],
"description": "The workspace to filter tasks by. Must be used with 'filter_by_assignee'.",
"endpoint_argument_name": "workspace"
},
{
"name": "completed_since_date_time",
"alternative_names": [
"completion_filter_date",
"completed_filter_timestamp"
],
"description": "Tasks must be incomplete or completed since this date/time. Provide in ISO 8601 format (e.g., '2023-10-01T12:00:00Z').",
"endpoint_argument_name": "completed_since"
},
{
"name": "modified_since_time",
"alternative_names": [
"modified_since_date",
"modified_since_timestamp"
],
"description": "Return tasks modified since this time. Include changes in properties or associations. Format as string (e.g., 'YYYY-MM-DDTHH:MM:SSZ').",
"endpoint_argument_name": "modified_since"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_include",
"extra_fields"
],
"description": "Specify properties to include in the response by providing an array of property names. These properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"formatted_output"
],
"description": "If true, provides the response in a pretty-printed, readable format. Use primarily for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks",
"tags": [
"Tasks"
],
"summary": "Get multiple tasks",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the compact task records for some filtered set of tasks. Use one or more of the parameters provided to filter the tasks returned. You must specify a `project` or `tag` if you do not specify `assignee` and `workspace`.\n\nFor more complex task retrieval, use [workspaces/{workspace_gid}/tasks/search](/reference/searchtasksforworkspace).",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "assignee",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The assignee to filter tasks on. If searching for unassigned tasks, assignee.any = null can be specified.\n*Note: If you specify `assignee`, you must also specify the `workspace` to filter on.*"
},
"description": "The assignee to filter tasks on. If searching for unassigned tasks, assignee.any = null can be specified.\n*Note: If you specify `assignee`, you must also specify the `workspace` to filter on.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "project",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The project to filter tasks on."
},
"description": "The project to filter tasks on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "section",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The section to filter tasks on."
},
"description": "The section to filter tasks on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace to filter tasks on.\n*Note: If you specify `workspace`, you must also specify the `assignee` to filter on.*"
},
"description": "The workspace to filter tasks on.\n*Note: If you specify `workspace`, you must also specify the `assignee` to filter on.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "completed_since",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return tasks that are either incomplete or that have been completed since this time."
},
"description": "Only return tasks that are either incomplete or that have been completed since this time.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time",
"example": "2012-02-22T02:06:58.158Z"
},
"schema_required": false
},
{
"name": "modified_since",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return tasks that have been modified since the given time.\n\n*Note: A task is considered \u201cmodified\u201d if any of its properties\nchange, or associations between it and other objects are modified\n(e.g. a task being added to a project). A task is not considered\nmodified just because another object it is associated with (e.g. a\nsubtask) is modified. Actions that count as modifying the task\ninclude assigning, renaming, completing, and adding stories.*"
},
"description": "Only return tasks that have been modified since the given time.\n\n*Note: A task is considered \u201cmodified\u201d if any of its properties\nchange, or associations between it and other objects are modified\n(e.g. a task being added to a project). A task is not considered\nmodified just because another object it is associated with (e.g. a\nsubtask) is modified. Actions that count as modifying the task\ninclude assigning, renaming, completing, and adding stories.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_asana_task",
"description": {
"tagline": "Create a new task in Asana.",
"detailed": "Use this tool to create a new task in a specified Asana workspace. You can set various fields on the task upon creation. It is required to specify a workspace, which cannot be changed later, unless specified through projects or a parent task."
},
"return_annotation": "Information about the newly created task.",
"arguments": [
{
"name": "task_details",
"alternative_names": [
"task_data",
"new_task_info"
],
"description": "JSON object containing details of the task to create, including fields like name, notes, assignee, due date, etc.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties",
"additional_fields"
],
"description": "Comma-separated list of optional task properties to include in the response. Excludes some properties by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable to receive the response in a readable format with line breaks and indentation. Use for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks",
"tags": [
"Tasks"
],
"summary": "Create a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nCreating a new task is as easy as POSTing to the `/tasks` endpoint with a\ndata block containing the fields you\u2019d like to set on the task. Any\nunspecified fields will take on default values.\n\nEvery task is required to be created in a specific workspace, and this\nworkspace cannot be changed once set. The workspace need not be set\nexplicitly if you specify `projects` or a `parent` task instead.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The task to create."
},
"description": "The task to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "The *task* is the basic object around which many operations in Asana are centered.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"name": {
"type": "string",
"description": "The name of the task.",
"example": "Bug Task"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe resource_subtype `milestone` represent a single moment in time. This means tasks with this subtype cannot have a start_date.",
"enum": [
"default_task",
"milestone",
"approval"
],
"example": "default_task"
},
"created_by": {
"type": "object",
"description": "[Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource.",
"example": "1111"
},
"resource_type": {
"type": "string",
"description": "The type of resource.",
"example": "user"
}
}
}
}
},
{
"type": "object",
"properties": {
"approval_status": {
"type": "string",
"description": "*Conditional* Reflects the approval status of this task. This field is kept in sync with `completed`, meaning `pending` translates to false while `approved`, `rejected`, and `changes_requested` translate to true. If you set completed to true, this field will be set to `approved`.",
"enum": [
"pending",
"approved",
"rejected",
"changes_requested"
],
"example": "pending"
},
"assignee_status": {
"type": "string",
"description": "*Deprecated* Scheduling status of this task for the user it is assigned to. This field can only be set if the assignee is non-null. Setting this field to \"inbox\" or \"upcoming\" inserts it at the top of the section, while the other options will insert at the bottom.",
"enum": [
"today",
"upcoming",
"later",
"new",
"inbox"
],
"example": "upcoming"
},
"completed": {
"type": "boolean",
"description": "True if the task is currently marked complete, false if not.",
"example": false
},
"completed_at": {
"type": "string",
"description": "The time at which this task was completed, or null if the task is incomplete.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"completed_by": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"dependencies": {
"type": "array",
"description": "[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that this task depends on. The objects contain only the gid of the dependency.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
}
}
}
},
"dependents": {
"type": "array",
"description": "[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that depend on this task. The objects contain only the ID of the dependent.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
}
}
}
},
"due_at": {
"type": "string",
"description": "The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`.",
"format": "date-time",
"example": "2019-09-15T02:06:58.147Z"
},
"due_on": {
"type": "string",
"description": "The localized date on which this task is due, or null if the task has no due date. This takes a date with `YYYY-MM-DD` format and should not be used together with `due_at`.",
"format": "date",
"example": "2019-09-15"
},
"external": {
"type": "object",
"description": "*OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options).\nThe external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details.",
"properties": {
"gid": {
"type": "string",
"example": "1234"
},
"data": {
"type": "string",
"example": "A blob of information."
}
}
},
"html_notes": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The notes of the text with formatting as HTML.",
"example": "<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>"
},
"hearted": {
"type": "boolean",
"description": "*Deprecated - please use liked instead* True if the task is hearted by the authorized user, false if not.",
"example": true
},
"hearts": {
"type": "array",
"description": "*Deprecated - please use likes instead* Array of likes for users who have hearted this task.",
"items": {
"type": "object",
"description": "An object to represent a user's like.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the object, as a string.",
"example": "12345"
},
"user": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
}
}
},
"is_rendered_as_separator": {
"type": "boolean",
"description": "[Opt In](/docs/inputoutput-options). In some contexts tasks can be rendered as a visual separator; for instance, subtasks can appear similar to [sections](/reference/sections) without being true `section` objects. If a `task` object is rendered this way in any context it will have the property `is_rendered_as_separator` set to `true`. This parameter only applies to regular tasks with `resource_subtype` of `default_task`. Tasks with `resource_subtype` of `milestone`, `approval`, or custom task types will not have this property and cannot be rendered as separators.",
"example": false
},
"liked": {
"type": "boolean",
"description": "True if the task is liked by the authorized user, false if not.",
"example": true
},
"likes": {
"type": "array",
"description": "Array of likes for users who have liked this task.",
"items": {
"type": "object",
"description": "An object to represent a user's like.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the object, as a string.",
"example": "12345"
},
"user": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
}
}
},
"memberships": {
"type": "array",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>projects:read</code>, <code>project_sections:read</code></p>\n\n*Create-only*. Array of projects this task is associated with and the section it is in. At task creation time, this array can be used to add the task to specific sections. After task creation, these associations can be modified using the `addProject` and `removeProject` endpoints. Note that over time, more types of memberships may be added to this property.",
"items": {
"type": "object",
"properties": {
"project": {
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
"section": {
"type": "object",
"description": "A *section* is a subdivision of a project that groups tasks together. It can either be a header above a list of tasks in a list view or a column in a board view of a project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "section"
},
"name": {
"type": "string",
"description": "The name of the section (i.e. the text displayed as the section header).",
"example": "Next Actions"
}
}
}
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this task was last modified.\n\nThe following conditions will change `modified_at`:\n\n- story is created on a task\n- story is trashed on a task\n- attachment is trashed on a task\n- task is assigned or unassigned\n- custom field value is changed\n- the task itself is trashed\n- Or if any of the following fields are updated:\n - completed\n - name\n - due_date\n - description\n - attachments\n - items\n - schedule_status\n\nThe following conditions will _not_ change `modified_at`:\n\n- moving to a new container (project, portfolio, etc)\n- comments being added to the task (but the stories they generate\n _will_ affect `modified_at`)",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"name": {
"type": "string",
"description": "Name of the task. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Buy catnip"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the task (i.e. its description).",
"example": "Mittens really likes the stuff from Humboldt."
},
"num_hearts": {
"type": "integer",
"description": "*Deprecated - please use likes instead* The number of users who have hearted this task.",
"example": 5
},
"num_likes": {
"type": "integer",
"description": "The number of users who have liked this task.",
"example": 5
},
"num_subtasks": {
"type": "integer",
"description": "[Opt In](/docs/inputoutput-options). The number of subtasks on this task.\n",
"example": 3
},
"start_at": {
"type": "string",
"description": "Date and time on which work begins for the task, or null if the task has no start time. This takes an ISO 8601 date string in UTC and should not be used together with `start_on`.\n*Note: `due_at` must be present in the request when setting or unsetting the `start_at` parameter.*",
"format": "date-time",
"example": "2019-09-14T02:06:58.147Z"
},
"start_on": {
"type": "string",
"description": "The day on which work begins for the task , or null if the task has no start date. This takes a date with `YYYY-MM-DD` format and should not be used together with `start_at`.\n*Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter.*",
"format": "date",
"example": "2019-09-14"
},
"actual_time_minutes": {
"type": "number",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>time_tracking_entries:read</code></p>\n\nThis value represents the sum of all the Time Tracking entries in the Actual Time field on a given Task. It is represented as a nullable long value.",
"example": 200
}
}
}
]
},
{
"type": "object",
"properties": {
"assignee": {
"type": "string",
"description": "Gid of a user.",
"example": "12345"
},
"assignee_section": {
"type": "string",
"description": "The *assignee section* is a subdivision of a project that groups tasks together in the assignee's \"My tasks\" list. It can either be a header above a list of tasks in a list view or a column in a board view of \"My tasks.\"\nThe `assignee_section` property will be returned in the response only if the request was sent by the user who is the assignee of the task. Note that you can only write to `assignee_section` with the gid of an existing section visible in the user's \"My tasks\" list.",
"example": "12345"
},
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, object, or array (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
},
"followers": {
"type": "array",
"description": "*Create-Only* An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user. In order to change followers on an existing task use `addFollowers` and `removeFollowers`.",
"items": {
"type": "string",
"description": "Gid of a user."
}
},
"parent": {
"type": "string",
"description": "Gid of a task.",
"example": "12345"
},
"projects": {
"type": "array",
"description": "*Create-Only* Array of project gids. In order to change projects on an existing task use `addProject` and `removeProject`.",
"items": {
"type": "string",
"description": "Gid of a project."
}
},
"tags": {
"type": "array",
"description": "*Create-Only* Array of tag gids. In order to change tags on an existing task use `addTag` and `removeTag`.",
"items": {
"type": "string",
"description": "Gid of a tag."
}
},
"workspace": {
"type": "string",
"description": "Gid of a workspace.",
"example": "12345"
},
"custom_type": {
"type": "string",
"description": "GID or globally-unique identifier of a custom_type.",
"example": "12345"
},
"custom_type_status_option": {
"type": "string",
"description": "GID or globally-unique identifier of a custom_type_status_option",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The task to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"The *task* is the basic object around which many operations in Asana are centered.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the task.\",\n \"type\": \"string\",\n \"example\": \"Bug Task\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe resource_subtype `milestone` represent a single moment in time. This means tasks with this subtype cannot have a start_date.\",\n \"enum\": [\n \"default_task\",\n \"milestone\",\n \"approval\"\n ],\n \"example\": \"default_task\"\n },\n \"created_by\": {\n \"type\": \"object\",\n \"readOnly\": true,\n \"description\": \"[Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource.\",\n \"type\": \"string\",\n \"example\": \"1111\"\n },\n \"resource_type\": {\n \"description\": \"The type of resource.\",\n \"type\": \"string\",\n \"example\": \"user\"\n }\n }\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"approval_status\": {\n \"type\": \"string\",\n \"description\": \"*Conditional* Reflects the approval status of this task. This field is kept in sync with `completed`, meaning `pending` translates to false while `approved`, `rejected`, and `changes_requested` translate to true. If you set completed to true, this field will be set to `approved`.\",\n \"enum\": [\n \"pending\",\n \"approved\",\n \"rejected\",\n \"changes_requested\"\n ],\n \"example\": \"pending\"\n },\n \"assignee_status\": {\n \"description\": \"*Deprecated* Scheduling status of this task for the user it is assigned to. This field can only be set if the assignee is non-null. Setting this field to \\\"inbox\\\" or \\\"upcoming\\\" inserts it at the top of the section, while the other options will insert at the bottom.\",\n \"type\": \"string\",\n \"enum\": [\n \"today\",\n \"upcoming\",\n \"later\",\n \"new\",\n \"inbox\"\n ],\n \"example\": \"upcoming\"\n },\n \"completed\": {\n \"description\": \"True if the task is currently marked complete, false if not.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"completed_at\": {\n \"description\": \"The time at which this task was completed, or null if the task is incomplete.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"nullable\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"completed_by\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"readOnly\": true,\n \"nullable\": true\n }\n ]\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"dependencies\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that this task depends on. The objects contain only the gid of the dependency.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n \"readOnly\": true\n },\n \"dependents\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that depend on this task. The objects contain only the ID of the dependent.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n \"readOnly\": true\n },\n \"due_at\": {\n \"description\": \"The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2019-09-15T02:06:58.147Z\",\n \"nullable\": true\n },\n \"due_on\": {\n \"description\": \"The localized date on which this task is due, or null if the task has no due date. This takes a date with `YYYY-MM-DD` format and should not be used together with `due_at`.\",\n \"type\": \"string\",\n \"format\": \"date\",\n \"example\": \"2019-09-15\",\n \"nullable\": true\n },\n \"external\": {\n \"description\": \"*OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options).\\nThe external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"type\": \"string\",\n \"example\": \"1234\"\n },\n \"data\": {\n \"type\": \"string\",\n \"example\": \"A blob of information.\"\n }\n },\n \"example\": {\n \"gid\": \"my_gid\",\n \"data\": \"A blob of information\"\n }\n },\n \"html_notes\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The notes of the text with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>\"\n },\n \"hearted\": {\n \"description\": \"*Deprecated - please use liked instead* True if the task is hearted by the authorized user, false if not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"hearts\": {\n \"description\": \"*Deprecated - please use likes instead* Array of likes for users who have hearted this task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object to represent a user's like.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the object, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\"\n },\n \"user\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n }\n },\n \"readOnly\": true\n },\n \"is_rendered_as_separator\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). In some contexts tasks can be rendered as a visual separator; for instance, subtasks can appear similar to [sections](/reference/sections) without being true `section` objects. If a `task` object is rendered this way in any context it will have the property `is_rendered_as_separator` set to `true`. This parameter only applies to regular tasks with `resource_subtype` of `default_task`. Tasks with `resource_subtype` of `milestone`, `approval`, or custom task types will not have this property and cannot be rendered as separators.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"readOnly\": true\n },\n \"liked\": {\n \"description\": \"True if the task is liked by the authorized user, false if not.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"likes\": {\n \"description\": \"Array of likes for users who have liked this task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object to represent a user's like.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the object, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\"\n },\n \"user\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n }\n },\n \"readOnly\": true\n },\n \"memberships\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>projects:read</code>, <code>project_sections:read</code></p>\\n\\n*Create-only*. Array of projects this task is associated with and the section it is in. At task creation time, this array can be used to add the task to specific sections. After task creation, these associations can be modified using the `addProject` and `removeProject` endpoints. Note that over time, more types of memberships may be added to this property.\",\n \"type\": \"array\",\n \"readOnly\": true,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n \"section\": {\n \"description\": \"A *section* is a subdivision of a project that groups tasks together. It can either be a header above a list of tasks in a list view or a column in a board view of a project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"section\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the section (i.e. the text displayed as the section header).\",\n \"type\": \"string\",\n \"example\": \"Next Actions\"\n }\n }\n }\n }\n }\n },\n \"modified_at\": {\n \"description\": \"The time at which this task was last modified.\\n\\nThe following conditions will change `modified_at`:\\n\\n- story is created on a task\\n- story is trashed on a task\\n- attachment is trashed on a task\\n- task is assigned or unassigned\\n- custom field value is changed\\n- the task itself is trashed\\n- Or if any of the following fields are updated:\\n - completed\\n - name\\n - due_date\\n - description\\n - attachments\\n - items\\n - schedule_status\\n\\nThe following conditions will _not_ change `modified_at`:\\n\\n- moving to a new container (project, portfolio, etc)\\n- comments being added to the task (but the stories they generate\\n _will_ affect `modified_at`)\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"name\": {\n \"description\": \"Name of the task. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Buy catnip\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the task (i.e. its description).\",\n \"type\": \"string\",\n \"example\": \"Mittens really likes the stuff from Humboldt.\"\n },\n \"num_hearts\": {\n \"description\": \"*Deprecated - please use likes instead* The number of users who have hearted this task.\",\n \"type\": \"integer\",\n \"example\": 5,\n \"readOnly\": true\n },\n \"num_likes\": {\n \"description\": \"The number of users who have liked this task.\",\n \"type\": \"integer\",\n \"example\": 5,\n \"readOnly\": true\n },\n \"num_subtasks\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The number of subtasks on this task.\\n\",\n \"type\": \"integer\",\n \"example\": 3,\n \"readOnly\": true\n },\n \"start_at\": {\n \"description\": \"Date and time on which work begins for the task, or null if the task has no start time. This takes an ISO 8601 date string in UTC and should not be used together with `start_on`.\\n*Note: `due_at` must be present in the request when setting or unsetting the `start_at` parameter.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date-time\",\n \"example\": \"2019-09-14T02:06:58.147Z\"\n },\n \"start_on\": {\n \"description\": \"The day on which work begins for the task , or null if the task has no start date. This takes a date with `YYYY-MM-DD` format and should not be used together with `start_at`.\\n*Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"actual_time_minutes\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>time_tracking_entries:read</code></p>\\n\\nThis value represents the sum of all the Time Tracking entries in the Actual Time field on a given Task. It is represented as a nullable long value.\",\n \"type\": \"number\",\n \"example\": 200,\n \"readOnly\": true,\n \"nullable\": true\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"assignee\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a user.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"assignee_section\": {\n \"nullable\": true,\n \"type\": \"string\",\n \"description\": \"The *assignee section* is a subdivision of a project that groups tasks together in the assignee's \\\"My tasks\\\" list. It can either be a header above a list of tasks in a list view or a column in a board view of \\\"My tasks.\\\"\\nThe `assignee_section` property will be returned in the response only if the request was sent by the user who is the assignee of the task. Note that you can only write to `assignee_section` with the gid of an existing section visible in the user's \\\"My tasks\\\" list.\",\n \"example\": \"12345\"\n },\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, object, or array (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n },\n \"followers\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user. In order to change followers on an existing task use `addFollowers` and `removeFollowers`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"parent\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a task.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"projects\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* Array of project gids. In order to change projects on an existing task use `addProject` and `removeProject`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a project.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* Array of tag gids. In order to change tags on an existing task use `addTag` and `removeTag`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a tag.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"workspace\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a workspace.\",\n \"example\": \"12345\"\n },\n \"custom_type\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"GID or globally-unique identifier of a custom_type.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"custom_type_status_option\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"GID or globally-unique identifier of a custom_type_status_option\",\n \"example\": \"12345\",\n \"nullable\": true\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_task_details",
"description": {
"tagline": "Fetch detailed information for a specific Asana task.",
"detailed": "Retrieves the complete task record for a specified task in Asana. This includes information such as memberships and actual time spent, depending on permissions. Useful for getting comprehensive task data for project management and tracking purposes."
},
"return_annotation": "Complete task record for a single task.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_id",
"task_gid_identifier"
],
"description": "Specify the unique identifier of the Asana task to retrieve detailed information.",
"endpoint_argument_name": "task_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"include_fields"
],
"description": "Specify optional task properties to include in the response. Use a list of strings representing property names.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response",
"formatted_json_output"
],
"description": "Set to true for a prettily formatted response, which may increase response time and size. Best used for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}",
"tags": [
"Tasks"
],
"summary": "Get a task",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>memberships</code></td>\n <td><code>projects:read</code>, <code>project_sections:read</code></td>\n </tr>\n <tr>\n <td><code>actual_time_minutes</code></td>\n <td><code>time_tracking_entries:read</code></td>\n </tr>\n</table>\n\nReturns the complete task record for a single task.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_task",
"description": {
"tagline": "Update specific fields of an existing Asana task.",
"detailed": "Allows updating of specific fields in a task on Asana using the task's unique ID. Only the specified fields are altered, preventing unintended overwrite of other data. Requires 'tasks:write' scope."
},
"return_annotation": "The complete updated task record.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_gid_value"
],
"description": "The unique identifier of the task to update in Asana.",
"endpoint_argument_name": "task_gid"
},
{
"name": "task_update_data",
"alternative_names": [
"task_update_payload",
"task_data"
],
"description": "JSON object containing fields to update in the task. Only specified fields will be changed.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties",
"fields_to_include"
],
"description": "Comma-separated list of task properties to include in the response, such as 'created_at', 'due_date', etc.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"formatted_output_enabled",
"debug_pretty_output"
],
"description": "Set to true for a formatted response with line breaks and indentation. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/tasks/{task_gid}",
"tags": [
"Tasks"
],
"summary": "Update a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nA specific, existing task can be updated by making a PUT request on the\nURL for that task. Only the fields provided in the `data` block will be\nupdated; any unspecified fields will remain unchanged.\n\nWhen using this method, it is best to specify only those fields you wish\nto change, or else you may overwrite changes made by another user since\nyou last retrieved the task.\n\nReturns the complete updated task record.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The task to update."
},
"description": "The task to update.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "The *task* is the basic object around which many operations in Asana are centered.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"name": {
"type": "string",
"description": "The name of the task.",
"example": "Bug Task"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe resource_subtype `milestone` represent a single moment in time. This means tasks with this subtype cannot have a start_date.",
"enum": [
"default_task",
"milestone",
"approval"
],
"example": "default_task"
},
"created_by": {
"type": "object",
"description": "[Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource.",
"example": "1111"
},
"resource_type": {
"type": "string",
"description": "The type of resource.",
"example": "user"
}
}
}
}
},
{
"type": "object",
"properties": {
"approval_status": {
"type": "string",
"description": "*Conditional* Reflects the approval status of this task. This field is kept in sync with `completed`, meaning `pending` translates to false while `approved`, `rejected`, and `changes_requested` translate to true. If you set completed to true, this field will be set to `approved`.",
"enum": [
"pending",
"approved",
"rejected",
"changes_requested"
],
"example": "pending"
},
"assignee_status": {
"type": "string",
"description": "*Deprecated* Scheduling status of this task for the user it is assigned to. This field can only be set if the assignee is non-null. Setting this field to \"inbox\" or \"upcoming\" inserts it at the top of the section, while the other options will insert at the bottom.",
"enum": [
"today",
"upcoming",
"later",
"new",
"inbox"
],
"example": "upcoming"
},
"completed": {
"type": "boolean",
"description": "True if the task is currently marked complete, false if not.",
"example": false
},
"completed_at": {
"type": "string",
"description": "The time at which this task was completed, or null if the task is incomplete.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"completed_by": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"dependencies": {
"type": "array",
"description": "[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that this task depends on. The objects contain only the gid of the dependency.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
}
}
}
},
"dependents": {
"type": "array",
"description": "[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that depend on this task. The objects contain only the ID of the dependent.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
}
}
}
},
"due_at": {
"type": "string",
"description": "The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`.",
"format": "date-time",
"example": "2019-09-15T02:06:58.147Z"
},
"due_on": {
"type": "string",
"description": "The localized date on which this task is due, or null if the task has no due date. This takes a date with `YYYY-MM-DD` format and should not be used together with `due_at`.",
"format": "date",
"example": "2019-09-15"
},
"external": {
"type": "object",
"description": "*OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options).\nThe external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details.",
"properties": {
"gid": {
"type": "string",
"example": "1234"
},
"data": {
"type": "string",
"example": "A blob of information."
}
}
},
"html_notes": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The notes of the text with formatting as HTML.",
"example": "<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>"
},
"hearted": {
"type": "boolean",
"description": "*Deprecated - please use liked instead* True if the task is hearted by the authorized user, false if not.",
"example": true
},
"hearts": {
"type": "array",
"description": "*Deprecated - please use likes instead* Array of likes for users who have hearted this task.",
"items": {
"type": "object",
"description": "An object to represent a user's like.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the object, as a string.",
"example": "12345"
},
"user": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
}
}
},
"is_rendered_as_separator": {
"type": "boolean",
"description": "[Opt In](/docs/inputoutput-options). In some contexts tasks can be rendered as a visual separator; for instance, subtasks can appear similar to [sections](/reference/sections) without being true `section` objects. If a `task` object is rendered this way in any context it will have the property `is_rendered_as_separator` set to `true`. This parameter only applies to regular tasks with `resource_subtype` of `default_task`. Tasks with `resource_subtype` of `milestone`, `approval`, or custom task types will not have this property and cannot be rendered as separators.",
"example": false
},
"liked": {
"type": "boolean",
"description": "True if the task is liked by the authorized user, false if not.",
"example": true
},
"likes": {
"type": "array",
"description": "Array of likes for users who have liked this task.",
"items": {
"type": "object",
"description": "An object to represent a user's like.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the object, as a string.",
"example": "12345"
},
"user": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
}
}
},
"memberships": {
"type": "array",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>projects:read</code>, <code>project_sections:read</code></p>\n\n*Create-only*. Array of projects this task is associated with and the section it is in. At task creation time, this array can be used to add the task to specific sections. After task creation, these associations can be modified using the `addProject` and `removeProject` endpoints. Note that over time, more types of memberships may be added to this property.",
"items": {
"type": "object",
"properties": {
"project": {
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
"section": {
"type": "object",
"description": "A *section* is a subdivision of a project that groups tasks together. It can either be a header above a list of tasks in a list view or a column in a board view of a project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "section"
},
"name": {
"type": "string",
"description": "The name of the section (i.e. the text displayed as the section header).",
"example": "Next Actions"
}
}
}
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this task was last modified.\n\nThe following conditions will change `modified_at`:\n\n- story is created on a task\n- story is trashed on a task\n- attachment is trashed on a task\n- task is assigned or unassigned\n- custom field value is changed\n- the task itself is trashed\n- Or if any of the following fields are updated:\n - completed\n - name\n - due_date\n - description\n - attachments\n - items\n - schedule_status\n\nThe following conditions will _not_ change `modified_at`:\n\n- moving to a new container (project, portfolio, etc)\n- comments being added to the task (but the stories they generate\n _will_ affect `modified_at`)",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"name": {
"type": "string",
"description": "Name of the task. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Buy catnip"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the task (i.e. its description).",
"example": "Mittens really likes the stuff from Humboldt."
},
"num_hearts": {
"type": "integer",
"description": "*Deprecated - please use likes instead* The number of users who have hearted this task.",
"example": 5
},
"num_likes": {
"type": "integer",
"description": "The number of users who have liked this task.",
"example": 5
},
"num_subtasks": {
"type": "integer",
"description": "[Opt In](/docs/inputoutput-options). The number of subtasks on this task.\n",
"example": 3
},
"start_at": {
"type": "string",
"description": "Date and time on which work begins for the task, or null if the task has no start time. This takes an ISO 8601 date string in UTC and should not be used together with `start_on`.\n*Note: `due_at` must be present in the request when setting or unsetting the `start_at` parameter.*",
"format": "date-time",
"example": "2019-09-14T02:06:58.147Z"
},
"start_on": {
"type": "string",
"description": "The day on which work begins for the task , or null if the task has no start date. This takes a date with `YYYY-MM-DD` format and should not be used together with `start_at`.\n*Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter.*",
"format": "date",
"example": "2019-09-14"
},
"actual_time_minutes": {
"type": "number",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>time_tracking_entries:read</code></p>\n\nThis value represents the sum of all the Time Tracking entries in the Actual Time field on a given Task. It is represented as a nullable long value.",
"example": 200
}
}
}
]
},
{
"type": "object",
"properties": {
"assignee": {
"type": "string",
"description": "Gid of a user.",
"example": "12345"
},
"assignee_section": {
"type": "string",
"description": "The *assignee section* is a subdivision of a project that groups tasks together in the assignee's \"My tasks\" list. It can either be a header above a list of tasks in a list view or a column in a board view of \"My tasks.\"\nThe `assignee_section` property will be returned in the response only if the request was sent by the user who is the assignee of the task. Note that you can only write to `assignee_section` with the gid of an existing section visible in the user's \"My tasks\" list.",
"example": "12345"
},
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, object, or array (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
},
"followers": {
"type": "array",
"description": "*Create-Only* An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user. In order to change followers on an existing task use `addFollowers` and `removeFollowers`.",
"items": {
"type": "string",
"description": "Gid of a user."
}
},
"parent": {
"type": "string",
"description": "Gid of a task.",
"example": "12345"
},
"projects": {
"type": "array",
"description": "*Create-Only* Array of project gids. In order to change projects on an existing task use `addProject` and `removeProject`.",
"items": {
"type": "string",
"description": "Gid of a project."
}
},
"tags": {
"type": "array",
"description": "*Create-Only* Array of tag gids. In order to change tags on an existing task use `addTag` and `removeTag`.",
"items": {
"type": "string",
"description": "Gid of a tag."
}
},
"workspace": {
"type": "string",
"description": "Gid of a workspace.",
"example": "12345"
},
"custom_type": {
"type": "string",
"description": "GID or globally-unique identifier of a custom_type.",
"example": "12345"
},
"custom_type_status_option": {
"type": "string",
"description": "GID or globally-unique identifier of a custom_type_status_option",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The task to update.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"The *task* is the basic object around which many operations in Asana are centered.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the task.\",\n \"type\": \"string\",\n \"example\": \"Bug Task\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe resource_subtype `milestone` represent a single moment in time. This means tasks with this subtype cannot have a start_date.\",\n \"enum\": [\n \"default_task\",\n \"milestone\",\n \"approval\"\n ],\n \"example\": \"default_task\"\n },\n \"created_by\": {\n \"type\": \"object\",\n \"readOnly\": true,\n \"description\": \"[Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource.\",\n \"type\": \"string\",\n \"example\": \"1111\"\n },\n \"resource_type\": {\n \"description\": \"The type of resource.\",\n \"type\": \"string\",\n \"example\": \"user\"\n }\n }\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"approval_status\": {\n \"type\": \"string\",\n \"description\": \"*Conditional* Reflects the approval status of this task. This field is kept in sync with `completed`, meaning `pending` translates to false while `approved`, `rejected`, and `changes_requested` translate to true. If you set completed to true, this field will be set to `approved`.\",\n \"enum\": [\n \"pending\",\n \"approved\",\n \"rejected\",\n \"changes_requested\"\n ],\n \"example\": \"pending\"\n },\n \"assignee_status\": {\n \"description\": \"*Deprecated* Scheduling status of this task for the user it is assigned to. This field can only be set if the assignee is non-null. Setting this field to \\\"inbox\\\" or \\\"upcoming\\\" inserts it at the top of the section, while the other options will insert at the bottom.\",\n \"type\": \"string\",\n \"enum\": [\n \"today\",\n \"upcoming\",\n \"later\",\n \"new\",\n \"inbox\"\n ],\n \"example\": \"upcoming\"\n },\n \"completed\": {\n \"description\": \"True if the task is currently marked complete, false if not.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"completed_at\": {\n \"description\": \"The time at which this task was completed, or null if the task is incomplete.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"nullable\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"completed_by\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"readOnly\": true,\n \"nullable\": true\n }\n ]\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"dependencies\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that this task depends on. The objects contain only the gid of the dependency.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n \"readOnly\": true\n },\n \"dependents\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that depend on this task. The objects contain only the ID of the dependent.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n \"readOnly\": true\n },\n \"due_at\": {\n \"description\": \"The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2019-09-15T02:06:58.147Z\",\n \"nullable\": true\n },\n \"due_on\": {\n \"description\": \"The localized date on which this task is due, or null if the task has no due date. This takes a date with `YYYY-MM-DD` format and should not be used together with `due_at`.\",\n \"type\": \"string\",\n \"format\": \"date\",\n \"example\": \"2019-09-15\",\n \"nullable\": true\n },\n \"external\": {\n \"description\": \"*OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options).\\nThe external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"type\": \"string\",\n \"example\": \"1234\"\n },\n \"data\": {\n \"type\": \"string\",\n \"example\": \"A blob of information.\"\n }\n },\n \"example\": {\n \"gid\": \"my_gid\",\n \"data\": \"A blob of information\"\n }\n },\n \"html_notes\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The notes of the text with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>\"\n },\n \"hearted\": {\n \"description\": \"*Deprecated - please use liked instead* True if the task is hearted by the authorized user, false if not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"hearts\": {\n \"description\": \"*Deprecated - please use likes instead* Array of likes for users who have hearted this task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object to represent a user's like.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the object, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\"\n },\n \"user\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n }\n },\n \"readOnly\": true\n },\n \"is_rendered_as_separator\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). In some contexts tasks can be rendered as a visual separator; for instance, subtasks can appear similar to [sections](/reference/sections) without being true `section` objects. If a `task` object is rendered this way in any context it will have the property `is_rendered_as_separator` set to `true`. This parameter only applies to regular tasks with `resource_subtype` of `default_task`. Tasks with `resource_subtype` of `milestone`, `approval`, or custom task types will not have this property and cannot be rendered as separators.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"readOnly\": true\n },\n \"liked\": {\n \"description\": \"True if the task is liked by the authorized user, false if not.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"likes\": {\n \"description\": \"Array of likes for users who have liked this task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object to represent a user's like.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the object, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\"\n },\n \"user\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n }\n },\n \"readOnly\": true\n },\n \"memberships\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>projects:read</code>, <code>project_sections:read</code></p>\\n\\n*Create-only*. Array of projects this task is associated with and the section it is in. At task creation time, this array can be used to add the task to specific sections. After task creation, these associations can be modified using the `addProject` and `removeProject` endpoints. Note that over time, more types of memberships may be added to this property.\",\n \"type\": \"array\",\n \"readOnly\": true,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n \"section\": {\n \"description\": \"A *section* is a subdivision of a project that groups tasks together. It can either be a header above a list of tasks in a list view or a column in a board view of a project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"section\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the section (i.e. the text displayed as the section header).\",\n \"type\": \"string\",\n \"example\": \"Next Actions\"\n }\n }\n }\n }\n }\n },\n \"modified_at\": {\n \"description\": \"The time at which this task was last modified.\\n\\nThe following conditions will change `modified_at`:\\n\\n- story is created on a task\\n- story is trashed on a task\\n- attachment is trashed on a task\\n- task is assigned or unassigned\\n- custom field value is changed\\n- the task itself is trashed\\n- Or if any of the following fields are updated:\\n - completed\\n - name\\n - due_date\\n - description\\n - attachments\\n - items\\n - schedule_status\\n\\nThe following conditions will _not_ change `modified_at`:\\n\\n- moving to a new container (project, portfolio, etc)\\n- comments being added to the task (but the stories they generate\\n _will_ affect `modified_at`)\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"name\": {\n \"description\": \"Name of the task. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Buy catnip\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the task (i.e. its description).\",\n \"type\": \"string\",\n \"example\": \"Mittens really likes the stuff from Humboldt.\"\n },\n \"num_hearts\": {\n \"description\": \"*Deprecated - please use likes instead* The number of users who have hearted this task.\",\n \"type\": \"integer\",\n \"example\": 5,\n \"readOnly\": true\n },\n \"num_likes\": {\n \"description\": \"The number of users who have liked this task.\",\n \"type\": \"integer\",\n \"example\": 5,\n \"readOnly\": true\n },\n \"num_subtasks\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The number of subtasks on this task.\\n\",\n \"type\": \"integer\",\n \"example\": 3,\n \"readOnly\": true\n },\n \"start_at\": {\n \"description\": \"Date and time on which work begins for the task, or null if the task has no start time. This takes an ISO 8601 date string in UTC and should not be used together with `start_on`.\\n*Note: `due_at` must be present in the request when setting or unsetting the `start_at` parameter.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date-time\",\n \"example\": \"2019-09-14T02:06:58.147Z\"\n },\n \"start_on\": {\n \"description\": \"The day on which work begins for the task , or null if the task has no start date. This takes a date with `YYYY-MM-DD` format and should not be used together with `start_at`.\\n*Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"actual_time_minutes\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>time_tracking_entries:read</code></p>\\n\\nThis value represents the sum of all the Time Tracking entries in the Actual Time field on a given Task. It is represented as a nullable long value.\",\n \"type\": \"number\",\n \"example\": 200,\n \"readOnly\": true,\n \"nullable\": true\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"assignee\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a user.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"assignee_section\": {\n \"nullable\": true,\n \"type\": \"string\",\n \"description\": \"The *assignee section* is a subdivision of a project that groups tasks together in the assignee's \\\"My tasks\\\" list. It can either be a header above a list of tasks in a list view or a column in a board view of \\\"My tasks.\\\"\\nThe `assignee_section` property will be returned in the response only if the request was sent by the user who is the assignee of the task. Note that you can only write to `assignee_section` with the gid of an existing section visible in the user's \\\"My tasks\\\" list.\",\n \"example\": \"12345\"\n },\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, object, or array (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n },\n \"followers\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user. In order to change followers on an existing task use `addFollowers` and `removeFollowers`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"parent\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a task.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"projects\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* Array of project gids. In order to change projects on an existing task use `addProject` and `removeProject`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a project.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* Array of tag gids. In order to change tags on an existing task use `addTag` and `removeTag`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a tag.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"workspace\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a workspace.\",\n \"example\": \"12345\"\n },\n \"custom_type\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"GID or globally-unique identifier of a custom_type.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"custom_type_status_option\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"GID or globally-unique identifier of a custom_type_status_option\",\n \"example\": \"12345\",\n \"nullable\": true\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_task",
"description": {
"tagline": "Delete an existing task in Asana, moving it to trash.",
"detailed": "Use this tool to delete a specific task in Asana. The task will be moved to the user's trash, where it can be recovered within 30 days. This tool is useful for managing tasks that are no longer needed or were created by mistake."
},
"return_annotation": "Confirmation of task deletion and trash status.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_id",
"task_global_id"
],
"description": "The unique identifier of the task to delete in Asana.",
"endpoint_argument_name": "task_gid"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"enable_pretty_format",
"pretty_format_enabled"
],
"description": "Set to true for 'pretty' formatted response, useful for debugging. May increase response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/tasks/{task_gid}",
"tags": [
"Tasks"
],
"summary": "Delete a task",
"description": "<b>Required scope: </b><code>tasks:delete</code>\n\nA specific, existing task can be deleted by making a DELETE request on\nthe URL for that task. Deleted tasks go into the \u201ctrash\u201d of the user\nmaking the delete request. Tasks can be recovered from the trash within a\nperiod of 30 days; afterward they are completely removed from the system.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [
"tasks:delete"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "duplicateTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "duplicate_asana_task",
"description": {
"tagline": "Create a job to duplicate a task in Asana.",
"detailed": "This tool creates and returns a job that will asynchronously handle the duplication of a specified task in Asana. It should be called when there's a need to copy an existing task."
},
"return_annotation": "Information about the duplication job created.",
"arguments": [
{
"name": "task_gid",
"alternative_names": [
"task_id",
"target_task_gid"
],
"description": "The unique identifier of the task to duplicate in Asana.",
"endpoint_argument_name": "task_gid"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_return",
"extra_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "new_task_name",
"alternative_names": [
"task_name_new",
"name_for_new_task"
],
"description": "The name for the newly duplicated task in Asana.",
"endpoint_argument_name": "data.name"
},
{
"name": "fields_to_duplicate",
"alternative_names": [
"fields_for_task_duplication",
"fields_to_copy"
],
"description": "Comma-separated list of task fields to duplicate, such as assignee, attachments, dates, etc.",
"endpoint_argument_name": "data.include"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"formatted_output"
],
"description": "Enable pretty printing of the JSON response for improved readability. Use this primarily for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/duplicate",
"tags": [
"Tasks"
],
"summary": "Duplicate a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nCreates and returns a job that will asynchronously handle the duplication.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"new_graph_export",
"new_graph_export.completed_at",
"new_graph_export.created_at",
"new_graph_export.download_url",
"new_project",
"new_project.name",
"new_project_template",
"new_project_template.name",
"new_resource_export",
"new_resource_export.completed_at",
"new_resource_export.created_at",
"new_resource_export.download_url",
"new_task",
"new_task.created_by",
"new_task.name",
"new_task.resource_subtype",
"new_task_template",
"new_task_template.name",
"resource_subtype",
"status"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The name of the new task."
},
"description": "The name of the new task.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The name of the new task.",
"example": "New Task Name"
},
"schema_required": false
},
{
"name": "data.include",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A comma-separated list of fields that will be duplicated to the new task.\n##### Fields\n- assignee\n- attachments\n- dates\n- dependencies\n- followers\n- notes\n- parent\n- projects\n- subtasks\n- tags"
},
"description": "A comma-separated list of fields that will be duplicated to the new task.\n##### Fields\n- assignee\n- attachments\n- dates\n- dependencies\n- followers\n- notes\n- parent\n- projects\n- subtasks\n- tags",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A comma-separated list of fields that will be duplicated to the new task.\n##### Fields\n- assignee\n- attachments\n- dates\n- dependencies\n- followers\n- notes\n- parent\n- projects\n- subtasks\n- tags",
"example": [
"notes,assignee,subtasks,attachments,tags,followers,projects,dates,dependencies,parent"
],
"pattern": "([notes|assignee|subtasks|attachments|tags|followers|projects|dates|dependencies|parent])(,\\1)*"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Describes the duplicate's name and the fields that will be duplicated.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"description\": \"The name of the new task.\",\n \"type\": \"string\",\n \"example\": \"New Task Name\"\n },\n \"include\": {\n \"description\": \"A comma-separated list of fields that will be duplicated to the new task.\\n##### Fields\\n- assignee\\n- attachments\\n- dates\\n- dependencies\\n- followers\\n- notes\\n- parent\\n- projects\\n- subtasks\\n- tags\",\n \"type\": \"string\",\n \"pattern\": \"([notes|assignee|subtasks|attachments|tags|followers|projects|dates|dependencies|parent])(,\\\\1)*\",\n \"example\": [\n \"notes,assignee,subtasks,attachments,tags,followers,projects,dates,dependencies,parent\"\n ]\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getTasksForProject",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_project_tasks",
"description": {
"tagline": "Fetch tasks from a specific Asana project.",
"detailed": "Retrieves compact task records for all tasks in a given Asana project, ordered by their priority. Useful for accessing and managing task lists."
},
"return_annotation": "List of task records for a specified project.",
"arguments": [
{
"name": "project_global_id",
"alternative_names": [
"project_id",
"project_unique_id"
],
"description": "Globally unique identifier for the Asana project. Required to retrieve tasks from a specific project.",
"endpoint_argument_name": "project_gid"
},
{
"name": "completed_since",
"alternative_names": [
"since_completion",
"task_completion_filter"
],
"description": "Return tasks incomplete or completed after this date-time or 'now'.",
"endpoint_argument_name": "completed_since"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"tasks_per_page"
],
"description": "Number of task records to return per page in the result. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"page_offset_token",
"next_page_token"
],
"description": "Token for paginating results. Use it to retrieve the next set of tasks from a previously returned offset.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_fields",
"extra_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_output_pretty",
"pretty_response_format"
],
"description": "Enable pretty formatting for the response. This makes the output more readable but increases response size and time. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/projects/{project_gid}/tasks",
"tags": [
"Tasks"
],
"summary": "Get tasks from a project",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the compact task records for all tasks within the given project, ordered by their priority within the project. Tasks can exist in more than one project at a time.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "completed_since",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n"
},
"description": "Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "project_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project."
},
"description": "Globally unique identifier for the project.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTasksForSection",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_tasks_for_section",
"description": {
"tagline": "Fetch tasks for a specific section in Asana.",
"detailed": "Use this tool to retrieve all tasks within a given section in Asana's board view. Requires 'tasks:read' scope."
},
"return_annotation": "Compact section records for tasks within a section.",
"arguments": [
{
"name": "section_unique_identifier",
"alternative_names": [
"section_global_id",
"section_id"
],
"description": "The globally unique identifier for the section in Asana to fetch tasks from. Required to specify the exact section targeted.",
"endpoint_argument_name": "section_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"tasks_per_page",
"page_size"
],
"description": "Number of tasks to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_token",
"continue_pagination"
],
"description": "Offset token for pagination. Use it to fetch the next page of results. If not provided, the first page will be returned.",
"endpoint_argument_name": "offset"
},
{
"name": "completed_since_filter",
"alternative_names": [
"completion_date_filter",
"task_completion_filter"
],
"description": "Return tasks incomplete or completed since a specific time. Use a date-time string or 'now'.",
"endpoint_argument_name": "completed_since"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"include_fields",
"fields_to_return"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_response"
],
"description": "Enable pretty formatting of the response for readability. Increases response time and size. Use mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/sections/{section_gid}/tasks",
"tags": [
"Tasks"
],
"summary": "Get tasks from a section",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\n*Board view only*: Returns the compact section records for all tasks within the given section.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "completed_since",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n"
},
"description": "Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "section_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The globally unique identifier for the section."
},
"description": "The globally unique identifier for the section.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTasksForTag",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_tasks_for_tag",
"description": {
"tagline": "Retrieve tasks associated with a specific tag in Asana.",
"detailed": "Use this tool to get a list of tasks that are associated with a specific tag in Asana. This can help organize tasks that share common attributes or objectives. Useful for managing tasks by category or project requirements."
},
"return_annotation": "Compact task records for a specific tag.",
"arguments": [
{
"name": "tag_global_id",
"alternative_names": [
"unique_tag_identifier",
"tag_id"
],
"description": "Globally unique identifier for the tag to retrieve associated tasks.",
"endpoint_argument_name": "tag_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"tasks_limit"
],
"description": "The number of task objects to return per page, ranging from 1 to 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"page_offset",
"next_page_token"
],
"description": "A token for pagination to fetch the next set of results. Use the token returned from a previous call for fetching subsequent pages. If not provided, the first page of results is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_include",
"additional_fields"
],
"description": "List of optional property names to include in the response for each task (comma-separated).",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting_enabled",
"use_pretty_output"
],
"description": "Formats the response for readability with line breaks and indentation. Use true only during debugging due to increased response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tags/{tag_gid}/tasks",
"tags": [
"Tasks"
],
"summary": "Get tasks from a tag",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the compact task records for all tasks with the given tag. Tasks can have more than one tag at a time.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "tag_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the tag."
},
"description": "Globally unique identifier for the tag.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTasksForUserTaskList",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_user_task_list",
"description": {
"tagline": "Retrieve tasks in a user's My Tasks list.",
"detailed": "Fetches a compact list of tasks for a user's My Tasks list from Asana. It includes both complete and incomplete tasks unless filtered. Access control applies, so private tasks are excluded if the authenticated user lacks permissions."
},
"return_annotation": "A compact list of tasks from the user's My Tasks list.",
"arguments": [
{
"name": "user_task_list_id",
"alternative_names": [
"user_task_list_identifier",
"user_task_list_gid"
],
"description": "Globally unique identifier for the user's task list. This ID is required to fetch tasks from the specified user list.",
"endpoint_argument_name": "user_task_list_gid"
},
{
"name": "filter_completed_tasks_since",
"alternative_names": [
"tasks_completed_since",
"completed_task_filter"
],
"description": "Return only tasks that are either incomplete or completed since this date-time or the keyword 'now'.",
"endpoint_argument_name": "completed_since"
},
{
"name": "tasks_per_page",
"alternative_names": [
"page_size",
"results_per_page"
],
"description": "Specify the number of tasks to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"page_offset"
],
"description": "Offset token for pagination. Use the token returned from a previous request to fetch the next page. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"select_additional_fields",
"extra_fields"
],
"description": "List the optional properties to include in the response, as a list of strings. These properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"format_pretty"
],
"description": "Enable pretty output to make the JSON response more readable. This increases response time and size, so it's recommended for debugging only.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/user_task_lists/{user_task_list_gid}/tasks",
"tags": [
"Tasks"
],
"summary": "Get tasks from a user task list",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the compact list of tasks in a user\u2019s My Tasks list.\n*Note: Access control is enforced for this endpoint as with all Asana API endpoints, meaning a user\u2019s private tasks will be filtered out if the API-authenticated user does not have access to them.*\n*Note: Both complete and incomplete tasks are returned by default unless they are filtered out (for example, setting `completed_since=now` will return only incomplete tasks, which is the default view for \u201cMy Tasks\u201d in Asana.)*",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "completed_since",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n"
},
"description": "Only return tasks that are either incomplete or that have been completed since this time. Accepts a date-time string or the keyword *now*.\n",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_task_list_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the user task list."
},
"description": "Globally unique identifier for the user task list.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getSubtasksForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_task_subtasks",
"description": {
"tagline": "Retrieve subtasks for a specific task in Asana.",
"detailed": "Use this tool to get a list of subtasks for a given task in Asana. Useful when you need to see all the subtasks associated with a task to track progress or manage workflow."
},
"return_annotation": "Compact representation of all subtasks for a task.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_global_id"
],
"description": "The unique identifier of the task to retrieve subtasks for.",
"endpoint_argument_name": "task_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"objects_per_page"
],
"description": "Specify the number of subtasks to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"page_offset",
"next_page_token"
],
"description": "An offset token for pagination to retrieve the next page of results. Pass the token from a previous paginated request. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"formatted_output"
],
"description": "Enable to receive the response in a 'pretty' format with line breaks and indentation. Useful for debugging. May increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}/subtasks",
"tags": [
"Tasks"
],
"summary": "Get subtasks from a task",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns a compact representation of all of the subtasks of a task.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createSubtaskForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_subtask_for_task",
"description": {
"tagline": "Create a new subtask under a specified parent task.",
"detailed": "This tool is used to create a new subtask and associate it with an existing parent task in Asana. It requires the 'tasks:write' scope and returns the complete record of the newly created subtask."
},
"return_annotation": "The detailed record of the newly created subtask.",
"arguments": [
{
"name": "parent_task_id",
"alternative_names": [
"task_identifier",
"task_global_id"
],
"description": "The ID of the parent task for which the new subtask will be created.",
"endpoint_argument_name": "task_gid"
},
{
"name": "new_subtask_details",
"alternative_names": [
"subtask_creation_data",
"subtask_information"
],
"description": "JSON object containing the details of the new subtask to create.",
"endpoint_argument_name": "requestBody"
},
{
"name": "included_optional_fields",
"alternative_names": [
"extra_properties",
"additional_fields"
],
"description": "Comma-separated list of properties to include in the response. Allows access to optional fields not included by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_response",
"pretty_format"
],
"description": "Set to true for a formatted JSON response with line breaks and indentation. Increases size and time; use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/subtasks",
"tags": [
"Tasks"
],
"summary": "Create a subtask",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nCreates a new subtask and adds it to the parent task. Returns the full record for the newly created subtask.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The new subtask to create."
},
"description": "The new subtask to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "The *task* is the basic object around which many operations in Asana are centered.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
},
"name": {
"type": "string",
"description": "The name of the task.",
"example": "Bug Task"
},
"resource_subtype": {
"type": "string",
"description": "The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\nThe resource_subtype `milestone` represent a single moment in time. This means tasks with this subtype cannot have a start_date.",
"enum": [
"default_task",
"milestone",
"approval"
],
"example": "default_task"
},
"created_by": {
"type": "object",
"description": "[Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource.",
"example": "1111"
},
"resource_type": {
"type": "string",
"description": "The type of resource.",
"example": "user"
}
}
}
}
},
{
"type": "object",
"properties": {
"approval_status": {
"type": "string",
"description": "*Conditional* Reflects the approval status of this task. This field is kept in sync with `completed`, meaning `pending` translates to false while `approved`, `rejected`, and `changes_requested` translate to true. If you set completed to true, this field will be set to `approved`.",
"enum": [
"pending",
"approved",
"rejected",
"changes_requested"
],
"example": "pending"
},
"assignee_status": {
"type": "string",
"description": "*Deprecated* Scheduling status of this task for the user it is assigned to. This field can only be set if the assignee is non-null. Setting this field to \"inbox\" or \"upcoming\" inserts it at the top of the section, while the other options will insert at the bottom.",
"enum": [
"today",
"upcoming",
"later",
"new",
"inbox"
],
"example": "upcoming"
},
"completed": {
"type": "boolean",
"description": "True if the task is currently marked complete, false if not.",
"example": false
},
"completed_at": {
"type": "string",
"description": "The time at which this task was completed, or null if the task is incomplete.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"completed_by": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
},
{
"type": "object",
"properties": {}
}
]
},
"created_at": {
"type": "string",
"description": "The time at which this resource was created.",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"dependencies": {
"type": "array",
"description": "[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that this task depends on. The objects contain only the gid of the dependency.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
}
}
}
},
"dependents": {
"type": "array",
"description": "[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that depend on this task. The objects contain only the ID of the dependent.",
"items": {
"type": "object",
"description": "A generic Asana Resource, containing a globally unique identifier.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "task"
}
}
}
},
"due_at": {
"type": "string",
"description": "The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`.",
"format": "date-time",
"example": "2019-09-15T02:06:58.147Z"
},
"due_on": {
"type": "string",
"description": "The localized date on which this task is due, or null if the task has no due date. This takes a date with `YYYY-MM-DD` format and should not be used together with `due_at`.",
"format": "date",
"example": "2019-09-15"
},
"external": {
"type": "object",
"description": "*OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options).\nThe external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details.",
"properties": {
"gid": {
"type": "string",
"example": "1234"
},
"data": {
"type": "string",
"example": "A blob of information."
}
}
},
"html_notes": {
"type": "string",
"description": "[Opt In](/docs/inputoutput-options). The notes of the text with formatting as HTML.",
"example": "<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>"
},
"hearted": {
"type": "boolean",
"description": "*Deprecated - please use liked instead* True if the task is hearted by the authorized user, false if not.",
"example": true
},
"hearts": {
"type": "array",
"description": "*Deprecated - please use likes instead* Array of likes for users who have hearted this task.",
"items": {
"type": "object",
"description": "An object to represent a user's like.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the object, as a string.",
"example": "12345"
},
"user": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
}
}
},
"is_rendered_as_separator": {
"type": "boolean",
"description": "[Opt In](/docs/inputoutput-options). In some contexts tasks can be rendered as a visual separator; for instance, subtasks can appear similar to [sections](/reference/sections) without being true `section` objects. If a `task` object is rendered this way in any context it will have the property `is_rendered_as_separator` set to `true`. This parameter only applies to regular tasks with `resource_subtype` of `default_task`. Tasks with `resource_subtype` of `milestone`, `approval`, or custom task types will not have this property and cannot be rendered as separators.",
"example": false
},
"liked": {
"type": "boolean",
"description": "True if the task is liked by the authorized user, false if not.",
"example": true
},
"likes": {
"type": "array",
"description": "Array of likes for users who have liked this task.",
"items": {
"type": "object",
"description": "An object to represent a user's like.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the object, as a string.",
"example": "12345"
},
"user": {
"type": "object",
"description": "A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "user"
},
"name": {
"type": "string",
"description": "*Read-only except when same user as requester*. The user's name.",
"example": "Greg Sanchez"
}
}
}
}
}
},
"memberships": {
"type": "array",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>projects:read</code>, <code>project_sections:read</code></p>\n\n*Create-only*. Array of projects this task is associated with and the section it is in. At task creation time, this array can be used to add the task to specific sections. After task creation, these associations can be modified using the `addProject` and `removeProject` endpoints. Note that over time, more types of memberships may be added to this property.",
"items": {
"type": "object",
"properties": {
"project": {
"type": "object",
"description": "A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "project"
},
"name": {
"type": "string",
"description": "Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Stuff to buy"
}
}
},
"section": {
"type": "object",
"description": "A *section* is a subdivision of a project that groups tasks together. It can either be a header above a list of tasks in a list view or a column in a board view of a project.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "section"
},
"name": {
"type": "string",
"description": "The name of the section (i.e. the text displayed as the section header).",
"example": "Next Actions"
}
}
}
}
}
},
"modified_at": {
"type": "string",
"description": "The time at which this task was last modified.\n\nThe following conditions will change `modified_at`:\n\n- story is created on a task\n- story is trashed on a task\n- attachment is trashed on a task\n- task is assigned or unassigned\n- custom field value is changed\n- the task itself is trashed\n- Or if any of the following fields are updated:\n - completed\n - name\n - due_date\n - description\n - attachments\n - items\n - schedule_status\n\nThe following conditions will _not_ change `modified_at`:\n\n- moving to a new container (project, portfolio, etc)\n- comments being added to the task (but the stories they generate\n _will_ affect `modified_at`)",
"format": "date-time",
"example": "2012-02-22T02:06:58.147Z"
},
"name": {
"type": "string",
"description": "Name of the task. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.",
"example": "Buy catnip"
},
"notes": {
"type": "string",
"description": "Free-form textual information associated with the task (i.e. its description).",
"example": "Mittens really likes the stuff from Humboldt."
},
"num_hearts": {
"type": "integer",
"description": "*Deprecated - please use likes instead* The number of users who have hearted this task.",
"example": 5
},
"num_likes": {
"type": "integer",
"description": "The number of users who have liked this task.",
"example": 5
},
"num_subtasks": {
"type": "integer",
"description": "[Opt In](/docs/inputoutput-options). The number of subtasks on this task.\n",
"example": 3
},
"start_at": {
"type": "string",
"description": "Date and time on which work begins for the task, or null if the task has no start time. This takes an ISO 8601 date string in UTC and should not be used together with `start_on`.\n*Note: `due_at` must be present in the request when setting or unsetting the `start_at` parameter.*",
"format": "date-time",
"example": "2019-09-14T02:06:58.147Z"
},
"start_on": {
"type": "string",
"description": "The day on which work begins for the task , or null if the task has no start date. This takes a date with `YYYY-MM-DD` format and should not be used together with `start_at`.\n*Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter.*",
"format": "date",
"example": "2019-09-14"
},
"actual_time_minutes": {
"type": "number",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>time_tracking_entries:read</code></p>\n\nThis value represents the sum of all the Time Tracking entries in the Actual Time field on a given Task. It is represented as a nullable long value.",
"example": 200
}
}
}
]
},
{
"type": "object",
"properties": {
"assignee": {
"type": "string",
"description": "Gid of a user.",
"example": "12345"
},
"assignee_section": {
"type": "string",
"description": "The *assignee section* is a subdivision of a project that groups tasks together in the assignee's \"My tasks\" list. It can either be a header above a list of tasks in a list view or a column in a board view of \"My tasks.\"\nThe `assignee_section` property will be returned in the response only if the request was sent by the user who is the assignee of the task. Note that you can only write to `assignee_section` with the gid of an existing section visible in the user's \"My tasks\" list.",
"example": "12345"
},
"custom_fields": {
"type": "object",
"description": "An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, object, or array (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.",
"properties": {},
"additionalProperties": {
"type": "string",
"description": "\"{custom_field_gid}\" => Value (can be text, a number, etc.). For date, use format \"YYYY-MM-DD\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z)."
}
},
"followers": {
"type": "array",
"description": "*Create-Only* An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user. In order to change followers on an existing task use `addFollowers` and `removeFollowers`.",
"items": {
"type": "string",
"description": "Gid of a user."
}
},
"parent": {
"type": "string",
"description": "Gid of a task.",
"example": "12345"
},
"projects": {
"type": "array",
"description": "*Create-Only* Array of project gids. In order to change projects on an existing task use `addProject` and `removeProject`.",
"items": {
"type": "string",
"description": "Gid of a project."
}
},
"tags": {
"type": "array",
"description": "*Create-Only* Array of tag gids. In order to change tags on an existing task use `addTag` and `removeTag`.",
"items": {
"type": "string",
"description": "Gid of a tag."
}
},
"workspace": {
"type": "string",
"description": "Gid of a workspace.",
"example": "12345"
},
"custom_type": {
"type": "string",
"description": "GID or globally-unique identifier of a custom_type.",
"example": "12345"
},
"custom_type_status_option": {
"type": "string",
"description": "GID or globally-unique identifier of a custom_type_status_option",
"example": "12345"
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The new subtask to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"allOf\": [\n {\n \"description\": \"The *task* is the basic object around which many operations in Asana are centered.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the task.\",\n \"type\": \"string\",\n \"example\": \"Bug Task\"\n },\n \"resource_subtype\": {\n \"type\": \"string\",\n \"description\": \"The subtype of this resource. Different subtypes retain many of the same fields and behavior, but may render differently in Asana or represent resources with different semantic meaning.\\nThe resource_subtype `milestone` represent a single moment in time. This means tasks with this subtype cannot have a start_date.\",\n \"enum\": [\n \"default_task\",\n \"milestone\",\n \"approval\"\n ],\n \"example\": \"default_task\"\n },\n \"created_by\": {\n \"type\": \"object\",\n \"readOnly\": true,\n \"description\": \"[Opt In](/docs/inputoutput-options). A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource.\",\n \"type\": \"string\",\n \"example\": \"1111\"\n },\n \"resource_type\": {\n \"description\": \"The type of resource.\",\n \"type\": \"string\",\n \"example\": \"user\"\n }\n }\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"approval_status\": {\n \"type\": \"string\",\n \"description\": \"*Conditional* Reflects the approval status of this task. This field is kept in sync with `completed`, meaning `pending` translates to false while `approved`, `rejected`, and `changes_requested` translate to true. If you set completed to true, this field will be set to `approved`.\",\n \"enum\": [\n \"pending\",\n \"approved\",\n \"rejected\",\n \"changes_requested\"\n ],\n \"example\": \"pending\"\n },\n \"assignee_status\": {\n \"description\": \"*Deprecated* Scheduling status of this task for the user it is assigned to. This field can only be set if the assignee is non-null. Setting this field to \\\"inbox\\\" or \\\"upcoming\\\" inserts it at the top of the section, while the other options will insert at the bottom.\",\n \"type\": \"string\",\n \"enum\": [\n \"today\",\n \"upcoming\",\n \"later\",\n \"new\",\n \"inbox\"\n ],\n \"example\": \"upcoming\"\n },\n \"completed\": {\n \"description\": \"True if the task is currently marked complete, false if not.\",\n \"type\": \"boolean\",\n \"example\": false\n },\n \"completed_at\": {\n \"description\": \"The time at which this task was completed, or null if the task is incomplete.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"nullable\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"completed_by\": {\n \"allOf\": [\n {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n },\n {\n \"readOnly\": true,\n \"nullable\": true\n }\n ]\n },\n \"created_at\": {\n \"description\": \"The time at which this resource was created.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"dependencies\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that this task depends on. The objects contain only the gid of the dependency.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n \"readOnly\": true\n },\n \"dependents\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). Array of resources referencing tasks that depend on this task. The objects contain only the ID of the dependent.\",\n \"type\": \"array\",\n \"items\": {\n \"description\": \"A generic Asana Resource, containing a globally unique identifier.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"task\",\n \"x-insert-after\": \"gid\"\n }\n }\n },\n \"readOnly\": true\n },\n \"due_at\": {\n \"description\": \"The UTC date and time on which this task is due, or null if the task has no due time. This takes an ISO 8601 date string in UTC and should not be used together with `due_on`.\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"example\": \"2019-09-15T02:06:58.147Z\",\n \"nullable\": true\n },\n \"due_on\": {\n \"description\": \"The localized date on which this task is due, or null if the task has no due date. This takes a date with `YYYY-MM-DD` format and should not be used together with `due_at`.\",\n \"type\": \"string\",\n \"format\": \"date\",\n \"example\": \"2019-09-15\",\n \"nullable\": true\n },\n \"external\": {\n \"description\": \"*OAuth Required*. *Conditional*. This field is returned only if external values are set or included by using [Opt In] (/docs/inputoutput-options).\\nThe external field allows you to store app-specific metadata on tasks, including a gid that can be used to retrieve tasks and a data blob that can store app-specific character strings. Note that you will need to authenticate with Oauth to access or modify this data. Once an external gid is set, you can use the notation `external:custom_gid` to reference your object anywhere in the API where you may use the original object gid. See the page on Custom External Data for more details.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"type\": \"string\",\n \"example\": \"1234\"\n },\n \"data\": {\n \"type\": \"string\",\n \"example\": \"A blob of information.\"\n }\n },\n \"example\": {\n \"gid\": \"my_gid\",\n \"data\": \"A blob of information\"\n }\n },\n \"html_notes\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The notes of the text with formatting as HTML.\",\n \"type\": \"string\",\n \"example\": \"<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>\"\n },\n \"hearted\": {\n \"description\": \"*Deprecated - please use liked instead* True if the task is hearted by the authorized user, false if not.\",\n \"type\": \"boolean\",\n \"example\": true,\n \"readOnly\": true\n },\n \"hearts\": {\n \"description\": \"*Deprecated - please use likes instead* Array of likes for users who have hearted this task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object to represent a user's like.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the object, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\"\n },\n \"user\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n }\n },\n \"readOnly\": true\n },\n \"is_rendered_as_separator\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). In some contexts tasks can be rendered as a visual separator; for instance, subtasks can appear similar to [sections](/reference/sections) without being true `section` objects. If a `task` object is rendered this way in any context it will have the property `is_rendered_as_separator` set to `true`. This parameter only applies to regular tasks with `resource_subtype` of `default_task`. Tasks with `resource_subtype` of `milestone`, `approval`, or custom task types will not have this property and cannot be rendered as separators.\",\n \"type\": \"boolean\",\n \"example\": false,\n \"readOnly\": true\n },\n \"liked\": {\n \"description\": \"True if the task is liked by the authorized user, false if not.\",\n \"type\": \"boolean\",\n \"example\": true\n },\n \"likes\": {\n \"description\": \"Array of likes for users who have liked this task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"description\": \"An object to represent a user's like.\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the object, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\"\n },\n \"user\": {\n \"description\": \"A *user* object represents an account in Asana that can be given access to various workspaces, projects, and tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"user\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"type\": \"string\",\n \"description\": \"*Read-only except when same user as requester*. The user's name.\",\n \"example\": \"Greg Sanchez\"\n }\n }\n }\n }\n },\n \"readOnly\": true\n },\n \"memberships\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>projects:read</code>, <code>project_sections:read</code></p>\\n\\n*Create-only*. Array of projects this task is associated with and the section it is in. At task creation time, this array can be used to add the task to specific sections. After task creation, these associations can be modified using the `addProject` and `removeProject` endpoints. Note that over time, more types of memberships may be added to this property.\",\n \"type\": \"array\",\n \"readOnly\": true,\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"description\": \"A *project* represents a prioritized list of tasks in Asana or a board with columns of tasks represented as cards. It exists in a single workspace or organization and is accessible to a subset of users in that workspace or organization, depending on its permissions.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"project\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"Name of the project. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Stuff to buy\"\n }\n }\n },\n \"section\": {\n \"description\": \"A *section* is a subdivision of a project that groups tasks together. It can either be a header above a list of tasks in a list view or a column in a board view of a project.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"section\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the section (i.e. the text displayed as the section header).\",\n \"type\": \"string\",\n \"example\": \"Next Actions\"\n }\n }\n }\n }\n }\n },\n \"modified_at\": {\n \"description\": \"The time at which this task was last modified.\\n\\nThe following conditions will change `modified_at`:\\n\\n- story is created on a task\\n- story is trashed on a task\\n- attachment is trashed on a task\\n- task is assigned or unassigned\\n- custom field value is changed\\n- the task itself is trashed\\n- Or if any of the following fields are updated:\\n - completed\\n - name\\n - due_date\\n - description\\n - attachments\\n - items\\n - schedule_status\\n\\nThe following conditions will _not_ change `modified_at`:\\n\\n- moving to a new container (project, portfolio, etc)\\n- comments being added to the task (but the stories they generate\\n _will_ affect `modified_at`)\",\n \"type\": \"string\",\n \"format\": \"date-time\",\n \"readOnly\": true,\n \"example\": \"2012-02-22T02:06:58.147Z\"\n },\n \"name\": {\n \"description\": \"Name of the task. This is generally a short sentence fragment that fits on a line in the UI for maximum readability. However, it can be longer.\",\n \"type\": \"string\",\n \"example\": \"Buy catnip\"\n },\n \"notes\": {\n \"description\": \"Free-form textual information associated with the task (i.e. its description).\",\n \"type\": \"string\",\n \"example\": \"Mittens really likes the stuff from Humboldt.\"\n },\n \"num_hearts\": {\n \"description\": \"*Deprecated - please use likes instead* The number of users who have hearted this task.\",\n \"type\": \"integer\",\n \"example\": 5,\n \"readOnly\": true\n },\n \"num_likes\": {\n \"description\": \"The number of users who have liked this task.\",\n \"type\": \"integer\",\n \"example\": 5,\n \"readOnly\": true\n },\n \"num_subtasks\": {\n \"description\": \"[Opt In](/docs/inputoutput-options). The number of subtasks on this task.\\n\",\n \"type\": \"integer\",\n \"example\": 3,\n \"readOnly\": true\n },\n \"start_at\": {\n \"description\": \"Date and time on which work begins for the task, or null if the task has no start time. This takes an ISO 8601 date string in UTC and should not be used together with `start_on`.\\n*Note: `due_at` must be present in the request when setting or unsetting the `start_at` parameter.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date-time\",\n \"example\": \"2019-09-14T02:06:58.147Z\"\n },\n \"start_on\": {\n \"description\": \"The day on which work begins for the task , or null if the task has no start date. This takes a date with `YYYY-MM-DD` format and should not be used together with `start_at`.\\n*Note: `due_on` or `due_at` must be present in the request when setting or unsetting the `start_on` parameter.*\",\n \"type\": \"string\",\n \"nullable\": true,\n \"format\": \"date\",\n \"example\": \"2019-09-14\"\n },\n \"actual_time_minutes\": {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>time_tracking_entries:read</code></p>\\n\\nThis value represents the sum of all the Time Tracking entries in the Actual Time field on a given Task. It is represented as a nullable long value.\",\n \"type\": \"number\",\n \"example\": 200,\n \"readOnly\": true,\n \"nullable\": true\n }\n }\n }\n ]\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"assignee\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a user.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"assignee_section\": {\n \"nullable\": true,\n \"type\": \"string\",\n \"description\": \"The *assignee section* is a subdivision of a project that groups tasks together in the assignee's \\\"My tasks\\\" list. It can either be a header above a list of tasks in a list view or a column in a board view of \\\"My tasks.\\\"\\nThe `assignee_section` property will be returned in the response only if the request was sent by the user who is the assignee of the task. Note that you can only write to `assignee_section` with the gid of an existing section visible in the user's \\\"My tasks\\\" list.\",\n \"example\": \"12345\"\n },\n \"custom_fields\": {\n \"description\": \"An object where each key is the GID of a custom field and its corresponding value is either an enum GID, string, number, object, or array (depending on the custom field type). See the [custom fields guide](/docs/custom-fields-guide) for details on creating and updating custom field values.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"type\": \"string\",\n \"description\": \"\\\"{custom_field_gid}\\\" => Value (can be text, a number, etc.). For date, use format \\\"YYYY-MM-DD\\\" (e.g., 2019-09-15). For date-time, use ISO 8601 date string in UTC (e.g., 2019-09-15T02:06:58.147Z).\"\n },\n \"example\": {\n \"5678904321\": \"On Hold\",\n \"4578152156\": \"Not Started\"\n }\n },\n \"followers\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user. In order to change followers on an existing task use `addFollowers` and `removeFollowers`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a user.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"parent\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a task.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"projects\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* Array of project gids. In order to change projects on an existing task use `addProject` and `removeProject`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a project.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"tags\": {\n \"type\": \"array\",\n \"description\": \"*Create-Only* Array of tag gids. In order to change tags on an existing task use `addTag` and `removeTag`.\",\n \"items\": {\n \"type\": \"string\",\n \"description\": \"Gid of a tag.\"\n },\n \"example\": [\n \"12345\"\n ]\n },\n \"workspace\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"Gid of a workspace.\",\n \"example\": \"12345\"\n },\n \"custom_type\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"GID or globally-unique identifier of a custom_type.\",\n \"example\": \"12345\",\n \"nullable\": true\n },\n \"custom_type_status_option\": {\n \"type\": \"string\",\n \"readOnly\": false,\n \"x-env-variable\": true,\n \"description\": \"GID or globally-unique identifier of a custom_type_status_option\",\n \"example\": \"12345\",\n \"nullable\": true\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "setParentForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_task_parent_asana",
"description": {
"tagline": "Update the parent of an Asana task.",
"detailed": "This tool updates the parent of a given task in Asana, allowing it to become a subtask of another task or to remove its existing parent. Utilize `insert_before` or `insert_after` to position subtasks appropriately, ensuring they are already part of the parent task. Requires 'tasks:write' scope."
},
"return_annotation": "The updated task record with new parent details.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_id",
"task_global_id"
],
"description": "The unique identifier of the task to operate on. It should be a string.",
"endpoint_argument_name": "task_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"show_additional_fields"
],
"description": "A list of optional task properties to include in the response. Use a list of property names.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "new_task_parent",
"alternative_names": [
"task_new_parent",
"assign_task_parent"
],
"description": "The new parent task ID for the task, or null to remove its current parent.",
"endpoint_argument_name": "data.parent"
},
{
"name": "subtask_to_insert_after",
"alternative_names": [
"insert_after_subtask",
"subtask_insert_position_after"
],
"description": "Specify the subtask ID to insert the task after, or use 'null' to insert at the beginning of the list.",
"endpoint_argument_name": "data.insert_after"
},
{
"name": "subtask_to_insert_before",
"alternative_names": [
"preceding_subtask",
"subtask_before"
],
"description": "Specify a subtask ID to insert the task before, or null to place at the end of the list.",
"endpoint_argument_name": "data.insert_before"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"human_readable_output"
],
"description": "Set this to true to receive formatted output with line breaks and indentation. This is useful for debugging but increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/setParent",
"tags": [
"Tasks"
],
"summary": "Set the parent of a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nUpdates the parent of a given task. This endpoint can be used to make a task a subtask of another task, or to remove its existing parent.\nWhen using `insert_before` and `insert_after`, at most one of those two options can be specified, and they must already be subtasks of the parent.\nReturns the complete, updated record of the affected [task](/reference/tasks#/task).",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.parent",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The new parent of the task, or `null` for no parent."
},
"description": "The new parent of the task, or `null` for no parent.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The new parent of the task, or `null` for no parent.",
"example": "987654"
},
"schema_required": false
},
{
"name": "data.insert_after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A subtask of the parent to insert the task after, or `null` to insert at the beginning of the list."
},
"description": "A subtask of the parent to insert the task after, or `null` to insert at the beginning of the list.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A subtask of the parent to insert the task after, or `null` to insert at the beginning of the list.",
"example": "null"
},
"schema_required": false
},
{
"name": "data.insert_before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A subtask of the parent to insert the task before, or `null` to insert at the end of the list."
},
"description": "A subtask of the parent to insert the task before, or `null` to insert at the end of the list.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A subtask of the parent to insert the task before, or `null` to insert at the end of the list.",
"example": "124816"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The new parent of the subtask.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"parent\": {\n \"description\": \"The new parent of the task, or `null` for no parent.\",\n \"type\": \"string\",\n \"example\": \"987654\"\n },\n \"insert_after\": {\n \"description\": \"A subtask of the parent to insert the task after, or `null` to insert at the beginning of the list.\",\n \"type\": \"string\",\n \"example\": \"null\"\n },\n \"insert_before\": {\n \"description\": \"A subtask of the parent to insert the task before, or `null` to insert at the end of the list.\",\n \"type\": \"string\",\n \"example\": \"124816\"\n }\n },\n \"required\": [\n \"parent\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getDependenciesForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_task_dependencies",
"description": {
"tagline": "Retrieve all dependencies for a specific Asana task.",
"detailed": "This tool is used to get all dependencies associated with a specific task in Asana. It should be utilized when there's a need to understand the dependencies that a task has, requiring tasks:read scope."
},
"return_annotation": "Compact representations of all task dependencies.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_global_id"
],
"description": "The global ID of the task to retrieve dependencies for in Asana.",
"endpoint_argument_name": "task_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"max_results_per_page"
],
"description": "Specify the number of task dependencies to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_token",
"result_offset_token"
],
"description": "The offset token for pagination, used to retrieve the next page of results. Pass this only if paginating a previous request.",
"endpoint_argument_name": "offset"
},
{
"name": "included_fields",
"alternative_names": [
"optional_properties",
"extra_fields"
],
"description": "Comma-separated list of properties to include in the response. Some properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_output",
"formatted_output"
],
"description": "Enable pretty formatting for output; useful for debugging. Increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}/dependencies",
"tags": [
"Tasks"
],
"summary": "Get dependencies from a task",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the compact representations of all of the dependencies of a task.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "addDependenciesForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_task_dependencies",
"description": {
"tagline": "Add dependencies to an Asana task.",
"detailed": "Marks specified tasks as dependencies for a given task in Asana, ensuring they aren't already marked. Suitable for managing task workflows where completion order is essential."
},
"return_annotation": "Confirmation of dependencies successfully added to a task.",
"arguments": [
{
"name": "task_id_to_modify",
"alternative_names": [
"target_task_id",
"modify_task_id"
],
"description": "The unique identifier of the task to which dependencies will be added.",
"endpoint_argument_name": "task_gid"
},
{
"name": "task_dependency_ids",
"alternative_names": [
"task_gids",
"dependency_task_ids"
],
"description": "An array of task GIDs that the current task depends on. These are required to establish dependencies between tasks in Asana.",
"endpoint_argument_name": "data.dependencies"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_pretty_output",
"pretty_formatting"
],
"description": "Enable pretty formatting for the response output. Provides improved readability with line breaking and indentation, recommended for debugging only.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/addDependencies",
"tags": [
"Tasks"
],
"summary": "Set dependencies for a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nMarks a set of tasks as dependencies of this task, if they are not already dependencies. *A task can have at most 30 dependents and dependencies combined*.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.dependencies",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of task gids that a task depends on."
},
"description": "An array of task gids that a task depends on.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of task gids that a task depends on.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The list of tasks to set as dependencies.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"dependencies\": {\n \"description\": \"An array of task gids that a task depends on.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"example\": {\n \"dependencies\": [\n \"133713\",\n \"184253\"\n ]\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeDependenciesForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_task_dependencies",
"description": {
"tagline": "Unlink dependencies from a specified task on Asana.",
"detailed": "Use this tool to remove a set of dependencies from a given task in Asana. Requires 'tasks:write' access scope."
},
"return_annotation": "Confirmation of task dependencies removal.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_gid_reference"
],
"description": "The unique identifier of the task to operate on for removing dependencies.",
"endpoint_argument_name": "task_gid"
},
{
"name": "task_dependency_ids_to_remove",
"alternative_names": [
"task_dependencies_to_unlink",
"dependency_ids_for_removal"
],
"description": "An array of task GIDs representing dependencies to be removed from the specified task.",
"endpoint_argument_name": "data.dependencies"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"pretty_print"
],
"description": "Set to true to receive a formatted, readable response. Useful for debugging, but increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/removeDependencies",
"tags": [
"Tasks"
],
"summary": "Unlink dependencies from a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nUnlinks a set of dependencies from this task.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.dependencies",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of task gids that a task depends on."
},
"description": "An array of task gids that a task depends on.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of task gids that a task depends on.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The list of tasks to unlink as dependencies.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"dependencies\": {\n \"description\": \"An array of task gids that a task depends on.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"example\": {\n \"dependencies\": [\n \"133713\",\n \"184253\"\n ]\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getDependentsForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_task_dependents",
"description": {
"tagline": "Retrieve the dependents of a specific task.",
"detailed": "Use this tool to obtain a list of all tasks dependent on a specified task in Asana. This tool requires the 'tasks:read' scope."
},
"return_annotation": "Compact representations of all dependents of a task.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_id",
"task_global_id"
],
"description": "The unique identifier of the task to retrieve dependents for.",
"endpoint_argument_name": "task_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"max_results_per_page"
],
"description": "Number of results to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_offset",
"page_token"
],
"description": "Offset token for paginated results. Use a token from a previous response to continue fetching results. Defaults to the first page if not provided.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"include_fields",
"extra_fields"
],
"description": "A list of optional properties to include in the response, specified as strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"pretty_response"
],
"description": "Enable this for JSON responses with readable line breaks and indentation. Use mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}/dependents",
"tags": [
"Tasks"
],
"summary": "Get dependents from a task",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the compact representations of all of the dependents of a task.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"offset",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"path",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"uri",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "addDependentsForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_dependents_to_task",
"description": {
"tagline": "Add dependents to an Asana task.",
"detailed": "Use this tool to mark a set of Asana tasks as dependents of another task, ensuring they are not already listed. Suitable for cases where task dependencies are being managed and a task can have up to 30 dependents and dependencies combined."
},
"return_annotation": "Confirmation of adding dependents to the task.",
"arguments": [
{
"name": "target_task_id",
"alternative_names": [
"task_id_to_modify",
"task_identifier"
],
"description": "The unique identifier for the task to add dependents to.",
"endpoint_argument_name": "task_gid"
},
{
"name": "dependent_task_gids",
"alternative_names": [
"task_dependencies",
"dependent_tasks"
],
"description": "An array of task GIDs to be marked as dependents for this task.",
"endpoint_argument_name": "data.dependents"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting_enabled",
"format_pretty_output"
],
"description": "Set to true to format the response for readability. Use during debugging, as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/addDependents",
"tags": [
"Tasks"
],
"summary": "Set dependents for a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nMarks a set of tasks as dependents of this task, if they are not already dependents. *A task can have at most 30 dependents and dependencies combined*.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.dependents",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of task gids that are dependents of the given task."
},
"description": "An array of task gids that are dependents of the given task.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of task gids that are dependents of the given task.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The list of tasks to add as dependents.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A set of dependent tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"dependents\": {\n \"description\": \"An array of task gids that are dependents of the given task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"example\": {\n \"dependents\": [\n \"133713\",\n \"184253\"\n ]\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeDependentsForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_task_dependents",
"description": {
"tagline": "Unlink dependents from an Asana task.",
"detailed": "Use this tool to unlink a set of dependents from a specific task in Asana. This is useful when you need to adjust task dependencies within your project management workflow."
},
"return_annotation": "Confirmation of dependents removal from the task.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_global_id"
],
"description": "The unique identifier of the task to operate on.",
"endpoint_argument_name": "task_gid"
},
{
"name": "dependents_task_ids",
"alternative_names": [
"task_gid_dependents",
"dependent_tasks_gids"
],
"description": "An array of task GIDs that should be unlinked from the specified task.",
"endpoint_argument_name": "data.dependents"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Set to true for prettified JSON output. Recommended only for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/removeDependents",
"tags": [
"Tasks"
],
"summary": "Unlink dependents from a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nUnlinks a set of dependents from this task.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.dependents",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of task gids that are dependents of the given task."
},
"description": "An array of task gids that are dependents of the given task.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of task gids that are dependents of the given task.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The list of tasks to remove as dependents.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A set of dependent tasks.\",\n \"type\": \"object\",\n \"properties\": {\n \"dependents\": {\n \"description\": \"An array of task gids that are dependents of the given task.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"example\": {\n \"dependents\": [\n \"133713\",\n \"184253\"\n ]\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addProjectForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_task_to_project",
"description": {
"tagline": "Add a task to a specified Asana project.",
"detailed": "Use this to add a task to a specific project within Asana, optionally specifying the location. It can also reorder a task within a project. Only one of `insert_before`, `insert_after`, or `section` should be used to specify the location. Tasks can be associated with up to 20 projects."
},
"return_annotation": "An empty data block indicating successful addition.",
"arguments": [
{
"name": "task_global_id",
"alternative_names": [
"task_identifier",
"task_id"
],
"description": "The unique global ID of the task to be operated on.",
"endpoint_argument_name": "task_gid"
},
{
"name": "project_id_to_add_task",
"alternative_names": [
"project_to_attach_task",
"target_project_id"
],
"description": "The unique identifier of the project to which the task will be added.",
"endpoint_argument_name": "data.project"
},
{
"name": "insert_after_task_id",
"alternative_names": [
"follow_task_id",
"insert_after_id"
],
"description": "Provide the ID of a task in the project to insert this task after, or use 'null' to insert at the beginning.",
"endpoint_argument_name": "data.insert_after"
},
{
"name": "insert_task_before",
"alternative_names": [
"insert_before_task",
"position_task_before"
],
"description": "Specify a task ID to insert the new task before it in the project, or use `null` to insert at the end of the list.",
"endpoint_argument_name": "data.insert_before"
},
{
"name": "target_section_id",
"alternative_names": [
"section_id",
"project_section"
],
"description": "The ID of the section in the project to insert the task at the bottom.",
"endpoint_argument_name": "data.section"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"formatted_output"
],
"description": "Set to true for formatted JSON output, making it more readable. Useful for debugging. Note: This increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/addProject",
"tags": [
"Tasks"
],
"summary": "Add a project to a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nAdds the task to the specified project, in the optional location\nspecified. If no location arguments are given, the task will be added to\nthe end of the project.\n\n`addProject` can also be used to reorder a task within a project or\nsection that already contains it.\n\nAt most one of `insert_before`, `insert_after`, or `section` should be\nspecified. Inserting into a section in an non-order-dependent way can be\ndone by specifying section, otherwise, to insert within a section in a\nparticular place, specify `insert_before` or `insert_after` and a task\nwithin the section to anchor the position of this task.\n\nA task can have at most 20 projects multi-homed to it.\n\nReturns an empty data block.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.project",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The project to add the task to."
},
"description": "The project to add the task to.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The project to add the task to.",
"example": "13579"
},
"schema_required": false
},
{
"name": "data.insert_after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A task in the project to insert the task after, or `null` to insert at the beginning of the list."
},
"description": "A task in the project to insert the task after, or `null` to insert at the beginning of the list.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A task in the project to insert the task after, or `null` to insert at the beginning of the list.",
"example": "124816"
},
"schema_required": false
},
{
"name": "data.insert_before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A task in the project to insert the task before, or `null` to insert at the end of the list."
},
"description": "A task in the project to insert the task before, or `null` to insert at the end of the list.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A task in the project to insert the task before, or `null` to insert at the end of the list.",
"example": "432134"
},
"schema_required": false
},
{
"name": "data.section",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A section in the project to insert the task into. The task will be inserted at the bottom of the section."
},
"description": "A section in the project to insert the task into. The task will be inserted at the bottom of the section.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A section in the project to insert the task into. The task will be inserted at the bottom of the section.",
"example": "987654"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The project to add the task to.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"description\": \"The project to add the task to.\",\n \"type\": \"string\",\n \"example\": \"13579\"\n },\n \"insert_after\": {\n \"description\": \"A task in the project to insert the task after, or `null` to insert at the beginning of the list.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"124816\"\n },\n \"insert_before\": {\n \"description\": \"A task in the project to insert the task before, or `null` to insert at the end of the list.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"432134\"\n },\n \"section\": {\n \"description\": \"A section in the project to insert the task into. The task will be inserted at the bottom of the section.\",\n \"type\": \"string\",\n \"nullable\": true,\n \"example\": \"987654\"\n }\n },\n \"required\": [\n \"project\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeProjectForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_task_from_project",
"description": {
"tagline": "Remove a task from the specified project in Asana.",
"detailed": "Removes a task from a specified project within Asana. The task continues to exist in the system but will no longer be associated with the project. Requires 'tasks:write' scope."
},
"return_annotation": "Confirmation that the task was removed from the project.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_gid_value",
"task_global_id"
],
"description": "The unique identifier of the task to remove from the project.",
"endpoint_argument_name": "task_gid"
},
{
"name": "project_to_remove_task_from",
"alternative_names": [
"target_project_to_unlink",
"project_gid_for_removal"
],
"description": "The identifier of the project from which the task will be removed.",
"endpoint_argument_name": "data.project"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response_format",
"formatted_output"
],
"description": "Enable 'pretty' response formatting. Provides line breaks and indentation for readability, useful mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/removeProject",
"tags": [
"Tasks"
],
"summary": "Remove a project from a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nRemoves the task from the specified project. The task will still exist in\nthe system, but it will not be in the project anymore.\n\nReturns an empty data block.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.project",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The project to remove the task from."
},
"description": "The project to remove the task from.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The project to remove the task from.",
"example": "13579"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The project to remove the task from.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"project\": {\n \"description\": \"The project to remove the task from.\",\n \"type\": \"string\",\n \"example\": \"13579\"\n }\n },\n \"required\": [\n \"project\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addTagForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_tag_to_task",
"description": {
"tagline": "Add a tag to a specific Asana task.",
"detailed": "This tool adds a tag to a specified task in Asana. It should be used when you need to organize tasks by attaching tags. Requires 'tasks:write' scope."
},
"return_annotation": "Confirms the tag has been added to the task.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_global_id"
],
"description": "The unique identifier of the task to which the tag should be added.",
"endpoint_argument_name": "task_gid"
},
{
"name": "tag_gid_to_add",
"alternative_names": [
"tag_id_to_add",
"tag_identifier"
],
"description": "The GID of the tag to be added to the specified task.",
"endpoint_argument_name": "data.tag"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"format_output"
],
"description": "Enable this to receive a prettified JSON response. Useful for debugging, but increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/addTag",
"tags": [
"Tasks"
],
"summary": "Add a tag to a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nAdds a tag to a task. Returns an empty data block.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.tag",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The tag's gid to add to the task."
},
"description": "The tag's gid to add to the task.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The tag's gid to add to the task.",
"example": "13579"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The tag to add to the task.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag\": {\n \"description\": \"The tag's gid to add to the task.\",\n \"type\": \"string\",\n \"example\": \"13579\"\n }\n },\n \"required\": [\n \"tag\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeTagForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_tag_from_task",
"description": {
"tagline": "Remove a tag from a task in Asana.",
"detailed": "Use this tool to remove a specific tag from a task in Asana. This action requires write access to tasks."
},
"return_annotation": "Confirmation of tag removal from task.",
"arguments": [
{
"name": "task_identifier",
"alternative_names": [
"task_id",
"target_task_gid"
],
"description": "The unique identifier of the task from which the tag should be removed.",
"endpoint_argument_name": "task_gid"
},
{
"name": "tag_gid_to_remove",
"alternative_names": [
"tag_id_to_remove",
"remove_tag_gid"
],
"description": "The GID of the tag to be removed from the task in Asana.",
"endpoint_argument_name": "data.tag"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"json_pretty_format",
"debug_pretty_print"
],
"description": "If true, formats the response for readability with line breaks and indentation. Use primarily for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/removeTag",
"tags": [
"Tasks"
],
"summary": "Remove a tag from a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nRemoves a tag from a task. Returns an empty data block.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.tag",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The tag's gid to remove from the task."
},
"description": "The tag's gid to remove from the task.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The tag's gid to remove from the task.",
"example": "13579"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The tag to remove from the task.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"tag\": {\n \"description\": \"The tag's gid to remove from the task.\",\n \"type\": \"string\",\n \"example\": \"13579\"\n }\n },\n \"required\": [\n \"tag\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addFollowersForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_followers_to_task",
"description": {
"tagline": "Adds followers to an Asana task.",
"detailed": "Use this tool to add one or more followers to a specific task in Asana. The request will return the updated task record, reflecting the changes."
},
"return_annotation": "The updated task record with the new followers.",
"arguments": [
{
"name": "task_gid",
"alternative_names": [
"task_id",
"task_identifier"
],
"description": "The unique identifier of the task to add followers to. This is required to specify which task the followers should be added to.",
"endpoint_argument_name": "task_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties",
"properties_to_include"
],
"description": "Comma-separated list of optional task properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "followers_identification",
"alternative_names": [
"user_identifiers",
"follower_ids"
],
"description": "An array of strings identifying users, which can be 'me', an email, or a user gid.",
"endpoint_argument_name": "data.followers"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"use_pretty_output"
],
"description": "Enables pretty formatting for the response, adding line breaks and indentation. Useful for debugging but increases response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/addFollowers",
"tags": [
"Tasks"
],
"summary": "Add followers to a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nAdds followers to a task. Returns an empty data block.\nEach task can be associated with zero or more followers in the system.\nRequests to add/remove followers, if successful, will return the complete updated task record, described above.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.followers",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The followers to add to the task.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"followers\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"13579\",\n \"321654\"\n ]\n }\n },\n \"required\": [\n \"followers\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeFollowerForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "asana_remove_follower_for_task",
"description": {
"tagline": "Remove followers from an Asana task.",
"detailed": "This tool removes specified followers from a given Asana task and returns the complete, updated task record. It should be called when you need to update a task by removing certain users as followers. Requires 'tasks:write' scope."
},
"return_annotation": "The updated task record after removing followers.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_global_id"
],
"description": "The unique identifier of the task from which followers are to be removed.",
"endpoint_argument_name": "task_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_properties",
"extra_task_fields"
],
"description": "A list of optional task properties to include in the response. Specify as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "followers_to_remove",
"alternative_names": [
"remove_followers_list",
"followers_remove_ids"
],
"description": "An array of strings identifying users to remove as followers. Acceptable formats: \"me\", an email, or a user's gid.",
"endpoint_argument_name": "data.followers"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_json",
"formatted_output"
],
"description": "Set to true for readable JSON with line breaks and indentation. Use for debugging; increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/removeFollowers",
"tags": [
"Tasks"
],
"summary": "Remove followers from a task",
"description": "<b>Required scope: </b><code>tasks:write</code>\n\nRemoves each of the specified followers from the task if they are following. Returns the complete, updated record for the affected task.",
"requires_security": true,
"oauth_scopes": [
"tasks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.followers",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user."
},
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "array",
"description": "An array of strings identifying users. These can either be the string \"me\", an email, or the gid of a user.",
"items": {
"type": "string"
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The followers to remove from the task.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"followers\": {\n \"description\": \"An array of strings identifying users. These can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"13579\",\n \"321654\"\n ]\n }\n },\n \"required\": [\n \"followers\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getTaskForCustomID",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "retrieve_task_by_custom_id",
"description": {
"tagline": "Retrieve a task using a custom ID in Asana.",
"detailed": "This tool retrieves details of a task from Asana using a given custom ID shortcode. It requires the necessary scope for accessing task details and may include additional scopes to access related memberships or time tracking information."
},
"return_annotation": "Task details based on the custom ID provided.",
"arguments": [
{
"name": "workspace_global_id",
"alternative_names": [
"workspace_id",
"organization_id"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "task_custom_id",
"alternative_names": [
"custom_task_id",
"unique_task_identifier"
],
"description": "The generated custom ID used to identify a specific task in Asana.",
"endpoint_argument_name": "custom_id"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/tasks/custom_id/{custom_id}",
"tags": [
"Tasks"
],
"summary": "Get a task for a given custom ID",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>memberships</code></td>\n <td><code>projects:read</code>, <code>project_sections:read</code></td>\n </tr>\n <tr>\n <td><code>actual_time_minutes</code></td>\n <td><code>time_tracking_entries:read</code></td>\n </tr>\n</table>\n\nReturns a task given a custom ID shortcode.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "custom_id",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Generated custom ID for a task."
},
"description": "Generated custom ID for a task.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "searchTasksForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "search_tasks_in_workspace",
"description": {
"tagline": "Search for tasks in an Asana workspace using complex filters.",
"detailed": "Utilize this tool to perform an advanced search for tasks within a specified Asana workspace. It supports complex filters and is available to premium Asana users. Use it to find tasks with specific criteria, including custom field parameters. Note that pagination needs to be handled manually due to search result variability."
},
"return_annotation": "Search results for tasks within a specified workspace.",
"arguments": [
{
"name": "workspace_global_id",
"alternative_names": [
"workspace_unique_id",
"organization_global_id"
],
"description": "Globally unique identifier for the workspace or organization where tasks are searched.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "search_text",
"alternative_names": [
"full_text_search",
"task_search_keyword"
],
"description": "Full-text search on task names and descriptions within the workspace.",
"endpoint_argument_name": "text"
},
{
"name": "task_resource_subtype",
"alternative_names": [
"task_type_filter",
"resource_type_selector"
],
"description": "Filter tasks by their resource subtype, such as 'default_task', 'milestone', or 'approval'.",
"endpoint_argument_name": "resource_subtype"
},
{
"name": "assignee_identifiers_any",
"alternative_names": [
"any_assignee_ids",
"assignee_ids_inclusive"
],
"description": "Provide a comma-separated list of user identifiers for any assignee to include in the search.",
"endpoint_argument_name": "assignee.any"
},
{
"name": "exclude_assignees",
"alternative_names": [
"not_assignees",
"assignees_exclusion"
],
"description": "Comma-separated list of user identifiers to exclude from the search results.",
"endpoint_argument_name": "assignee.not"
},
{
"name": "portfolio_ids_included",
"alternative_names": [
"included_portfolio_ids",
"portfolios_in_list"
],
"description": "A comma-separated list of portfolio IDs to include in the search.",
"endpoint_argument_name": "portfolios.any"
},
{
"name": "project_ids_any",
"alternative_names": [
"any_project_ids",
"project_ids_include_any"
],
"description": "Comma-separated list of project IDs to include in the search.",
"endpoint_argument_name": "projects.any"
},
{
"name": "exclude_projects_by_id",
"alternative_names": [
"omit_project_ids",
"remove_project_ids"
],
"description": "A comma-separated list of project IDs to exclude from the search results.",
"endpoint_argument_name": "projects.not"
},
{
"name": "filter_by_all_projects",
"alternative_names": [
"include_all_projects",
"match_projects_all"
],
"description": "Comma-separated list of project IDs to filter tasks that belong to all specified projects.",
"endpoint_argument_name": "projects.all"
},
{
"name": "include_sections_in_search",
"alternative_names": [
"search_sections",
"filter_by_sections"
],
"description": "A comma-separated list of section or column IDs to filter tasks in the search.",
"endpoint_argument_name": "sections.any"
},
{
"name": "exclude_sections_by_id",
"alternative_names": [
"omit_sections_by_id",
"skip_sections_by_id"
],
"description": "Comma-separated list of section or column IDs to exclude from the search results.",
"endpoint_argument_name": "sections.not"
},
{
"name": "filter_sections_all",
"alternative_names": [
"sections_all_filter",
"all_sections_filter"
],
"description": "Comma-separated list of section or column IDs to filter tasks by inclusion in all specified sections.",
"endpoint_argument_name": "sections.all"
},
{
"name": "include_any_tags_ids",
"alternative_names": [
"tags_filter_include_any",
"tags_ids_any"
],
"description": "Comma-separated list of tag IDs to include in the search filter.",
"endpoint_argument_name": "tags.any"
},
{
"name": "exclude_tags_by_ids",
"alternative_names": [
"omit_tags_by_ids",
"ignore_tags_by_ids"
],
"description": "A comma-separated list of tag IDs to exclude from the search results.",
"endpoint_argument_name": "tags.not"
},
{
"name": "all_tags_filters",
"alternative_names": [
"filter_by_all_tags",
"tags_filter_all"
],
"description": "Comma-separated list of tag IDs to filter tasks that have all specified tags.",
"endpoint_argument_name": "tags.all"
},
{
"name": "filter_by_any_team_ids",
"alternative_names": [
"team_id_filter_any",
"any_team_ids_filter"
],
"description": "Comma-separated list of team IDs to filter tasks associated with any of these teams.",
"endpoint_argument_name": "teams.any"
},
{
"name": "filter_by_any_follower_ids",
"alternative_names": [
"filter_tasks_by_followers",
"task_followers_filter"
],
"description": "Filter tasks by providing a comma-separated list of user IDs who are followers of the tasks.",
"endpoint_argument_name": "followers.any"
},
{
"name": "exclude_followers_by_user_ids",
"alternative_names": [
"omit_followers_user_ids",
"ignore_followers_ids"
],
"description": "Comma-separated list of user identifiers to exclude from the followers filter.",
"endpoint_argument_name": "followers.not"
},
{
"name": "created_by_users",
"alternative_names": [
"creator_user_ids",
"task_creators"
],
"description": "Comma-separated list of user IDs to filter tasks created by specific users.",
"endpoint_argument_name": "created_by.any"
},
{
"name": "exclude_created_by_user_ids",
"alternative_names": [
"omit_created_by_user_ids",
"filter_out_created_by_user_ids"
],
"description": "Comma-separated list of user IDs to exclude from the search results.",
"endpoint_argument_name": "created_by.not"
},
{
"name": "assigned_by_user_ids",
"alternative_names": [
"assigned_by_user_identifiers",
"task_assigners"
],
"description": "A comma-separated list of user IDs to filter tasks assigned by specific users.",
"endpoint_argument_name": "assigned_by.any"
},
{
"name": "exclude_assigned_by_users",
"alternative_names": [
"assigned_by_exclusion",
"exclude_assigner_users"
],
"description": "A comma-separated list of user IDs to exclude tasks assigned by these users.",
"endpoint_argument_name": "assigned_by.not"
},
{
"name": "excluded_liked_by_user_ids",
"alternative_names": [
"not_liked_user_ids",
"disliked_user_ids"
],
"description": "A comma-separated list of user IDs to exclude tasks liked by these users.",
"endpoint_argument_name": "liked_by.not"
},
{
"name": "exclude_tasks_commented_by_users",
"alternative_names": [
"exclude_tasks_from_user_comments",
"exclude_comments_by_users"
],
"description": "Comma-separated list of user identifiers to exclude tasks commented on by these users.",
"endpoint_argument_name": "commented_on_by.not"
},
{
"name": "filter_due_date_before",
"alternative_names": [
"due_date_earlier_than",
"before_due_date"
],
"description": "Specify tasks with a due date earlier than this ISO 8601 date string.",
"endpoint_argument_name": "due_on.before"
},
{
"name": "tasks_due_after_date",
"alternative_names": [
"due_after_date",
"task_due_date_after"
],
"description": "Specify an ISO 8601 date string to filter tasks due after this date.",
"endpoint_argument_name": "due_on.after"
},
{
"name": "due_date_on",
"alternative_names": [
"task_due_date",
"due_on_date"
],
"description": "Filter tasks due on a specific date using an ISO 8601 date string or specify `null` for tasks with no due date.",
"endpoint_argument_name": "due_on"
},
{
"name": "due_at_before",
"alternative_names": [
"due_before_datetime",
"before_due_at"
],
"description": "An ISO 8601 datetime string to filter tasks due before this date and time.",
"endpoint_argument_name": "due_at.before"
},
{
"name": "due_at_after_datetime",
"alternative_names": [
"after_due_at_datetime",
"due_datetime_after"
],
"description": "Specify the start date and time for tasks due after this point. Use an ISO 8601 datetime string.",
"endpoint_argument_name": "due_at.after"
},
{
"name": "end_date_before_start_on",
"alternative_names": [
"filter_start_on_before",
"limit_by_start_on_before"
],
"description": "Filter tasks starting before a specified date, using an ISO 8601 date string.",
"endpoint_argument_name": "start_on.before"
},
{
"name": "start_date_after",
"alternative_names": [
"begin_date_after",
"init_date_after"
],
"description": "An ISO 8601 date string to filter tasks starting after this date.",
"endpoint_argument_name": "start_on.after"
},
{
"name": "start_on_date",
"alternative_names": [
"start_date",
"task_start_date"
],
"description": "ISO 8601 date string specifying the start date of tasks to be searched, or `null` for unspecified.",
"endpoint_argument_name": "start_on"
},
{
"name": "created_on_before_date",
"alternative_names": [
"created_before_date",
"before_created_date"
],
"description": "Filter tasks created before a specific date using an ISO 8601 date string format.",
"endpoint_argument_name": "created_on.before"
},
{
"name": "created_after_date",
"alternative_names": [
"start_date_after",
"date_created_after"
],
"description": "Specify the earliest creation date for tasks using an ISO 8601 date string. Filters tasks created after this date.",
"endpoint_argument_name": "created_on.after"
},
{
"name": "created_on_date",
"alternative_names": [
"task_creation_date",
"date_of_creation"
],
"description": "Filter tasks by their creation date using an ISO 8601 date string or `null`.",
"endpoint_argument_name": "created_on"
},
{
"name": "created_at_before",
"alternative_names": [
"before_creation_datetime",
"before_created_at"
],
"description": "An ISO 8601 datetime string to filter tasks created before this date and time.",
"endpoint_argument_name": "created_at.before"
},
{
"name": "created_after_datetime",
"alternative_names": [
"creation_start_datetime",
"created_after_time"
],
"description": "Filter tasks created after this ISO 8601 datetime string.",
"endpoint_argument_name": "created_at.after"
},
{
"name": "completed_on_before_date",
"alternative_names": [
"before_date_completed_on",
"completed_before_date"
],
"description": "Filter tasks completed before a specific date using an ISO 8601 date string.",
"endpoint_argument_name": "completed_on.before"
},
{
"name": "completed_on_after_date",
"alternative_names": [
"completed_on_after_iso_date",
"completion_date_after"
],
"description": "Specify an ISO 8601 date to filter tasks completed after this date.",
"endpoint_argument_name": "completed_on.after"
},
{
"name": "completed_on_date",
"alternative_names": [
"task_completion_date",
"completion_date_filter"
],
"description": "Filter tasks by their completion date using an ISO 8601 date string or `null` for no specific date.",
"endpoint_argument_name": "completed_on"
},
{
"name": "completed_at_before_datetime",
"alternative_names": [
"before_completion_datetime",
"completed_before_datetime"
],
"description": "Filter tasks completed before the specified ISO 8601 datetime.",
"endpoint_argument_name": "completed_at.before"
},
{
"name": "completed_at_after",
"alternative_names": [
"completed_after",
"task_completed_since"
],
"description": "Specify an ISO 8601 datetime string to filter tasks completed after this date and time.",
"endpoint_argument_name": "completed_at.after"
},
{
"name": "before_modified_on_date",
"alternative_names": [
"modified_before_date",
"modification_date_before"
],
"description": "ISO 8601 date string to filter tasks modified before this date.",
"endpoint_argument_name": "modified_on.before"
},
{
"name": "filter_modified_date_start",
"alternative_names": [
"start_modified_date_filter",
"after_modified_date_filter"
],
"description": "Start date to filter tasks modified after this date in ISO 8601 format.",
"endpoint_argument_name": "modified_on.after"
},
{
"name": "last_modified_on",
"alternative_names": [
"modification_date",
"change_date"
],
"description": "ISO 8601 date string or `null` to filter tasks based on the modification date.",
"endpoint_argument_name": "modified_on"
},
{
"name": "modified_at_before_date",
"alternative_names": [
"before_modified_date_time",
"modified_before"
],
"description": "Filter tasks modified before this date. Use ISO 8601 datetime format.",
"endpoint_argument_name": "modified_at.before"
},
{
"name": "modified_after_datetime",
"alternative_names": [
"modified_since_datetime",
"after_modified_datetime"
],
"description": "Filter tasks modified after this ISO 8601 datetime string.",
"endpoint_argument_name": "modified_at.after"
},
{
"name": "task_sort_order",
"alternative_names": [
"sort_by_criteria",
"task_order_by"
],
"description": "Specify the sorting criteria for the task results. Options include 'due_date', 'created_at', 'completed_at', 'likes', or 'modified_at'. Defaults to 'modified_at'.",
"endpoint_argument_name": "sort_by"
},
{
"name": "included_optional_properties",
"alternative_names": [
"additional_fields",
"optional_data_inclusion"
],
"description": "List of optional properties to include for each returned task. Provide as comma-separated values.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"formatted_output"
],
"description": "Formats the response with line breaks and indentation for readability. Use for debugging, as it increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
},
{
"name": "filter_to_incomplete_tasks_with_dependents",
"alternative_names": [
"filter_blocking_tasks",
"show_incomplete_dependents"
],
"description": "Set to true to filter tasks to those that are incomplete and have dependents.",
"endpoint_argument_name": "is_blocking"
},
{
"name": "filter_tasks_with_incomplete_dependencies",
"alternative_names": [
"incomplete_dependent_tasks",
"tasks_with_unfinished_dependencies"
],
"description": "Filter tasks to those with incomplete dependencies. Use true to apply the filter.",
"endpoint_argument_name": "is_blocked"
},
{
"name": "filter_tasks_with_attachments",
"alternative_names": [
"tasks_with_attachments_only",
"include_attachment_filter"
],
"description": "Set to true to filter tasks that have attachments, and false to include all tasks regardless of attachments.",
"endpoint_argument_name": "has_attachment"
},
{
"name": "filter_to_completed_tasks",
"alternative_names": [
"show_only_completed_tasks",
"display_completed_tasks"
],
"description": "Set to true to filter and display only completed tasks.",
"endpoint_argument_name": "completed"
},
{
"name": "include_only_subtasks",
"alternative_names": [
"filter_subtasks_only",
"subtasks_only"
],
"description": "Set to true to include only subtasks in the results, false to include all tasks.",
"endpoint_argument_name": "is_subtask"
},
{
"name": "sort_results_ascending",
"alternative_names": [
"ascending_sort_order",
"sort_ascending_flag"
],
"description": "Set to true to sort search results in ascending order. Default is false.",
"endpoint_argument_name": "sort_ascending"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/tasks/search",
"tags": [
"Tasks"
],
"summary": "Search tasks in a workspace",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nTo mirror the functionality of the Asana web app's advanced search feature, the Asana API has a task search endpoint that allows you to build complex filters to find and retrieve the exact data you need.\n#### Premium access\nLike the Asana web product's advance search feature, this search endpoint will only be available to premium Asana users. A user is premium if any of the following is true:\n\n- The workspace in which the search is being performed is a premium workspace - The user is a member of a premium team inside the workspace\n\nEven if a user is only a member of a premium team inside a non-premium workspace, search will allow them to find data anywhere in the workspace, not just inside the premium team. Making a search request using credentials of a non-premium user will result in a `402 Payment Required` error.\n#### Pagination\nSearch results are not stable; repeating the same query multiple times may return the data in a different order, even if the data do not change. Because of this, the traditional [pagination](https://developers.asana.com/docs/#pagination) available elsewhere in the Asana API is not available here. However, you can paginate manually by sorting the search results by their creation time and then modifying each subsequent query to exclude data you have already seen. Page sizes are limited to a maximum of 100 items, and can be specified by the `limit` query parameter.\n#### Eventual consistency\nChanges in Asana (regardless of whether they\u2019re made though the web product or the API) are forwarded to our search infrastructure to be indexed. This process can take between 10 and 60 seconds to complete under normal operation, and longer during some production incidents. Making a change to a task that would alter its presence in a particular search query will not be reflected immediately. This is also true of the advanced search feature in the web product.\n#### Rate limits\nYou may receive a `429 Too Many Requests` response if you hit any of our [rate limits](https://developers.asana.com/docs/#rate-limits).\n#### Custom field parameters\n| Parameter name | Custom field type | Accepted type |\n|---|---|---|\n| custom_fields.{gid}.is_set | All | Boolean |\n| custom_fields.{gid}.value | Text | String |\n| custom_fields.{gid}.value | Number | Number |\n| custom_fields.{gid}.value | Enum | Enum option ID |\n| custom_fields.{gid}.starts_with | Text only | String |\n| custom_fields.{gid}.ends_with | Text only | String |\n| custom_fields.{gid}.contains | Text only | String |\n| custom_fields.{gid}.less_than | Number only | Number |\n| custom_fields.{gid}.greater_than | Number only | Number |\n\n\nFor example, if the gid of the custom field is 12345, these query parameter to find tasks where it is set would be `custom_fields.12345.is_set=true`. To match an exact value for an enum custom field, use the gid of the desired enum option and not the name of the enum option: `custom_fields.12345.value=67890`.\n\n**Not Supported**: searching for multiple exact matches of a custom field, searching for multi-enum custom field\n\n*Note: If you specify `projects.any` and `sections.any`, you will receive tasks for the project **and** tasks for the section. If you're looking for only tasks in a section, omit the `projects.any` from the request.*",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "text",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Performs full-text search on both task name and description"
},
"description": "Performs full-text search on both task name and description",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "resource_subtype",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"default_task",
"milestone",
"approval"
],
"properties": null,
"inner_properties": null,
"description": "Filters results by the task's resource_subtype"
},
"description": "Filters results by the task's resource_subtype",
"required": false,
"deprecated": false,
"default": "milestone",
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"enum": [
"default_task",
"milestone",
"approval"
]
},
"schema_required": false
},
{
"name": "assignee.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "assignee.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "portfolios.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of portfolio IDs"
},
"description": "Comma-separated list of portfolio IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "projects.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of project IDs"
},
"description": "Comma-separated list of project IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "projects.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of project IDs"
},
"description": "Comma-separated list of project IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "projects.all",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of project IDs"
},
"description": "Comma-separated list of project IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "sections.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of section or column IDs"
},
"description": "Comma-separated list of section or column IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "sections.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of section or column IDs"
},
"description": "Comma-separated list of section or column IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "sections.all",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of section or column IDs"
},
"description": "Comma-separated list of section or column IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "tags.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of tag IDs"
},
"description": "Comma-separated list of tag IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "tags.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of tag IDs"
},
"description": "Comma-separated list of tag IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "tags.all",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of tag IDs"
},
"description": "Comma-separated list of tag IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "teams.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of team IDs"
},
"description": "Comma-separated list of team IDs",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "followers.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "followers.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "created_by.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "created_by.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "assigned_by.any",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "assigned_by.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "liked_by.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "commented_on_by.not",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Comma-separated list of user identifiers"
},
"description": "Comma-separated list of user identifiers",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "due_on.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "due_on.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "due_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string or `null`"
},
"description": "ISO 8601 date string or `null`",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "due_at.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "due_at.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "start_on.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "start_on.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "start_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string or `null`"
},
"description": "ISO 8601 date string or `null`",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "created_on.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "created_on.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "created_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string or `null`"
},
"description": "ISO 8601 date string or `null`",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "created_at.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "created_at.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "completed_on.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "completed_on.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "completed_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string or `null`"
},
"description": "ISO 8601 date string or `null`",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "completed_at.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "completed_at.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "modified_on.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "modified_on.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "modified_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string or `null`"
},
"description": "ISO 8601 date string or `null`",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "modified_at.before",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "modified_at.after",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 datetime string"
},
"description": "ISO 8601 datetime string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date-time"
},
"schema_required": false
},
{
"name": "is_blocking",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to incomplete tasks with dependents"
},
"description": "Filter to incomplete tasks with dependents",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "is_blocked",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to tasks with incomplete dependencies"
},
"description": "Filter to tasks with incomplete dependencies",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "has_attachment",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to tasks with attachments"
},
"description": "Filter to tasks with attachments",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "completed",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to completed tasks"
},
"description": "Filter to completed tasks",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "is_subtask",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Filter to subtasks"
},
"description": "Filter to subtasks",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "sort_by",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"due_date",
"created_at",
"completed_at",
"likes",
"modified_at"
],
"properties": null,
"inner_properties": null,
"description": "One of `due_date`, `created_at`, `completed_at`, `likes`, or `modified_at`, defaults to `modified_at`"
},
"description": "One of `due_date`, `created_at`, `completed_at`, `likes`, or `modified_at`, defaults to `modified_at`",
"required": false,
"deprecated": false,
"default": "modified_at",
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"enum": [
"due_date",
"created_at",
"completed_at",
"likes",
"modified_at"
]
},
"schema_required": false
},
{
"name": "sort_ascending",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Default `false`"
},
"description": "Default `false`",
"required": false,
"deprecated": false,
"default": false,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"actual_time_minutes",
"approval_status",
"assignee",
"assignee.name",
"assignee_section",
"assignee_section.name",
"assignee_status",
"completed",
"completed_at",
"completed_by",
"completed_by.name",
"created_at",
"created_by",
"custom_fields",
"custom_fields.asana_created_field",
"custom_fields.created_by",
"custom_fields.created_by.name",
"custom_fields.currency_code",
"custom_fields.custom_label",
"custom_fields.custom_label_position",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.default_access_level",
"custom_fields.description",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.format",
"custom_fields.has_notifications_enabled",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.is_global_to_workspace",
"custom_fields.is_value_read_only",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.people_value",
"custom_fields.people_value.name",
"custom_fields.precision",
"custom_fields.privacy_setting",
"custom_fields.reference_value",
"custom_fields.reference_value.name",
"custom_fields.representation_type",
"custom_fields.resource_subtype",
"custom_fields.text_value",
"custom_fields.type",
"custom_type",
"custom_type.name",
"custom_type_status_option",
"custom_type_status_option.name",
"dependencies",
"dependents",
"due_at",
"due_on",
"external",
"external.data",
"followers",
"followers.name",
"hearted",
"hearts",
"hearts.user",
"hearts.user.name",
"html_notes",
"is_rendered_as_separator",
"liked",
"likes",
"likes.user",
"likes.user.name",
"memberships",
"memberships.project",
"memberships.project.name",
"memberships.section",
"memberships.section.name",
"modified_at",
"name",
"notes",
"num_hearts",
"num_likes",
"num_subtasks",
"parent",
"parent.created_by",
"parent.name",
"parent.resource_subtype",
"permalink_url",
"projects",
"projects.name",
"resource_subtype",
"start_at",
"start_on",
"tags",
"tags.name",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTeamMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_team_membership",
"description": {
"tagline": "Retrieve complete details for a team membership.",
"detailed": "Use this tool to obtain the full team membership record for a specific team membership in Asana. It requires the 'team_memberships:read' scope."
},
"return_annotation": "The complete team membership record for a specified membership.",
"arguments": [
{
"name": "team_membership_id",
"alternative_names": [
"membership_id",
"team_gid"
],
"description": "The unique identifier for the specific team membership to retrieve.",
"endpoint_argument_name": "team_membership_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"optional_properties"
],
"description": "A list of optional properties to include in the response, specified as strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"format_output_pretty"
],
"description": "Enable pretty formatting for the response with line breaks and indentation. Useful for debugging, but increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/team_memberships/{team_membership_gid}",
"tags": [
"Team memberships"
],
"summary": "Get a team membership",
"description": "<b>Required scope: </b><code>team_memberships:read</code>\n\n<table>\n <tr>\n <th>Field</th>\n <th>Required Scope</th>\n </tr>\n <tr>\n <td><code>team</code></td>\n <td><code>teams:read</code></td>\n </tr>\n</table>\n\nReturns the complete team membership record for a single team membership.",
"requires_security": true,
"oauth_scopes": [
"team_memberships:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"is_admin",
"is_guest",
"is_limited_access",
"team",
"team.name",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_membership_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"description": "",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTeamMemberships",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_team_memberships",
"description": {
"tagline": "Retrieve compact team membership records from Asana.",
"detailed": "Fetches compact records of team memberships from Asana when scope 'team_memberships:read' is required."
},
"return_annotation": "Compact team membership records.",
"arguments": [
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Specify the number of results to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"api_offset_token"
],
"description": "An offset token for pagination. Use a previously returned token to access subsequent pages. If omitted, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "team_identifier",
"alternative_names": [
"team_id",
"team_gid"
],
"description": "Globally unique identifier for the team in Asana.",
"endpoint_argument_name": "team"
},
{
"name": "user_identifier",
"alternative_names": [
"user_email_gid",
"user_string_id"
],
"description": "A string identifying a user. Use 'me', an email, or a user gid. Must be used with 'workspace'.",
"endpoint_argument_name": "user"
},
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"workspace_gid"
],
"description": "Globally unique identifier for the workspace. This parameter must be used with the user_id parameter.",
"endpoint_argument_name": "workspace"
},
{
"name": "optional_fields_to_include",
"alternative_names": [
"fields_to_include",
"include_optional_fields"
],
"description": "List the properties to include in the response, as some are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"pretty_output"
],
"description": "Return response in a readable format with line breaks and indentation. Ideal for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/team_memberships",
"tags": [
"Team memberships"
],
"summary": "Get team memberships",
"description": "<b>Required scope: </b><code>team_memberships:read</code>\n\nReturns compact team membership records.",
"requires_security": true,
"oauth_scopes": [
"team_memberships:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "team",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. This parameter must be used with the workspace parameter."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user. This parameter must be used with the workspace parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace. This parameter must be used with the user parameter."
},
"description": "Globally unique identifier for the workspace. This parameter must be used with the user parameter.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"is_admin",
"is_guest",
"is_limited_access",
"offset",
"path",
"team",
"team.name",
"uri",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTeamMembershipsForTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_team_members",
"description": {
"tagline": "Retrieve the team memberships for a given team in Asana.",
"detailed": "Use this tool to obtain a list of team memberships for a specific team in Asana, providing insight into who is part of the team."
},
"return_annotation": "List of compact team memberships for a specific team.",
"arguments": [
{
"name": "team_global_identifier",
"alternative_names": [
"team_id",
"team_identifier"
],
"description": "Globally unique identifier for the team to retrieve memberships for.",
"endpoint_argument_name": "team_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_limit",
"items_per_page"
],
"description": "Number of objects to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"offset_token"
],
"description": "Token to retrieve the next page of results. Use the offset provided in a previous response for pagination.",
"endpoint_argument_name": "offset"
},
{
"name": "optional_properties_to_include",
"alternative_names": [
"fields_to_include",
"additional_fields"
],
"description": "A list of optional properties to include in the results, given as an array of strings. Each string should be a property you wish to include.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_output_enabled",
"use_pretty_format"
],
"description": "Boolean to enable pretty formatted output with line breaks and indentation. Recommended for debugging due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/teams/{team_gid}/team_memberships",
"tags": [
"Team memberships"
],
"summary": "Get memberships from a team",
"description": "<b>Required scope: </b><code>team_memberships:read</code>\n\nReturns the compact team memberships for the team.",
"requires_security": true,
"oauth_scopes": [
"team_memberships:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"is_admin",
"is_guest",
"is_limited_access",
"offset",
"path",
"team",
"team.name",
"uri",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTeamMembershipsForUser",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_user_team_memberships",
"description": {
"tagline": "Retrieve team membership records for a specific user.",
"detailed": "This tool returns the compact team membership records for a specified user in Asana. It should be called when you need to obtain information about a user's team memberships. Requires 'team_memberships:read' scope."
},
"return_annotation": "Compact team membership records for the user.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_id",
"workspace_gid"
],
"description": "Globally unique identifier for the workspace in Asana.",
"endpoint_argument_name": "workspace"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"person_identifier"
],
"description": "A string identifying a user, which can be 'me', an email, or the user's gid.",
"endpoint_argument_name": "user_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_limit"
],
"description": "Number of records to return per page, ranging from 1 to 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_offset",
"result_offset"
],
"description": "Offset token for pagination. Use the offset to get the next page of results, returned from a previous paginated request.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"add_excluded_properties",
"expand_properties"
],
"description": "A list of optional properties to include in the response, specified as strings. Use to get excluded fields.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable pretty formatting for the response output with line breaks and indentation, useful for debugging. It increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/users/{user_gid}/team_memberships",
"tags": [
"Team memberships"
],
"summary": "Get memberships from a user",
"description": "<b>Required scope: </b><code>team_memberships:read</code>\n\nReturns the compact team membership records for the user.",
"requires_security": true,
"oauth_scopes": [
"team_memberships:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace."
},
"description": "Globally unique identifier for the workspace.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"is_admin",
"is_guest",
"is_limited_access",
"offset",
"path",
"team",
"team.name",
"uri",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "asana_create_team",
"description": {
"tagline": "Create a team in your current Asana workspace.",
"detailed": "This tool is used to create a new team within the specified Asana workspace. It should be called when you need to organize a group of projects or tasks under a new team entity."
},
"return_annotation": "Details about the newly created team in Asana.",
"arguments": [
{
"name": "team_data",
"alternative_names": [
"team_details",
"new_team_info"
],
"description": "JSON object containing the details of the team to create in Asana.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties_to_include",
"extra_properties_list"
],
"description": "Comma-separated list of optional properties to include in the response, enhancing the returned team's details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output_enabled",
"alternative_names": [
"pretty_format_enabled",
"enable_formatted_output"
],
"description": "Set to true to receive pretty, human-readable output with line breaks and indentation. Use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/teams",
"tags": [
"Teams"
],
"summary": "Create a team",
"description": "Creates a team within the current workspace.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"description",
"edit_team_name_or_description_access_level",
"edit_team_visibility_or_trash_team_access_level",
"endorsed",
"guest_invite_management_access_level",
"html_description",
"join_request_management_access_level",
"member_invite_management_access_level",
"name",
"organization",
"organization.name",
"permalink_url",
"team_content_management_access_level",
"team_member_removal_access_level",
"visibility"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The team to create."
},
"description": "The team to create.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>teams:read</code></p>\n\nA *team* is used to group related projects and people together within an organization. Each project in an organization is associated with a team.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "team"
},
"name": {
"type": "string",
"description": "The name of the team.",
"example": "Marketing"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The description of the team.\n",
"example": "All developers should be members of this team."
},
"html_description": {
"type": "string",
"description": "The description of the team with formatting as HTML.\n",
"example": "<body><em>All</em> developers should be members of this team.</body>"
},
"organization": {
"type": "string",
"description": "The organization/workspace the team belongs to. This must be the same organization you are in and cannot be changed once set.\n",
"example": "123456789"
},
"visibility": {
"type": "string",
"description": "The visibility of the team to users in the same organization\n",
"enum": [
"secret",
"request_to_join",
"public"
]
},
"edit_team_name_or_description_access_level": {
"type": "string",
"description": "Controls who can edit team name and description\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"edit_team_visibility_or_trash_team_access_level": {
"type": "string",
"description": "Controls who can edit team visibility and trash teams\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"member_invite_management_access_level": {
"type": "string",
"description": "Controls who can accept or deny member invites for a given team\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"guest_invite_management_access_level": {
"type": "string",
"description": "Controls who can accept or deny guest invites for a given team\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"join_request_management_access_level": {
"type": "string",
"description": "Controls who can accept or deny join team requests for a Membership by Request team. This field can only be updated when the team's `visibility` field is `request_to_join`.\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"team_member_removal_access_level": {
"type": "string",
"description": "Controls who can remove team members\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"team_content_management_access_level": {
"type": "string",
"description": "Controls who can create and share content with the team\n",
"enum": [
"no_restriction",
"only_team_admins"
]
},
"endorsed": {
"type": "boolean",
"description": "Whether the team has been endorsed\n",
"example": false
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The team to create.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>teams:read</code></p>\\n\\nA *team* is used to group related projects and people together within an organization. Each project in an organization is associated with a team.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"team\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the team.\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the team.\\n\",\n \"type\": \"string\",\n \"example\": \"All developers should be members of this team.\"\n },\n \"html_description\": {\n \"description\": \"The description of the team with formatting as HTML.\\n\",\n \"type\": \"string\",\n \"example\": \"<body><em>All</em> developers should be members of this team.</body>\"\n },\n \"organization\": {\n \"type\": \"string\",\n \"description\": \"The organization/workspace the team belongs to. This must be the same organization you are in and cannot be changed once set.\\n\",\n \"example\": \"123456789\"\n },\n \"visibility\": {\n \"description\": \"The visibility of the team to users in the same organization\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"secret\",\n \"request_to_join\",\n \"public\"\n ]\n },\n \"edit_team_name_or_description_access_level\": {\n \"description\": \"Controls who can edit team name and description\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"edit_team_visibility_or_trash_team_access_level\": {\n \"description\": \"Controls who can edit team visibility and trash teams\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"member_invite_management_access_level\": {\n \"description\": \"Controls who can accept or deny member invites for a given team\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"guest_invite_management_access_level\": {\n \"description\": \"Controls who can accept or deny guest invites for a given team\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"join_request_management_access_level\": {\n \"description\": \"Controls who can accept or deny join team requests for a Membership by Request team. This field can only be updated when the team's `visibility` field is `request_to_join`.\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"team_member_removal_access_level\": {\n \"description\": \"Controls who can remove team members\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"team_content_management_access_level\": {\n \"description\": \"Controls who can create and share content with the team\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"no_restriction\",\n \"only_team_admins\"\n ]\n },\n \"endorsed\": {\n \"description\": \"Whether the team has been endorsed\\n\",\n \"type\": \"boolean\",\n \"example\": false\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_team_details",
"description": {
"tagline": "Retrieve detailed information for a specific Asana team.",
"detailed": "Use this tool to obtain the complete details of a specific team in Asana. It requires the 'teams:read' scope and returns all available data for the team identified by its GID."
},
"return_annotation": "The full record for a single Asana team.",
"arguments": [
{
"name": "team_global_id",
"alternative_names": [
"team_identifier",
"team_unique_id"
],
"description": "Globally unique identifier for the specific Asana team to retrieve details for.",
"endpoint_argument_name": "team_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_properties",
"extra_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_formatting",
"format_pretty_response"
],
"description": "Set to true for human-readable formatting, with line breaks and indentation. Increases response time and size; use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/teams/{team_gid}",
"tags": [
"Teams"
],
"summary": "Get a team",
"description": "<b>Required scope: </b><code>teams:read</code>\n\nReturns the full record for a single team.",
"requires_security": true,
"oauth_scopes": [
"teams:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"description",
"edit_team_name_or_description_access_level",
"edit_team_visibility_or_trash_team_access_level",
"endorsed",
"guest_invite_management_access_level",
"html_description",
"join_request_management_access_level",
"member_invite_management_access_level",
"name",
"organization",
"organization.name",
"permalink_url",
"team_content_management_access_level",
"team_member_removal_access_level",
"visibility"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_team_in_workspace",
"description": {
"tagline": "Update a team within the current workspace.",
"detailed": "Use this tool to modify the details of a team in Asana's workspace. It should be called when you need to update team settings or information."
},
"return_annotation": "Confirmation of team update within the workspace.",
"arguments": [
{
"name": "team_global_id",
"alternative_names": [
"team_id",
"unique_team_identifier"
],
"description": "Globally unique identifier for the team to update in the workspace. Required to specify which team will be modified.",
"endpoint_argument_name": "team_gid"
},
{
"name": "team_update_data",
"alternative_names": [
"team_details_payload",
"team_edit_input"
],
"description": "JSON object containing the updated details of the team within the workspace.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"include_extra_properties"
],
"description": "List of optional properties to include in the response. Use a list format for specifying multiple properties.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_response",
"format_response_prettily"
],
"description": "Enable 'pretty' formatted output for easier readability in responses, increasing response size and time, mainly used for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/teams/{team_gid}",
"tags": [
"Teams"
],
"summary": "Update a team",
"description": "Updates a team within the current workspace.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"description",
"edit_team_name_or_description_access_level",
"edit_team_visibility_or_trash_team_access_level",
"endorsed",
"guest_invite_management_access_level",
"html_description",
"join_request_management_access_level",
"member_invite_management_access_level",
"name",
"organization",
"organization.name",
"permalink_url",
"team_content_management_access_level",
"team_member_removal_access_level",
"visibility"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The team to update."
},
"description": "The team to update.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "<p><strong style={{ color: \"#4573D2\" }}>Full object requires scope: </strong><code>teams:read</code></p>\n\nA *team* is used to group related projects and people together within an organization. Each project in an organization is associated with a team.",
"properties": {
"gid": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"resource_type": {
"type": "string",
"description": "The base type of this resource.",
"example": "team"
},
"name": {
"type": "string",
"description": "The name of the team.",
"example": "Marketing"
}
}
},
{
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The description of the team.\n",
"example": "All developers should be members of this team."
},
"html_description": {
"type": "string",
"description": "The description of the team with formatting as HTML.\n",
"example": "<body><em>All</em> developers should be members of this team.</body>"
},
"organization": {
"type": "string",
"description": "The organization/workspace the team belongs to. This must be the same organization you are in and cannot be changed once set.\n",
"example": "123456789"
},
"visibility": {
"type": "string",
"description": "The visibility of the team to users in the same organization\n",
"enum": [
"secret",
"request_to_join",
"public"
]
},
"edit_team_name_or_description_access_level": {
"type": "string",
"description": "Controls who can edit team name and description\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"edit_team_visibility_or_trash_team_access_level": {
"type": "string",
"description": "Controls who can edit team visibility and trash teams\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"member_invite_management_access_level": {
"type": "string",
"description": "Controls who can accept or deny member invites for a given team\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"guest_invite_management_access_level": {
"type": "string",
"description": "Controls who can accept or deny guest invites for a given team\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"join_request_management_access_level": {
"type": "string",
"description": "Controls who can accept or deny join team requests for a Membership by Request team. This field can only be updated when the team's `visibility` field is `request_to_join`.\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"team_member_removal_access_level": {
"type": "string",
"description": "Controls who can remove team members\n",
"enum": [
"all_team_members",
"only_team_admins"
]
},
"team_content_management_access_level": {
"type": "string",
"description": "Controls who can create and share content with the team\n",
"enum": [
"no_restriction",
"only_team_admins"
]
},
"endorsed": {
"type": "boolean",
"description": "Whether the team has been endorsed\n",
"example": false
}
}
}
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The team to update.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"allOf\": [\n {\n \"description\": \"<p><strong style={{ color: \\\"#4573D2\\\" }}>Full object requires scope: </strong><code>teams:read</code></p>\\n\\nA *team* is used to group related projects and people together within an organization. Each project in an organization is associated with a team.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"team\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the team.\",\n \"type\": \"string\",\n \"example\": \"Marketing\"\n }\n }\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"description\": {\n \"description\": \"The description of the team.\\n\",\n \"type\": \"string\",\n \"example\": \"All developers should be members of this team.\"\n },\n \"html_description\": {\n \"description\": \"The description of the team with formatting as HTML.\\n\",\n \"type\": \"string\",\n \"example\": \"<body><em>All</em> developers should be members of this team.</body>\"\n },\n \"organization\": {\n \"type\": \"string\",\n \"description\": \"The organization/workspace the team belongs to. This must be the same organization you are in and cannot be changed once set.\\n\",\n \"example\": \"123456789\"\n },\n \"visibility\": {\n \"description\": \"The visibility of the team to users in the same organization\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"secret\",\n \"request_to_join\",\n \"public\"\n ]\n },\n \"edit_team_name_or_description_access_level\": {\n \"description\": \"Controls who can edit team name and description\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"edit_team_visibility_or_trash_team_access_level\": {\n \"description\": \"Controls who can edit team visibility and trash teams\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"member_invite_management_access_level\": {\n \"description\": \"Controls who can accept or deny member invites for a given team\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"guest_invite_management_access_level\": {\n \"description\": \"Controls who can accept or deny guest invites for a given team\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"join_request_management_access_level\": {\n \"description\": \"Controls who can accept or deny join team requests for a Membership by Request team. This field can only be updated when the team's `visibility` field is `request_to_join`.\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"team_member_removal_access_level\": {\n \"description\": \"Controls who can remove team members\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"all_team_members\",\n \"only_team_admins\"\n ]\n },\n \"team_content_management_access_level\": {\n \"description\": \"Controls who can create and share content with the team\\n\",\n \"type\": \"string\",\n \"enum\": [\n \"no_restriction\",\n \"only_team_admins\"\n ]\n },\n \"endorsed\": {\n \"description\": \"Whether the team has been endorsed\\n\",\n \"type\": \"boolean\",\n \"example\": false\n }\n }\n }\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getTeamsForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_teams_for_workspace",
"description": {
"tagline": "Retrieve all teams for a specified Asana workspace.",
"detailed": "Use this tool to get a list of all teams in an Asana workspace visible to the user. Ensure the required scope 'teams:read' is granted."
},
"return_annotation": "List of teams visible to the user in the specified workspace.",
"arguments": [
{
"name": "workspace_global_id",
"alternative_names": [
"workspace_id",
"global_workspace_identifier"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "Number of teams to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"page_offset_token"
],
"description": "An offset token for pagination. Use a token from a previous request to retrieve the next page of results. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"opt_fields_list",
"fields_to_include"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"format_json_pretty"
],
"description": "Set to true to receive the response in a 'pretty' JSON format with line breaks and indentation. Useful for debugging but increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/teams",
"tags": [
"Teams"
],
"summary": "Get teams in a workspace",
"description": "<b>Required scope: </b><code>teams:read</code>\n\nReturns the compact records for all teams in the workspace visible to the authorized user.",
"requires_security": true,
"oauth_scopes": [
"teams:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"description",
"edit_team_name_or_description_access_level",
"edit_team_visibility_or_trash_team_access_level",
"endorsed",
"guest_invite_management_access_level",
"html_description",
"join_request_management_access_level",
"member_invite_management_access_level",
"name",
"offset",
"organization",
"organization.name",
"path",
"permalink_url",
"team_content_management_access_level",
"team_member_removal_access_level",
"uri",
"visibility"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTeamsForUser",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_teams_for_user",
"description": {
"tagline": "Get all teams assigned to a specific Asana user.",
"detailed": "Use this tool to retrieve a list of all teams that a specific user is part of in Asana. Requires the 'teams:read' permission scope."
},
"return_annotation": "Compact records of all teams assigned to the user.",
"arguments": [
{
"name": "filter_by_organization",
"alternative_names": [
"organization_filter",
"workspace_organization_filter"
],
"description": "Specify the workspace or organization to filter the teams on for the Asana user.",
"endpoint_argument_name": "organization"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_unique_id"
],
"description": "A string identifying a user. Accepts 'me', an email, or user's gid.",
"endpoint_argument_name": "user_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_per_page"
],
"description": "Number of team records to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"results_page_offset"
],
"description": "Offset token to navigate through paginated results. Use an offset from a previous request to get the next page. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties",
"extra_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"readable_format"
],
"description": "Set to true to format the response with line breaks and indentation. Useful for debugging but can increase response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/users/{user_gid}/teams",
"tags": [
"Teams"
],
"summary": "Get teams for a user",
"description": "<b>Required scope: </b><code>teams:read</code>\n\nReturns the compact records for all teams to which the given user is assigned.",
"requires_security": true,
"oauth_scopes": [
"teams:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "organization",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace or organization to filter teams on."
},
"description": "The workspace or organization to filter teams on.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"description",
"edit_team_name_or_description_access_level",
"edit_team_visibility_or_trash_team_access_level",
"endorsed",
"guest_invite_management_access_level",
"html_description",
"join_request_management_access_level",
"member_invite_management_access_level",
"name",
"offset",
"organization",
"organization.name",
"path",
"permalink_url",
"team_content_management_access_level",
"team_member_removal_access_level",
"uri",
"visibility"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "addUserForTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_user_to_team",
"description": {
"tagline": "Adds a user to a specified team on Asana.",
"detailed": "This tool should be called when you need to add an existing user to an Asana team. The caller must be a member of the team and the user being added must belong to the same organization as the team."
},
"return_annotation": "Complete team membership record of the added user.",
"arguments": [
{
"name": "team_unique_identifier",
"alternative_names": [
"team_global_id",
"team_identifier"
],
"description": "Globally unique identifier for the team to which the user is being added.",
"endpoint_argument_name": "team_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"extra_fields_inclusion",
"add_optional_properties"
],
"description": "Comma-separated list of properties to include in the response, which are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_email"
],
"description": "Identifies the user to add. Use \"me\", an email, or the user's global ID (gid).",
"endpoint_argument_name": "data.user"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"formatted_output",
"pretty_format"
],
"description": "Set to true for a readable response format with line breaks and indentation. Use mainly for debugging due to increased response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/teams/{team_gid}/addUser",
"tags": [
"Teams"
],
"summary": "Add a user to a team",
"description": "The user making this call must be a member of the team in order to add others. The user being added must exist in the same organization as the team.\n\nReturns the complete team membership record for the newly added user.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"is_admin",
"is_guest",
"is_limited_access",
"team",
"team.name",
"user",
"user.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"example": "12345"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The user to add to the team.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"description\": \"A user identification object for specification with the addUser/removeUser endpoints.\",\n \"properties\": {\n \"user\": {\n \"description\": \"A string identifying a user. This can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeUserForTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_user_from_team",
"description": {
"tagline": "Removes a user from a specified Asana team.",
"detailed": "Use this tool to remove a user from an Asana team. The request must be made by someone who is a member of the team."
},
"return_annotation": "Confirmation of user removal from the team.",
"arguments": [
{
"name": "team_global_identifier",
"alternative_names": [
"team_id",
"global_team_id"
],
"description": "Globally unique identifier for the team to remove a user from.",
"endpoint_argument_name": "team_gid"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_reference"
],
"description": "A string identifying the user to be removed. It can be 'me', an email, or the user's gid.",
"endpoint_argument_name": "data.user"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"optimize_for_readability",
"format_output"
],
"description": "Enable pretty JSON formatting for the response. This increases readability but also response size, so it's advisable for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/teams/{team_gid}/removeUser",
"tags": [
"Teams"
],
"summary": "Remove a user from a team",
"description": "The user making this call must be a member of the team in order to remove themselves or others.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"example": "12345"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The user to remove from the team.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"description\": \"A user identification object for specification with the addUser/removeUser endpoints.\",\n \"properties\": {\n \"user\": {\n \"description\": \"A string identifying a user. This can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getTimePeriod",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_time_period_record",
"description": {
"tagline": "Retrieve detailed information for a specific time period.",
"detailed": "Use this tool to get the full record of a single time period by specifying its identifier."
},
"return_annotation": "Detailed record of a specific time period.",
"arguments": [
{
"name": "time_period_id",
"alternative_names": [
"time_period_identifier",
"time_period_gid"
],
"description": "Globally unique identifier for the time period to retrieve its record.",
"endpoint_argument_name": "time_period_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_properties",
"extra_properties"
],
"description": "List of property names to include in the response. These properties are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"use_pretty_format"
],
"description": "Enable pretty formatting for output. Use only for debugging as it increases response size and processing time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/time_periods/{time_period_gid}",
"tags": [
"Time periods"
],
"summary": "Get a time period",
"description": "Returns the full record for a single time period.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"display_name",
"end_on",
"parent",
"parent.display_name",
"parent.end_on",
"parent.period",
"parent.start_on",
"period",
"start_on"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "time_period_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the time period."
},
"description": "Globally unique identifier for the time period.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTimePeriods",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_time_periods",
"description": {
"tagline": "Retrieve compact time period records from Asana.",
"detailed": "Use this tool to access and retrieve compact time period records from Asana's service when you need to handle or analyze time-related data."
},
"return_annotation": "Compact time period records from Asana.",
"arguments": [
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"workspace_guid"
],
"description": "Globally unique identifier for the Asana workspace.",
"endpoint_argument_name": "workspace"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"page_size"
],
"description": "The number of results to return per page, from 1 to 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"page_token",
"next_page_offset"
],
"description": "Offset token for pagination. Use the offset from a previous API response to retrieve the next page of results. If omitted, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "start_date",
"alternative_names": [
"begin_on_date",
"initiate_date"
],
"description": "Start date for the time period in ISO 8601 format. Determines the beginning of the time period records to be retrieved.",
"endpoint_argument_name": "start_on"
},
{
"name": "end_date",
"alternative_names": [
"end_on_date",
"end_date_iso"
],
"description": "The end date for time periods in ISO 8601 format. Specify the last date to include in the returned results.",
"endpoint_argument_name": "end_on"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "A list of optional property names to include in the response, specified as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_output",
"pretty_response_format"
],
"description": "Set to true to receive formatted, readable output mainly for debugging, increasing response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/time_periods",
"tags": [
"Time periods"
],
"summary": "Get time periods",
"description": "Returns compact time period records.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "start_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "end_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "ISO 8601 date string"
},
"description": "ISO 8601 date string",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"format": "date"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace."
},
"description": "Globally unique identifier for the workspace.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"display_name",
"end_on",
"offset",
"parent",
"parent.display_name",
"parent.end_on",
"parent.period",
"parent.start_on",
"path",
"period",
"start_on",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTimeTrackingEntriesForTask",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_time_tracking_entries",
"description": {
"tagline": "Retrieve time tracking entries for a specified task.",
"detailed": "Use this tool to get detailed time tracking entries associated with a specific task in Asana. It should be called when you need to analyze or review the time spent on a task by different users."
},
"return_annotation": "List of time tracking entries for a specific task.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_unique_id"
],
"description": "The unique identifier for the task to retrieve time tracking entries for.",
"endpoint_argument_name": "task_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"pagination_limit"
],
"description": "Number of time tracking entries to return per page, must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"page_offset",
"next_page_token"
],
"description": "Token for pagination; use to retrieve the next set of results. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"extra_task_fields",
"additional_task_properties"
],
"description": "Comma-separated list of optional properties to include in the response, enhancing the returned resource details.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_formatting",
"pretty_response_format"
],
"description": "Set to true for a readable, pretty-formatted output. Recommended for debugging as it may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/tasks/{task_gid}/time_tracking_entries",
"tags": [
"Time tracking entries"
],
"summary": "Get time tracking entries for a task",
"description": "<b>Required scope: </b><code>time_tracking_entries:read</code>\n\nReturns time tracking entries for a given task.",
"requires_security": true,
"oauth_scopes": [
"time_tracking_entries:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"attributable_to",
"attributable_to.name",
"created_by",
"created_by.name",
"duration_minutes",
"entered_on",
"offset",
"path",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createTimeTrackingEntry",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_time_tracking_entry",
"description": {
"tagline": "Create a time tracking entry on a task.",
"detailed": "Use this tool to log time against a specific task in Asana. It returns the information of the newly created time tracking entry, helping to keep task hours updated."
},
"return_annotation": "Details of the newly created time tracking entry.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_global_id"
],
"description": "The unique identifier for the task to operate on.",
"endpoint_argument_name": "task_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_additional_fields",
"include_extra_properties"
],
"description": "A list of optional property names to include in the response. This should be used to specify which additional fields you want to include in the return data format when creating a time tracking entry.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "duration_minutes_tracked",
"alternative_names": [
"minutes_logged",
"time_tracked_minutes"
],
"description": "Time in minutes tracked by the entry. Must be greater than 0.",
"endpoint_argument_name": "data.duration_minutes"
},
{
"name": "entry_logged_date",
"alternative_names": [
"date_of_entry",
"entry_date"
],
"description": "Optional. The date the time entry is logged. Defaults to today if not specified.",
"endpoint_argument_name": "data.entered_on"
},
{
"name": "project_gid_attribution",
"alternative_names": [
"project_identifier_for_time_attribution",
"attributed_project_gid"
],
"description": "Optional. The GID of the project to which the tracked time is attributed. If not provided, no project attribution is made.",
"endpoint_argument_name": "data.attributable_to"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"pretty_response"
],
"description": "Set to true to receive formatted, human-readable JSON responses. Useful for debugging as it may slow down the response.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/tasks/{task_gid}/time_tracking_entries",
"tags": [
"Time tracking entries"
],
"summary": "Create a time tracking entry",
"description": "Creates a time tracking entry on a given task.\n\nReturns the record of the newly created time tracking entry.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"approval_status",
"attributable_to",
"attributable_to.name",
"billable_status",
"created_at",
"created_by",
"created_by.name",
"description",
"duration_minutes",
"entered_on",
"task",
"task.created_by",
"task.name",
"task.resource_subtype"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "task_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The task to operate on."
},
"description": "The task to operate on.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.duration_minutes",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Time in minutes tracked by the entry. Must be greater than 0"
},
"description": "Time in minutes tracked by the entry. Must be greater than 0",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "integer",
"description": "Time in minutes tracked by the entry. Must be greater than 0",
"example": 12
},
"schema_required": false
},
{
"name": "data.entered_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Optional*. The day that this entry is logged on. Defaults to today if not specified"
},
"description": "*Optional*. The day that this entry is logged on. Defaults to today if not specified",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "*Optional*. The day that this entry is logged on. Defaults to today if not specified",
"format": "date",
"example": "2023-03-19"
},
"schema_required": false
},
{
"name": "data.attributable_to",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Optional*. The gid of the project which the time is attributable to."
},
"description": "*Optional*. The gid of the project which the time is attributable to.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "*Optional*. The gid of the project which the time is attributable to.",
"example": "987654"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"Information about the time tracking entry.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"duration_minutes\": {\n \"description\": \"Time in minutes tracked by the entry. Must be greater than 0\",\n \"type\": \"integer\",\n \"example\": 12\n },\n \"entered_on\": {\n \"description\": \"*Optional*. The day that this entry is logged on. Defaults to today if not specified\",\n \"type\": \"string\",\n \"format\": \"date\",\n \"example\": \"2023-03-19\"\n },\n \"attributable_to\": {\n \"type\": \"string\",\n \"description\": \"*Optional*. The gid of the project which the time is attributable to.\",\n \"example\": \"987654\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getTimeTrackingEntry",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_time_tracking_entry",
"description": {
"tagline": "Retrieve a time tracking entry from Asana.",
"detailed": "Use this tool to obtain the complete record of a specific time tracking entry in Asana. This should be called when detailed information about a particular time tracking task is needed."
},
"return_annotation": "Detailed time tracking entry record.",
"arguments": [
{
"name": "time_tracking_entry_id",
"alternative_names": [
"time_entry_id",
"entry_gid"
],
"description": "Globally unique identifier for the time tracking entry. Used to specify which entry to retrieve.",
"endpoint_argument_name": "time_tracking_entry_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_fields",
"additional_properties"
],
"description": "A list of property names to include as optional fields in the response. Provide properties as strings in a comma-separated format. Default properties are excluded unless explicitly specified here.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_print_response"
],
"description": "Enable to get the response in a readable format with line breaks and indentation. Use only for debugging, as it may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/time_tracking_entries/{time_tracking_entry_gid}",
"tags": [
"Time tracking entries"
],
"summary": "Get a time tracking entry",
"description": "<b>Required scope: </b><code>time_tracking_entries:read</code>\n\nReturns the complete time tracking entry record for a single time tracking entry.",
"requires_security": true,
"oauth_scopes": [
"time_tracking_entries:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"approval_status",
"attributable_to",
"attributable_to.name",
"billable_status",
"created_at",
"created_by",
"created_by.name",
"description",
"duration_minutes",
"entered_on",
"task",
"task.created_by",
"task.name",
"task.resource_subtype"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "time_tracking_entry_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the time tracking entry."
},
"description": "Globally unique identifier for the time tracking entry.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateTimeTrackingEntry",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_time_tracking_entry",
"description": {
"tagline": "Updates an existing time tracking entry in Asana.",
"detailed": "Use this tool to update specific fields of an existing time tracking entry in Asana by specifying only the fields you wish to change. It helps avoid overwriting changes made by others and returns the updated record."
},
"return_annotation": "The complete updated time tracking entry record.",
"arguments": [
{
"name": "time_tracking_entry_id",
"alternative_names": [
"tracking_entry_id",
"entry_id"
],
"description": "Globally unique identifier for the time tracking entry to be updated.",
"endpoint_argument_name": "time_tracking_entry_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"fields_to_include",
"additional_properties"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "duration_minutes_tracked",
"alternative_names": [
"minutes_tracked",
"logged_time_minutes"
],
"description": "The time in minutes tracked by the entry. Optional field.",
"endpoint_argument_name": "data.duration_minutes"
},
{
"name": "entry_logged_date",
"alternative_names": [
"entry_date",
"log_date"
],
"description": "The date the entry is logged. Defaults to today if not specified. Use format 'YYYY-MM-DD'.",
"endpoint_argument_name": "data.entered_on"
},
{
"name": "project_attributable_gid",
"alternative_names": [
"project_gid_attributable",
"attributable_project_gid"
],
"description": "Optional. The globally unique identifier (gid) of the project to which the time is attributable.",
"endpoint_argument_name": "data.attributable_to"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable formatted output for easier readability. Use mainly for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/time_tracking_entries/{time_tracking_entry_gid}",
"tags": [
"Time tracking entries"
],
"summary": "Update a time tracking entry",
"description": "A specific, existing time tracking entry can be updated by making a `PUT` request on\nthe URL for that time tracking entry. Only the fields provided in the `data` block\nwill be updated; any unspecified fields will remain unchanged.\n\nWhen using this method, it is best to specify only those fields you wish\nto change, or else you may overwrite changes made by another user since\nyou last retrieved the task.\n\nReturns the complete updated time tracking entry record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"approval_status",
"attributable_to",
"attributable_to.name",
"billable_status",
"created_at",
"created_by",
"created_by.name",
"description",
"duration_minutes",
"entered_on",
"task",
"task.created_by",
"task.name",
"task.resource_subtype"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "time_tracking_entry_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the time tracking entry."
},
"description": "Globally unique identifier for the time tracking entry.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.duration_minutes",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Optional*. Time in minutes tracked by the entry"
},
"description": "*Optional*. Time in minutes tracked by the entry",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "integer",
"description": "*Optional*. Time in minutes tracked by the entry",
"example": 12
},
"schema_required": false
},
{
"name": "data.entered_on",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Optional*. The day that this entry is logged on. Defaults to today if no day specified"
},
"description": "*Optional*. The day that this entry is logged on. Defaults to today if no day specified",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "*Optional*. The day that this entry is logged on. Defaults to today if no day specified",
"format": "date",
"example": "2023-03-19"
},
"schema_required": false
},
{
"name": "data.attributable_to",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "*Optional*. The gid of the project which the time is attributable to."
},
"description": "*Optional*. The gid of the project which the time is attributable to.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "*Optional*. The gid of the project which the time is attributable to.",
"example": "987654"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated fields for the time tracking entry.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"duration_minutes\": {\n \"description\": \"*Optional*. Time in minutes tracked by the entry\",\n \"type\": \"integer\",\n \"example\": 12\n },\n \"entered_on\": {\n \"description\": \"*Optional*. The day that this entry is logged on. Defaults to today if no day specified\",\n \"type\": \"string\",\n \"format\": \"date\",\n \"example\": \"2023-03-19\"\n },\n \"attributable_to\": {\n \"type\": \"string\",\n \"description\": \"*Optional*. The gid of the project which the time is attributable to.\",\n \"example\": \"987654\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "deleteTimeTrackingEntry",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_time_tracking_entry",
"description": {
"tagline": "Delete a specific time tracking entry in Asana.",
"detailed": "Use this tool to delete an existing time tracking entry by specifying its unique identifier in Asana. Useful for managing and correcting time tracking data."
},
"return_annotation": "Confirms deletion of a time tracking entry.",
"arguments": [
{
"name": "time_tracking_entry_identifier",
"alternative_names": [
"time_tracking_entry_id",
"entry_global_id"
],
"description": "Globally unique identifier for the time tracking entry to be deleted.",
"endpoint_argument_name": "time_tracking_entry_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_output",
"format_response_output"
],
"description": "Set to true for a formatted, readable JSON response. Use for debugging; increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/time_tracking_entries/{time_tracking_entry_gid}",
"tags": [
"Time tracking entries"
],
"summary": "Delete a time tracking entry",
"description": "A specific, existing time tracking entry can be deleted by making a `DELETE` request on\nthe URL for that time tracking entry.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "time_tracking_entry_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the time tracking entry."
},
"description": "Globally unique identifier for the time tracking entry.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getTimeTrackingEntries",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_time_tracking_data",
"description": {
"tagline": "Fetch time tracking entries from Asana.",
"detailed": "Retrieve a list of time tracking entries filtered by specific tasks, attributed projects, portfolios, or users in Asana. Requires the 'time_tracking_entries:read' scope."
},
"return_annotation": "List of time tracking entries for tasks, projects, portfolios, or users.",
"arguments": [
{
"name": "task_id",
"alternative_names": [
"task_identifier",
"task_unique_id"
],
"description": "Globally unique identifier for the task to filter time tracking entries by. This is used to specify the task whose time tracking entries you want to retrieve.",
"endpoint_argument_name": "task"
},
{
"name": "project_identifier_attribution",
"alternative_names": [
"project_attribution_id",
"attributed_project_id"
],
"description": "Unique ID for the project to filter time tracking entries by attribution.",
"endpoint_argument_name": "attributable_to"
},
{
"name": "portfolio_id",
"alternative_names": [
"portfolio_identifier",
"portfolio_guid"
],
"description": "Globally unique identifier for the portfolio to filter time tracking entries by.",
"endpoint_argument_name": "portfolio"
},
{
"name": "user_id_filter",
"alternative_names": [
"user_identifier_filter",
"filter_by_user_id"
],
"description": "Globally unique identifier for the user to filter time tracking entries by.",
"endpoint_argument_name": "user"
},
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_id",
"workspace_guid"
],
"description": "Globally unique identifier for the Asana workspace to filter the time tracking entries.",
"endpoint_argument_name": "workspace"
},
{
"name": "results_per_page",
"alternative_names": [
"per_page_limit",
"entries_limit"
],
"description": "Specify the number of time tracking entries to return per page. Acceptable values are between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"pagination_token"
],
"description": "Token to specify the starting point for retrieving the next page of results. Use the offset returned from a previous request. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_fields_list",
"fields_to_include"
],
"description": "Include optional properties in the response by listing field names as a comma-separated array. This enhances the response data detail.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_response"
],
"description": "Enable pretty formatting for the response. Useful for debugging, but increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/time_tracking_entries",
"tags": [
"Time tracking entries"
],
"summary": "Get multiple time tracking entries",
"description": "<b>Required scope: </b><code>time_tracking_entries:read</code>\n\nReturns a list of time tracking entries filtered to a task, attributed project, portfolio or user.",
"requires_security": true,
"oauth_scopes": [
"time_tracking_entries:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "task",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the task to filter time tracking entries by."
},
"description": "Globally unique identifier for the task to filter time tracking entries by.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "attributable_to",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the project the time tracking entries are attributed to."
},
"description": "Globally unique identifier for the project the time tracking entries are attributed to.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "portfolio",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the portfolio to filter time tracking entries by."
},
"description": "Globally unique identifier for the portfolio to filter time tracking entries by.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the user to filter time tracking entries by."
},
"description": "Globally unique identifier for the user to filter time tracking entries by.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace."
},
"description": "Globally unique identifier for the workspace.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"attributable_to",
"attributable_to.name",
"created_by",
"created_by.name",
"duration_minutes",
"entered_on",
"offset",
"path",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "typeaheadForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "workspace_typeahead_search",
"description": {
"tagline": "Retrieve workspace objects using a typeahead search.",
"detailed": "This tool fetches objects within a workspace via a typeahead search, providing quick, but not exhaustive or highly accurate results. It's useful for implementing auto-completion features by obtaining a compact representation of workspace objects, such as user, project, task, or project_template, ordered by relevance criteria specific to each type."
},
"return_annotation": "Compact representation of workspace objects based on a search query.",
"arguments": [
{
"name": "search_result_resource_type",
"alternative_names": [
"result_type",
"resource_type_selector"
],
"description": "Specify the type of objects to return in the typeahead search. Options: custom_field, goal, project, project_template, portfolio, tag, task, team, user. Only one type can be used at a time.",
"endpoint_argument_name": "resource_type"
},
{
"name": "workspace_id",
"alternative_names": [
"workspace_global_id",
"workspace_unique_identifier"
],
"description": "Globally unique identifier for the workspace or organization.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "resource_type",
"alternative_names": [
"object_type",
"entity_type"
],
"description": "Specify the type of workspace objects to return, such as 'custom_field', 'portfolio', 'project', 'tag', 'task', or 'user'.",
"endpoint_argument_name": "type"
},
{
"name": "search_query",
"alternative_names": [
"query_string",
"typeahead_query"
],
"description": "String to search for relevant workspace objects. An empty string will return results.",
"endpoint_argument_name": "query"
},
{
"name": "results_count",
"alternative_names": [
"number_of_results",
"max_results"
],
"description": "The number of results to return, ranging from 1 to 100. Default is 20.",
"endpoint_argument_name": "count"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_fields_inclusion",
"fields_to_include"
],
"description": "A list of properties to include in the response, set as a comma-separated list to include optional fields in the result.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"formatted_output"
],
"description": "Enable pretty format for the response with proper indentation. Use for debugging due to increased response size, but not recommended for production.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/typeahead",
"tags": [
"Typeahead"
],
"summary": "Get objects via typeahead",
"description": "<b>Required scope: </b><code>workspace.typeahead:read</code>\n\nRetrieves objects in the workspace based via an auto-completion/typeahead\nsearch algorithm. This feature is meant to provide results quickly, so do\nnot rely on this API to provide extremely accurate search results. The\nresult set is limited to a single page of results with a maximum size, so\nyou won\u2019t be able to fetch large numbers of results.\n\nThe typeahead search API provides search for objects from a single\nworkspace. This endpoint should be used to query for objects when\ncreating an auto-completion/typeahead search feature. This API is meant\nto provide results quickly and should not be relied upon for accurate or\nexhaustive search results. The results sets are limited in size and\ncannot be paginated.\n\nQueries return a compact representation of each object which is typically\nthe gid and name fields. Interested in a specific set of fields or all of\nthe fields?! Of course you are. Use field selectors to manipulate what\ndata is included in a response.\n\nResources with type `user` are returned in order of most contacted to\nleast contacted. This is determined by task assignments, adding the user\nto projects, and adding the user as a follower to tasks, messages,\netc.\n\nResources with type `project` are returned in order of recency. This is\ndetermined when the user visits the project, is added to the project, and\ncompletes tasks in the project.\n\nResources with type `task` are returned with priority placed on tasks\nthe user is following, but no guarantee on the order of those tasks.\n\nResources with type `project_template` are returned with priority\nplaced on favorited project templates.\n\nLeaving the `query` string empty or omitted will give you results, still\nfollowing the resource ordering above. This could be used to list users or\nprojects that are relevant for the requesting user's api token.",
"requires_security": true,
"oauth_scopes": [
"workspace.typeahead:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "resource_type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"custom_field",
"goal",
"project",
"project_template",
"portfolio",
"tag",
"task",
"team",
"user"
],
"properties": null,
"inner_properties": null,
"description": "The type of values the typeahead should return. You can choose from one of the following: `custom_field`, `goal`, `project`, `project_template`, `portfolio`, `tag`, `task`, `team`, and `user`. Note that unlike in the names of endpoints, the types listed here are in singular form (e.g. `task`). Using multiple types is not yet supported."
},
"description": "The type of values the typeahead should return. You can choose from one of the following: `custom_field`, `goal`, `project`, `project_template`, `portfolio`, `tag`, `task`, `team`, and `user`. Note that unlike in the names of endpoints, the types listed here are in singular form (e.g. `task`). Using multiple types is not yet supported.",
"required": true,
"deprecated": false,
"default": "user",
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"enum": [
"custom_field",
"goal",
"project",
"project_template",
"portfolio",
"tag",
"task",
"team",
"user"
]
},
"schema_required": false
},
{
"name": "type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"custom_field",
"portfolio",
"project",
"tag",
"task",
"user"
],
"properties": null,
"inner_properties": null,
"description": "*Deprecated: new integrations should prefer the resource_type field.*"
},
"description": "*Deprecated: new integrations should prefer the resource_type field.*",
"required": false,
"deprecated": false,
"default": "user",
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"enum": [
"custom_field",
"portfolio",
"project",
"tag",
"task",
"user"
]
},
"schema_required": false
},
{
"name": "query",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The string that will be used to search for relevant objects. If an empty string is passed in, the API will return results."
},
"description": "The string that will be used to search for relevant objects. If an empty string is passed in, the API will return results.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "count",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The number of results to return. The default is 20 if this parameter is omitted, with a minimum of 1 and a maximum of 100. If there are fewer results found than requested, all will be returned."
},
"description": "The number of results to return. The default is 20 if this parameter is omitted, with a minimum of 1 and a maximum of 100. If there are fewer results found than requested, all will be returned.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getUserTaskList",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_user_task_details",
"description": {
"tagline": "Retrieve the full record for a user task list.",
"detailed": "Call this tool to obtain detailed information about a specific user's task list in Asana. This requires read permissions on tasks."
},
"return_annotation": "Full record of a user's task list.",
"arguments": [
{
"name": "user_task_list_global_id",
"alternative_names": [
"user_task_list_id",
"task_list_global_identifier"
],
"description": "Globally unique identifier for the user task list in Asana.",
"endpoint_argument_name": "user_task_list_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"include_additional_fields",
"select_optional_fields"
],
"description": "Specify which optional properties should be included in the response. Provide as a list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"formatted_output"
],
"description": "Set to true for readable, indented JSON output. Use primarily for debugging due to increased response size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/user_task_lists/{user_task_list_gid}",
"tags": [
"User task lists"
],
"summary": "Get a user task list",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the full record for a user task list.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"name",
"owner",
"workspace"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_task_list_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the user task list."
},
"description": "Globally unique identifier for the user task list.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getUserTaskListForUser",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "fetch_user_tasks",
"description": {
"tagline": "Fetch the full task list record for a user from Asana.",
"detailed": "This tool retrieves the complete task list for a specified user in Asana, requiring the 'tasks:read' permission."
},
"return_annotation": "A user's complete task list record.",
"arguments": [
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"workspace_gid"
],
"description": "The ID of the workspace to retrieve the user's task list from in Asana.",
"endpoint_argument_name": "workspace"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_reference"
],
"description": "A string to identify the user, either \"me\", an email, or the user's gid.",
"endpoint_argument_name": "user_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "A list of optional properties to include in the response, specified as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"pretty_response"
],
"description": "Enable pretty formatting for JSON responses. When true, the response includes line breaks and indentation for better readability. This increases response size and processing time, so use primarily for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/users/{user_gid}/user_task_list",
"tags": [
"User task lists"
],
"summary": "Get a user's task list",
"description": "<b>Required scope: </b><code>tasks:read</code>\n\nReturns the full record for a user's task list.",
"requires_security": true,
"oauth_scopes": [
"tasks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace in which to get the user task list."
},
"description": "The workspace in which to get the user task list.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"name",
"owner",
"workspace"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getUsers",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_users",
"description": {
"tagline": "Retrieve Asana user records across workspaces.",
"detailed": "Fetches user records from Asana for all users in workspaces and organizations accessible to the authenticated user. An optional workspace ID can be provided to filter results. The data is sorted by user ID and requires the 'users:read' scope."
},
"return_annotation": "Returns user records for all accessible users in Asana.",
"arguments": [
{
"name": "workspace_id",
"alternative_names": [
"workspace_filter",
"organization_id"
],
"description": "The ID of the workspace or organization to filter users on.",
"endpoint_argument_name": "workspace"
},
{
"name": "filter_by_team_id",
"alternative_names": [
"team_identifier",
"team_filter_id"
],
"description": "The team ID to filter users in Asana. It allows you to specify a particular team to narrow down the user results.",
"endpoint_argument_name": "team"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"number_of_objects_per_page"
],
"description": "The number of user records to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"continuation_offset"
],
"description": "Offset token for pagination, used to fetch subsequent pages of results. Only valid when using an offset returned in a prior request.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "Comma-separated list of optional user properties to include in the response. Use this to fetch additional fields excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_print_output",
"format_readable_output"
],
"description": "Enable pretty formatting of the response for easier readability. Recommended for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/users",
"tags": [
"Users"
],
"summary": "Get multiple users",
"description": "<b>Required scope: </b><code>users:read</code>\n\nReturns the user records for all users in all workspaces and organizations accessible to the authenticated user. Accepts an optional workspace ID parameter.\nResults are sorted by user ID.",
"requires_security": true,
"oauth_scopes": [
"users:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace or organization ID to filter users on."
},
"description": "The workspace or organization ID to filter users on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "team",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The team ID to filter users on."
},
"description": "The team ID to filter users on.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"email",
"name",
"offset",
"path",
"photo",
"photo.image_1024x1024",
"photo.image_128x128",
"photo.image_21x21",
"photo.image_27x27",
"photo.image_36x36",
"photo.image_60x60",
"uri",
"workspaces",
"workspaces.name"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getUser",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_user_details",
"description": {
"tagline": "Retrieve detailed user information from Asana.",
"detailed": "Use this tool to get the complete user record for a specific user in Asana by providing their user ID. Ensure you have the required scope: users:read."
},
"return_annotation": "Full user record for the specified user ID.",
"arguments": [
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_key"
],
"description": "A string to identify a user, which can be 'me', an email, or a user's gid.",
"endpoint_argument_name": "user_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"fields_to_include"
],
"description": "Specify properties to include in the response using a comma-separated list of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"format_pretty"
],
"description": "Set to true to format the response for readability with line breaks and indentation. Recommended for debugging, as it may increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/users/{user_gid}",
"tags": [
"Users"
],
"summary": "Get a user",
"description": "<b>Required scope: </b><code>users:read</code>\n\nReturns the full user record for the single user with the provided ID.",
"requires_security": true,
"oauth_scopes": [
"users:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"email",
"name",
"photo",
"photo.image_1024x1024",
"photo.image_128x128",
"photo.image_21x21",
"photo.image_27x27",
"photo.image_36x36",
"photo.image_60x60",
"workspaces",
"workspaces.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getFavoritesForUser",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_user_favorites",
"description": {
"tagline": "Retrieve a user's favorites from a specified Asana workspace.",
"detailed": "This tool retrieves all of a user's favorites within a specified Asana workspace and of a given type. The results are ordered as they appear in the user's Asana sidebar and are limited to the current user associated with the authentication token."
},
"return_annotation": "User's favorites in the specified Asana workspace.",
"arguments": [
{
"name": "favorites_resource_type",
"alternative_names": [
"favorites_type",
"resource_favorites_type"
],
"description": "Specifies the type of favorites to return (e.g., 'portfolio', 'project').",
"endpoint_argument_name": "resource_type"
},
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"workspace_gid"
],
"description": "The unique identifier of the Asana workspace to retrieve favorites from.",
"endpoint_argument_name": "workspace"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_identifier_string"
],
"description": "String to identify a user: 'me', an email, or a user GID.",
"endpoint_argument_name": "user_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"max_results",
"page_size"
],
"description": "Specifies the number of objects to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"page_offset",
"result_offset"
],
"description": "An offset token for pagination. Use a token returned from a previous request to navigate pages. If not provided, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "Specify a list of optional properties to include in the response, separated by commas.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "pretty_output",
"alternative_names": [
"pretty_formatting",
"readable_output"
],
"description": "Set to true for readable, formatted output with line breaks and indentation, ideal for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/users/{user_gid}/favorites",
"tags": [
"Users"
],
"summary": "Get a user's favorites",
"description": "<b>Required scope: </b><code>users:read</code>\n\nReturns all of a user's favorites within a specified workspace and of a given type. The results are ordered exactly as they appear in the user's Asana sidebar in the web application. Note that this endpoint currently only returns favorites for the current user (i.e., the user associated with the authentication token).",
"requires_security": true,
"oauth_scopes": [
"users:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "resource_type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": [
"portfolio",
"project",
"tag",
"task",
"user",
"project_template"
],
"properties": null,
"inner_properties": null,
"description": "The resource type of favorites to be returned."
},
"description": "The resource type of favorites to be returned.",
"required": true,
"deprecated": false,
"default": "project",
"location": "query",
"content_type": null,
"json_schema": {
"type": "string",
"enum": [
"portfolio",
"project",
"tag",
"task",
"user",
"project_template"
]
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace in which to get favorites."
},
"description": "The workspace in which to get favorites.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"name",
"offset",
"path",
"uri"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getUsersForTeam",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_team_users_asana",
"description": {
"tagline": "Retrieve user records for a specific Asana team.",
"detailed": "This tool fetches the compact records of all users who are members of a specified Asana team. It should be called to obtain a list of team members, sorted alphabetically, with a limit of 2000 users."
},
"return_annotation": "A list of user records for a specified team.",
"arguments": [
{
"name": "team_global_identifier",
"alternative_names": [
"team_id",
"team_unique_id"
],
"description": "Globally unique identifier for the Asana team to retrieve users from.",
"endpoint_argument_name": "team_gid"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"page_offset_token",
"api_pagination_token"
],
"description": "Offset token for pagination. Use this token from a previous response to fetch the next page of results.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties",
"extra_fields"
],
"description": "Comma-separated list of properties you wish to include in the response. These are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"readable_output"
],
"description": "Enable pretty output with line breaks and indentation for readability. Recommended for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/teams/{team_gid}/users",
"tags": [
"Users"
],
"summary": "Get users in a team",
"description": "<b>Required scope: </b><code>users:read</code>\n\nReturns the compact records for all users that are members of the team.\nResults are sorted alphabetically and limited to 2000. For more results use the `/users` endpoint.",
"requires_security": true,
"oauth_scopes": [
"users:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"email",
"name",
"photo",
"photo.image_1024x1024",
"photo.image_128x128",
"photo.image_21x21",
"photo.image_27x27",
"photo.image_36x36",
"photo.image_60x60",
"workspaces",
"workspaces.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "team_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the team."
},
"description": "Globally unique identifier for the team.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getUsersForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_workspace_users",
"description": {
"tagline": "Retrieve all users from a specified workspace.",
"detailed": "Fetches compact records for all users in a specific Asana workspace or organization. Suitable for retrieving member lists sorted alphabetically, limited to 2000 users."
},
"return_annotation": "Compact records of users in the workspace.",
"arguments": [
{
"name": "workspace_unique_id",
"alternative_names": [
"workspace_global_id",
"organization_id"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_token",
"continuation_offset"
],
"description": "An offset token used for paginating results. It allows you to retrieve the next page of results by using a token returned from a previous request. If omitted, the first page is returned.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"optional_properties",
"extra_fields"
],
"description": "List properties to include in the response. Provide these as an array of strings to retrieve additional user information beyond the default fields.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response_format",
"pretty_output_format"
],
"description": "Set to true for a \"pretty\" response with indentation and line breaks. Recommended for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/users",
"tags": [
"Users"
],
"summary": "Get users in a workspace or organization",
"description": "<b>Required scope: </b><code>users:read</code>\n\nReturns the compact records for all users in the specified workspace or organization.\nResults are sorted alphabetically and limited to 2000. For more results use the `/users` endpoint.",
"requires_security": true,
"oauth_scopes": [
"users:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"custom_fields",
"custom_fields.date_value",
"custom_fields.date_value.date",
"custom_fields.date_value.date_time",
"custom_fields.display_value",
"custom_fields.enabled",
"custom_fields.enum_options",
"custom_fields.enum_options.color",
"custom_fields.enum_options.enabled",
"custom_fields.enum_options.name",
"custom_fields.enum_value",
"custom_fields.enum_value.color",
"custom_fields.enum_value.enabled",
"custom_fields.enum_value.name",
"custom_fields.id_prefix",
"custom_fields.input_restrictions",
"custom_fields.is_formula_field",
"custom_fields.multi_enum_values",
"custom_fields.multi_enum_values.color",
"custom_fields.multi_enum_values.enabled",
"custom_fields.multi_enum_values.name",
"custom_fields.name",
"custom_fields.number_value",
"custom_fields.representation_type",
"custom_fields.text_value",
"custom_fields.type",
"email",
"name",
"photo",
"photo.image_1024x1024",
"photo.image_128x128",
"photo.image_21x21",
"photo.image_27x27",
"photo.image_36x36",
"photo.image_60x60",
"workspaces",
"workspaces.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getWebhooks",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_asana_webhooks",
"description": {
"tagline": "Retrieve all registered Asana webhooks for a workspace.",
"detailed": "Use this tool to get a compact representation of all webhooks registered by your app for the authenticated user in a specified Asana workspace. Requires the 'webhooks:read' scope."
},
"return_annotation": "Compact list of registered webhooks in Asana for the user.",
"arguments": [
{
"name": "workspace_id",
"alternative_names": [
"workspace_identifier",
"asana_workspace_id"
],
"description": "The unique identifier of the Asana workspace to query for webhooks.",
"endpoint_argument_name": "workspace"
},
{
"name": "results_per_page",
"alternative_names": [
"items_per_page",
"objects_per_page"
],
"description": "Number of webhooks to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset_token",
"alternative_names": [
"next_page_offset",
"page_continuation_token"
],
"description": "An offset token to retrieve the next page of results. Use the token from a previous API response for pagination.",
"endpoint_argument_name": "offset"
},
{
"name": "specific_resource",
"alternative_names": [
"target_resource",
"resource_id"
],
"description": "Specify the resource ID to filter webhooks for that particular resource.",
"endpoint_argument_name": "resource"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"optional_properties_inclusion"
],
"description": "Comma-separated list of properties to include in the response, which are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"pretty_print_response"
],
"description": "Set to true for a readable, pretty-formatted JSON output. Increases response time and size. Use mainly for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/webhooks",
"tags": [
"Webhooks"
],
"summary": "Get multiple webhooks",
"description": "<b>Required scope: </b><code>webhooks:read</code>\n\nGet the compact representation of all webhooks your app has registered for the authenticated user in the given workspace.",
"requires_security": true,
"oauth_scopes": [
"webhooks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "workspace",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The workspace to query for webhooks in."
},
"description": "The workspace to query for webhooks in.",
"required": true,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "resource",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Only return webhooks for the given resource."
},
"description": "Only return webhooks for the given resource.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"active",
"created_at",
"delivery_retry_count",
"failure_deletion_timestamp",
"filters",
"filters.action",
"filters.fields",
"filters.resource_subtype",
"last_failure_at",
"last_failure_content",
"last_success_at",
"next_attempt_after",
"offset",
"path",
"resource",
"resource.name",
"target",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "createWebhook",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "create_asana_webhook",
"description": {
"tagline": "Initiates the creation of a webhook in Asana.",
"detailed": "This tool initiates the creation of a webhook in Asana and requires the 'webhooks:write' scope. It involves a confirmation handshake for setup. Ensure your server can handle asynchronous requests to acknowledge the handshake for successful creation. Invalid hostnames like localhost are not allowed."
},
"return_annotation": "Details of the created Asana webhook, including status.",
"arguments": [
{
"name": "webhook_workspace_and_target",
"alternative_names": [
"webhook_data",
"webhook_payload"
],
"description": "JSON object detailing the Asana webhook workspace including resource ID, target URL, and optional filters.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields",
"extra_return_fields"
],
"description": "Specify properties to include in the response. Provide a list of property names to include those optional properties in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_response_pretty",
"pretty_json_output"
],
"description": "If true, provides the response in a pretty format with line breaks and indentation. Use it for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/webhooks",
"tags": [
"Webhooks"
],
"summary": "Establish a webhook",
"description": "<b>Required scope: </b><code>webhooks:write</code>\n\nEstablishing a webhook is a two-part process. First, a simple HTTP POST\nrequest initiates the creation similar to creating any other resource.\n\nNext, in the middle of this request comes the confirmation handshake.\nWhen a webhook is created, we will send a test POST to the target with an\n`X-Hook-Secret` header. The target must respond with a `200 OK` or `204\nNo Content` and a matching `X-Hook-Secret` header to confirm that this\nwebhook subscription is indeed expected. We strongly recommend storing\nthis secret to be used to verify future webhook event signatures.\n\nThe POST request to create the webhook will then return with the status\nof the request. If you do not acknowledge the webhook\u2019s confirmation\nhandshake it will fail to setup, and you will receive an error in\nresponse to your attempt to create it. This means you need to be able to\nreceive and complete the webhook *while* the POST request is in-flight\n(in other words, have a server that can handle requests asynchronously).\n\nInvalid hostnames like localhost will receive a 403 Forbidden status code.\n\n```\n# Request\ncurl -H \"Authorization: Bearer <personal_access_token>\" \\\n-X POST https://app.asana.com/api/1.0/webhooks \\\n-d \"resource=8675309\" \\\n-d \"target=https://example.com/receive-webhook/7654\"\n```\n\n```\n# Handshake sent to https://example.com/\nPOST /receive-webhook/7654\nX-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81\n```\n\n```\n# Handshake response sent by example.com\nHTTP/1.1 200\nX-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81\n```\n\n```\n# Response\nHTTP/1.1 201\n{\n \"data\": {\n \"gid\": \"43214\",\n \"resource\": {\n \"gid\": \"8675309\",\n \"name\": \"Bugs\"\n },\n \"target\": \"https://example.com/receive-webhook/7654\",\n \"active\": false,\n \"last_success_at\": null,\n \"last_failure_at\": null,\n \"last_failure_content\": null\n },\n \"X-Hook-Secret\": \"b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81\"\n}\n```",
"requires_security": true,
"oauth_scopes": [
"webhooks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"active",
"created_at",
"delivery_retry_count",
"failure_deletion_timestamp",
"filters",
"filters.action",
"filters.fields",
"filters.resource_subtype",
"last_failure_at",
"last_failure_content",
"last_success_at",
"next_attempt_after",
"resource",
"resource.name",
"target"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"resource": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A resource ID to subscribe to. Many Asana resources are valid to create webhooks on, but higher-level resources require filters."
},
"target": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The URL to receive the HTTP POST. The full URL will be used to deliver events from this webhook (including parameters) which allows encoding of application-specific state when the webhook is created."
},
"filters": {
"val_type": "array",
"inner_val_type": "json",
"enum": null,
"properties": null,
"inner_properties": {},
"description": "An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server."
}
},
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The webhook workspace and target."
},
"description": "The webhook workspace and target.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"resource": {
"type": "string",
"description": "A resource ID to subscribe to. Many Asana resources are valid to create webhooks on, but higher-level resources require filters.",
"example": "12345"
},
"target": {
"type": "string",
"description": "The URL to receive the HTTP POST. The full URL will be used to deliver events from this webhook (including parameters) which allows encoding of application-specific state when the webhook is created.",
"format": "uri",
"example": "https://example.com/receive-webhook/7654?app_specific_param=app_specific_value"
},
"filters": {
"type": "array",
"description": "An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server.",
"items": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A WebhookFilter can be passed on creation of a webhook in order to filter the types of actions that trigger delivery of an [event](/reference/events)",
"properties": {
"resource_type": {
"type": "string",
"description": "The type of the resource which created the event when modified; for example, to filter to changes on regular tasks this field should be set to `task`.",
"example": "task"
},
"resource_subtype": {
"type": "string",
"description": "The resource subtype of the resource that the filter applies to. This should be set to the same value as is returned on the `resource_subtype` field on the resources themselves.",
"example": "milestone"
},
"action": {
"type": "string",
"description": "The type of change on the **resource** to pass through the filter. For more information refer to `Event.action` in the [event](/reference/events) schema. This can be one of `changed`, `added`, `removed`, `deleted`, and `undeleted` depending on the nature of what has occurred on the resource.",
"example": "changed"
},
"fields": {
"type": "array",
"description": "*Conditional.* A whitelist of fields for events which will pass the filter when the resource is changed. These can be any combination of the fields on the resources themselves. This field is only valid for `action` of type `changed`\n*Note: Subscriptions created on higher-level resources such as a Workspace, Team, or Portfolio do not support fields.*",
"items": {
"type": "string"
}
}
}
},
{
"type": "object",
"description": "A set of filters to specify a whitelist for what types of events will be delivered.",
"properties": {}
},
{
"type": "object",
"properties": {}
}
]
}
}
},
"required": [
"resource",
"target"
]
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The webhook workspace and target.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"resource\": {\n \"description\": \"A resource ID to subscribe to. Many Asana resources are valid to create webhooks on, but higher-level resources require filters.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n },\n \"target\": {\n \"description\": \"The URL to receive the HTTP POST. The full URL will be used to deliver events from this webhook (including parameters) which allows encoding of application-specific state when the webhook is created.\",\n \"type\": \"string\",\n \"format\": \"uri\",\n \"example\": \"https://example.com/receive-webhook/7654?app_specific_param=app_specific_value\"\n },\n \"filters\": {\n \"type\": \"array\",\n \"description\": \"An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server.\",\n \"items\": {\n \"allOf\": [\n {\n \"type\": \"object\",\n \"description\": \"A WebhookFilter can be passed on creation of a webhook in order to filter the types of actions that trigger delivery of an [event](/reference/events)\",\n \"properties\": {\n \"resource_type\": {\n \"type\": \"string\",\n \"description\": \"The type of the resource which created the event when modified; for example, to filter to changes on regular tasks this field should be set to `task`.\",\n \"example\": \"task\"\n },\n \"resource_subtype\": {\n \"description\": \"The resource subtype of the resource that the filter applies to. This should be set to the same value as is returned on the `resource_subtype` field on the resources themselves.\",\n \"type\": \"string\",\n \"example\": \"milestone\"\n },\n \"action\": {\n \"type\": \"string\",\n \"description\": \"The type of change on the **resource** to pass through the filter. For more information refer to `Event.action` in the [event](/reference/events) schema. This can be one of `changed`, `added`, `removed`, `deleted`, and `undeleted` depending on the nature of what has occurred on the resource.\",\n \"example\": \"changed\"\n },\n \"fields\": {\n \"type\": \"array\",\n \"description\": \"*Conditional.* A whitelist of fields for events which will pass the filter when the resource is changed. These can be any combination of the fields on the resources themselves. This field is only valid for `action` of type `changed`\\n*Note: Subscriptions created on higher-level resources such as a Workspace, Team, or Portfolio do not support fields.*\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"due_at\",\n \"due_on\",\n \"dependencies\"\n ]\n }\n }\n },\n {\n \"description\": \"A set of filters to specify a whitelist for what types of events will be delivered.\"\n },\n {\n \"type\": \"object\"\n }\n ]\n }\n }\n },\n \"required\": [\n \"resource\",\n \"target\"\n ]\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "getWebhook",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "retrieve_webhook_details",
"description": {
"tagline": "Retrieve the full record of a specified webhook.",
"detailed": "Use this tool to get complete details of a webhook by its ID. Requires webhooks:read scope."
},
"return_annotation": "Detailed information about a specified webhook.",
"arguments": [
{
"name": "webhook_global_identifier",
"alternative_names": [
"webhook_id",
"webhook_gid"
],
"description": "Globally unique identifier for the webhook to retrieve its full record.",
"endpoint_argument_name": "webhook_gid"
},
{
"name": "included_fields",
"alternative_names": [
"optional_properties",
"extra_fields"
],
"description": "List of optional properties to include in the response. Provide these as an array of strings.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_format",
"format_pretty"
],
"description": "Enables pretty output formatting with line breaks and indentation. Use this for debugging, but be aware it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/webhooks/{webhook_gid}",
"tags": [
"Webhooks"
],
"summary": "Get a webhook",
"description": "<b>Required scope: </b><code>webhooks:read</code>\n\nReturns the full record for the given webhook.",
"requires_security": true,
"oauth_scopes": [
"webhooks:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"active",
"created_at",
"delivery_retry_count",
"failure_deletion_timestamp",
"filters",
"filters.action",
"filters.fields",
"filters.resource_subtype",
"last_failure_at",
"last_failure_content",
"last_success_at",
"next_attempt_after",
"resource",
"resource.name",
"target"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "webhook_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the webhook."
},
"description": "Globally unique identifier for the webhook.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateWebhook",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "asana_update_webhook_filters",
"description": {
"tagline": "Update filters for an Asana webhook.",
"detailed": "Use this tool to update the filters of an existing Asana webhook by providing new filter specifications. The existing filters will be completely replaced with the new ones provided."
},
"return_annotation": "Confirms the update of webhook filters.",
"arguments": [
{
"name": "webhook_global_id",
"alternative_names": [
"webhook_gid_identifier",
"unique_webhook_id"
],
"description": "Globally unique identifier for the webhook to update its filters.",
"endpoint_argument_name": "webhook_gid"
},
{
"name": "updated_webhook_filters",
"alternative_names": [
"new_webhook_filters",
"webhook_filters_update"
],
"description": "JSON object with 'filters' array detailing new filters for the webhook.",
"endpoint_argument_name": "requestBody"
},
{
"name": "include_optional_properties",
"alternative_names": [
"opt_fields_list",
"include_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"format_output"
],
"description": "Enable this to receive the response in a human-readable format with line breaking and indentation. Recommended only for debugging as it increases response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/webhooks/{webhook_gid}",
"tags": [
"Webhooks"
],
"summary": "Update a webhook",
"description": "<b>Required scope: </b><code>webhooks:write</code>\n\nAn existing webhook's filters can be updated by making a PUT request on the URL for that webhook. Note that the webhook's previous `filters` array will be completely overwritten by the `filters` sent in the PUT request.",
"requires_security": true,
"oauth_scopes": [
"webhooks:write"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"active",
"created_at",
"delivery_retry_count",
"failure_deletion_timestamp",
"filters",
"filters.action",
"filters.fields",
"filters.resource_subtype",
"last_failure_at",
"last_failure_content",
"last_success_at",
"next_attempt_after",
"resource",
"resource.name",
"target"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "webhook_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the webhook."
},
"description": "Globally unique identifier for the webhook.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "requestBody",
"value_schema": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"data": {
"val_type": "json",
"inner_val_type": null,
"enum": null,
"properties": {
"filters": {
"val_type": "array",
"inner_val_type": "json",
"enum": null,
"properties": null,
"inner_properties": {},
"description": "An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server."
}
},
"inner_properties": null,
"description": null
}
},
"inner_properties": null,
"description": "The updated filters for the webhook."
},
"description": "The updated filters for the webhook.",
"required": true,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "object",
"properties": {
"data": {
"type": "object",
"properties": {
"filters": {
"type": "array",
"description": "An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server.",
"items": {
"type": "object",
"properties": {},
"allOf": [
{
"type": "object",
"description": "A WebhookFilter can be passed on creation of a webhook in order to filter the types of actions that trigger delivery of an [event](/reference/events)",
"properties": {
"resource_type": {
"type": "string",
"description": "The type of the resource which created the event when modified; for example, to filter to changes on regular tasks this field should be set to `task`.",
"example": "task"
},
"resource_subtype": {
"type": "string",
"description": "The resource subtype of the resource that the filter applies to. This should be set to the same value as is returned on the `resource_subtype` field on the resources themselves.",
"example": "milestone"
},
"action": {
"type": "string",
"description": "The type of change on the **resource** to pass through the filter. For more information refer to `Event.action` in the [event](/reference/events) schema. This can be one of `changed`, `added`, `removed`, `deleted`, and `undeleted` depending on the nature of what has occurred on the resource.",
"example": "changed"
},
"fields": {
"type": "array",
"description": "*Conditional.* A whitelist of fields for events which will pass the filter when the resource is changed. These can be any combination of the fields on the resources themselves. This field is only valid for `action` of type `changed`\n*Note: Subscriptions created on higher-level resources such as a Workspace, Team, or Portfolio do not support fields.*",
"items": {
"type": "string"
}
}
}
},
{
"type": "object",
"description": "A set of filters to specify a whitelist for what types of events will be delivered.",
"properties": {}
},
{
"type": "object",
"properties": {}
}
]
}
}
}
}
}
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The updated filters for the webhook.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"properties\": {\n \"filters\": {\n \"type\": \"array\",\n \"description\": \"An array of WebhookFilter objects to specify a whitelist of filters to apply to events from this webhook. If a webhook event passes any of the filters the event will be delivered; otherwise no event will be sent to the receiving server.\",\n \"items\": {\n \"allOf\": [\n {\n \"type\": \"object\",\n \"description\": \"A WebhookFilter can be passed on creation of a webhook in order to filter the types of actions that trigger delivery of an [event](/reference/events)\",\n \"properties\": {\n \"resource_type\": {\n \"type\": \"string\",\n \"description\": \"The type of the resource which created the event when modified; for example, to filter to changes on regular tasks this field should be set to `task`.\",\n \"example\": \"task\"\n },\n \"resource_subtype\": {\n \"description\": \"The resource subtype of the resource that the filter applies to. This should be set to the same value as is returned on the `resource_subtype` field on the resources themselves.\",\n \"type\": \"string\",\n \"example\": \"milestone\"\n },\n \"action\": {\n \"type\": \"string\",\n \"description\": \"The type of change on the **resource** to pass through the filter. For more information refer to `Event.action` in the [event](/reference/events) schema. This can be one of `changed`, `added`, `removed`, `deleted`, and `undeleted` depending on the nature of what has occurred on the resource.\",\n \"example\": \"changed\"\n },\n \"fields\": {\n \"type\": \"array\",\n \"description\": \"*Conditional.* A whitelist of fields for events which will pass the filter when the resource is changed. These can be any combination of the fields on the resources themselves. This field is only valid for `action` of type `changed`\\n*Note: Subscriptions created on higher-level resources such as a Workspace, Team, or Portfolio do not support fields.*\",\n \"items\": {\n \"type\": \"string\"\n },\n \"example\": [\n \"due_at\",\n \"due_on\",\n \"dependencies\"\n ]\n }\n }\n },\n {\n \"description\": \"A set of filters to specify a whitelist for what types of events will be delivered.\"\n },\n {\n \"type\": \"object\"\n }\n ]\n }\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": true,
"validate_request_body_schema": true,
"use_flatten_mode": false
},
{
"name": "deleteWebhook",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "delete_asana_webhook",
"description": {
"tagline": "Permanently delete a webhook in Asana.",
"detailed": "Use this tool to permanently remove a webhook from Asana. Even after deletion, requests that were in flight may still be received. No further requests will be issued once the webhook is deleted. Ensure you have the required 'webhooks:delete' scope."
},
"return_annotation": "Confirmation of webhook deletion from Asana.",
"arguments": [
{
"name": "webhook_global_id",
"alternative_names": [
"webhook_identifier",
"webhook_id"
],
"description": "Globally unique identifier for the specific webhook to delete in Asana.",
"endpoint_argument_name": "webhook_gid"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_response",
"pretty_print_json"
],
"description": "If true, formats the response with line breaks and indentation for readability. Use primarily for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "DELETE",
"path": "/webhooks/{webhook_gid}",
"tags": [
"Webhooks"
],
"summary": "Delete a webhook",
"description": "<b>Required scope: </b><code>webhooks:delete</code>\n\nThis method *permanently* removes a webhook. Note that it may be possible to receive a request that was already in flight after deleting the webhook, but no further requests will be issued.",
"requires_security": true,
"oauth_scopes": [
"webhooks:delete"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "webhook_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the webhook."
},
"description": "Globally unique identifier for the webhook.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getWorkspaceMembership",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_workspace_membership",
"description": {
"tagline": "Get the complete record for a workspace membership.",
"detailed": "Use this tool to retrieve detailed information about a specific workspace membership in Asana."
},
"return_annotation": "Complete workspace membership record.",
"arguments": [
{
"name": "workspace_membership_id",
"alternative_names": [
"membership_gid",
"workspace_member_gid"
],
"description": "The unique identifier for the workspace membership to retrieve.",
"endpoint_argument_name": "workspace_membership_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "List of specific properties to include in the response, as some are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_output_enabled",
"format_output_pretty"
],
"description": "Set to true for \"pretty\" JSON formatting with line breaks and indentation. Increases response time and size; use for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspace_memberships/{workspace_membership_gid}",
"tags": [
"Workspace memberships"
],
"summary": "Get a workspace membership",
"description": "Returns the complete workspace record for a single workspace membership.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"is_active",
"is_admin",
"is_guest",
"is_view_only",
"user",
"user.name",
"user_task_list",
"user_task_list.name",
"user_task_list.owner",
"user_task_list.workspace",
"vacation_dates",
"vacation_dates.end_on",
"vacation_dates.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_membership_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": ""
},
"description": "",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getWorkspaceMembershipsForUser",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_user_workspace_memberships",
"description": {
"tagline": "Fetches a user's workspace membership records in Asana.",
"detailed": "Use this tool to obtain compact workspace membership details for a specific user in Asana. Call this tool when you need to understand which workspaces a user is associated with."
},
"return_annotation": "Compact workspace membership records for the user.",
"arguments": [
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_reference"
],
"description": "String identifying a user. Use 'me', an email, or a user gid.",
"endpoint_argument_name": "user_gid"
},
{
"name": "results_per_page",
"alternative_names": [
"per_page_limit",
"objects_per_page"
],
"description": "Number of objects to return per page, between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "page_offset_token",
"alternative_names": [
"next_page_token",
"pagination_offset"
],
"description": "Token to fetch the next page of results from a paginated request. Use a token returned from a previous response.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"select_optional_properties",
"additional_fields"
],
"description": "Comma-separated list of optional user properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format_enabled",
"use_pretty_format"
],
"description": "If true, provides the response in a readable, pretty format with line breaks and indentation. Useful for debugging.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/users/{user_gid}/workspace_memberships",
"tags": [
"Workspace memberships"
],
"summary": "Get workspace memberships for a user",
"description": "Returns the compact workspace membership records for the user.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"is_active",
"is_admin",
"is_guest",
"is_view_only",
"offset",
"path",
"uri",
"user",
"user.name",
"user_task_list",
"user_task_list.name",
"user_task_list.owner",
"user_task_list.workspace",
"vacation_dates",
"vacation_dates.end_on",
"vacation_dates.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "user_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getWorkspaceMembershipsForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_workspace_memberships",
"description": {
"tagline": "Retrieve workspace membership records.",
"detailed": "This tool calls Asana's API to fetch compact workspace membership records for a specified workspace. It should be used when you need to list or check members of a workspace."
},
"return_annotation": "Compact workspace membership records.",
"arguments": [
{
"name": "workspace_global_id",
"alternative_names": [
"workspace_id_unique",
"organization_global_id"
],
"description": "A globally unique identifier for the workspace or organization to fetch memberships for.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id",
"user_reference"
],
"description": "A string to identify a user, such as 'me', an email, or a user's gid in Asana.",
"endpoint_argument_name": "user"
},
{
"name": "results_per_page",
"alternative_names": [
"page_size",
"items_per_page"
],
"description": "Specify the number of membership records to return per page, from 1 to 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_offset",
"result_page_offset"
],
"description": "Offset token for pagination to retrieve the next page of results. Use the token returned from a previous call for continuous paging, or leave empty for the first page.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_fields",
"alternative_names": [
"additional_properties",
"extra_fields"
],
"description": "An array of strings specifying optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_response_format",
"formatted_output"
],
"description": "Enable pretty output with line breaks and indentation for debugging purposes.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/workspace_memberships",
"tags": [
"Workspace memberships"
],
"summary": "Get the workspace memberships for a workspace",
"description": "Returns the compact workspace membership records for the workspace.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"created_at",
"is_active",
"is_admin",
"is_guest",
"is_view_only",
"offset",
"path",
"uri",
"user",
"user.name",
"user_task_list",
"user_task_list.name",
"user_task_list.owner",
"user_task_list.workspace",
"vacation_dates",
"vacation_dates.end_on",
"vacation_dates.start_on",
"workspace",
"workspace.name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getWorkspaces",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_visible_workspaces",
"description": {
"tagline": "Retrieve all workspaces visible to the user.",
"detailed": "Fetches a list of compact records for all workspaces the authorized user can see, requiring the 'workspaces:read' scope."
},
"return_annotation": "List of visible workspace records for the user.",
"arguments": [
{
"name": "results_limit_per_page",
"alternative_names": [
"max_results_per_page",
"per_page_limit"
],
"description": "Specify the number of workspaces to return per page. Must be between 1 and 100.",
"endpoint_argument_name": "limit"
},
{
"name": "pagination_offset",
"alternative_names": [
"next_page_token",
"result_offset"
],
"description": "An offset token for paginating through the results. Use the token returned from a previous request to access the next page.",
"endpoint_argument_name": "offset"
},
{
"name": "include_optional_properties",
"alternative_names": [
"optional_fields_list",
"extra_properties_to_include"
],
"description": "Comma-separated list of optional fields to include in the response. Use this to include properties that are excluded by default.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"formatted_output"
],
"description": "Enable for pretty, readable response. Ideal for debugging as it increases response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces",
"tags": [
"Workspaces"
],
"summary": "Get multiple workspaces",
"description": "<b>Required scope: </b><code>workspaces:read</code>\n\nReturns the compact records for all workspaces visible to the authorized user.",
"requires_security": true,
"oauth_scopes": [
"workspaces:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "limit",
"value_schema": {
"val_type": "integer",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100."
},
"description": "Results per page.\nThe number of objects to return per page. The value must be between 1 and 100.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"schema_required": false
},
{
"name": "offset",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*"
},
"description": "Offset token.\nAn offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results.\n*Note: You can only pass in an offset that was returned to you via a previously paginated request.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"email_domains",
"is_organization",
"name",
"offset",
"path",
"uri"
]
}
},
"schema_required": false
}
],
"path": [],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "getWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_workspace_details",
"description": {
"tagline": "Retrieve detailed information about a specific Asana workspace.",
"detailed": "Use this tool to get the full record of a specific workspace in Asana by providing the workspace ID. It requires the 'workspaces:read' scope."
},
"return_annotation": "Detailed workspace information.",
"arguments": [
{
"name": "workspace_global_id",
"alternative_names": [
"workspace_identifier",
"workspace_unique_id"
],
"description": "Globally unique identifier for the Asana workspace or organization.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "include_optional_properties",
"alternative_names": [
"additional_fields",
"extra_properties"
],
"description": "List the optional properties to include, as a comma-separated list, to extend the default fields in the workspace record.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_format",
"format_pretty_output"
],
"description": "Enable this to provide a response with pretty formatting, including line breaks and indentation. Recommended for debugging due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}",
"tags": [
"Workspaces"
],
"summary": "Get a workspace",
"description": "<b>Required scope: </b><code>workspaces:read</code>\n\nReturns the full workspace record for a single workspace.",
"requires_security": true,
"oauth_scopes": [
"workspaces:read"
],
"security_schemes": [
"oauth2"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"email_domains",
"is_organization",
"name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
},
{
"name": "updateWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "update_workspace_name",
"description": {
"tagline": "Update the name of an existing Asana workspace.",
"detailed": "Use this tool to change the name of a specific, existing Asana workspace. Only the workspace name can be modified, and the tool will return the complete, updated workspace record."
},
"return_annotation": "The complete, updated workspace record.",
"arguments": [
{
"name": "workspace_global_id",
"alternative_names": [
"workspace_identifier",
"organization_unique_id"
],
"description": "Globally unique identifier for the workspace or organization.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"fields_to_include",
"extra_fields"
],
"description": "List of additional workspace properties to include in the response, comma-separated.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "workspace_resource_gid",
"alternative_names": [
"workspace_id",
"resource_id"
],
"description": "Globally unique identifier of the workspace resource. This is required to specify which workspace to update.",
"endpoint_argument_name": "data.gid"
},
{
"name": "resource_base_type",
"alternative_names": [
"resource_type_base",
"base_resource_type"
],
"description": "Specify the base type of the resource to update the workspace name.",
"endpoint_argument_name": "data.resource_type"
},
{
"name": "workspace_name",
"alternative_names": [
"workspace_rename",
"workspace_title"
],
"description": "The new name for the Asana workspace you want to update.",
"endpoint_argument_name": "data.name"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"format_output_pretty",
"pretty_format"
],
"description": "Enable this to receive the response in a readable and formatted style. Useful for debugging. May increase response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "PUT",
"path": "/workspaces/{workspace_gid}",
"tags": [
"Workspaces"
],
"summary": "Update a workspace",
"description": "A specific, existing workspace can be updated by making a PUT request on the URL for that workspace. Only the fields provided in the data block will be updated; any unspecified fields will remain unchanged.\nCurrently the only field that can be modified for a workspace is its name.\nReturns the complete, updated workspace record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"email_domains",
"is_organization",
"name"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier of the resource, as a string."
},
"description": "Globally unique identifier of the resource, as a string.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "Globally unique identifier of the resource, as a string.",
"example": "12345"
},
"schema_required": false
},
{
"name": "data.resource_type",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The base type of this resource."
},
"description": "The base type of this resource.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The base type of this resource.",
"example": "workspace"
},
"schema_required": false
},
{
"name": "data.name",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "The name of the workspace."
},
"description": "The name of the workspace.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "The name of the workspace.",
"example": "My Company Workspace"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The workspace object with all updated properties.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"description\": \"A *workspace* is the highest-level organizational unit in Asana. All projects and tasks have an associated workspace.\",\n \"type\": \"object\",\n \"properties\": {\n \"gid\": {\n \"description\": \"Globally unique identifier of the resource, as a string.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"12345\",\n \"x-insert-after\": false\n },\n \"resource_type\": {\n \"description\": \"The base type of this resource.\",\n \"type\": \"string\",\n \"readOnly\": true,\n \"example\": \"workspace\",\n \"x-insert-after\": \"gid\"\n },\n \"name\": {\n \"description\": \"The name of the workspace.\",\n \"type\": \"string\",\n \"example\": \"My Company Workspace\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "addUserForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "add_user_to_workspace",
"description": {
"tagline": "Add a user to an Asana workspace or organization.",
"detailed": "Use this tool to add a user to an Asana workspace. The user can be specified by their unique user ID or email. It returns the complete user record of the invited user."
},
"return_annotation": "Full user record for the invited user.",
"arguments": [
{
"name": "workspace_global_identifier",
"alternative_names": [
"workspace_id",
"organization_gid"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "include_optional_fields",
"alternative_names": [
"fields_to_include",
"optional_fields"
],
"description": "Comma-separated list of optional properties to include in the response.",
"endpoint_argument_name": "opt_fields"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id_email",
"user_reference"
],
"description": "A string identifying a user. Can be \"me\", an email, or a user ID (gid).",
"endpoint_argument_name": "data.user"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"use_pretty_formatting",
"pretty_print_response"
],
"description": "Enable this to receive the response in a readable JSON format with line breaks and indentation. This is useful for debugging but can increase response time and size.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/workspaces/{workspace_gid}/addUser",
"tags": [
"Workspaces"
],
"summary": "Add a user to a workspace or organization",
"description": "Add a user to a workspace or organization.\nThe user can be referenced by their globally unique user ID or their email address. Returns the full user record for the invited user.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "opt_fields",
"value_schema": {
"val_type": "array",
"inner_val_type": "string",
"enum": null,
"properties": null,
"inner_properties": null,
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include."
},
"description": "This endpoint returns a resource which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"email",
"name",
"photo",
"photo.image_1024x1024",
"photo.image_128x128",
"photo.image_21x21",
"photo.image_27x27",
"photo.image_36x36",
"photo.image_60x60"
]
}
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"example": "12345"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The user to add to the workspace.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"description\": \"A user identification object for specification with the addUser/removeUser endpoints.\",\n \"properties\": {\n \"user\": {\n \"description\": \"A string identifying a user. This can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "removeUserForWorkspace",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "remove_user_from_workspace",
"description": {
"tagline": "Remove a user from an Asana workspace or organization.",
"detailed": "Use this tool to remove a user from a specified workspace or organization in Asana. The caller must be an admin in the workspace. The user can be identified by their user ID or email. Different token types (Service Account Token or Personal Access Token) affect post-removal behaviors, such as resource ownership transfer."
},
"return_annotation": "Confirms the removal of a user from a workspace.",
"arguments": [
{
"name": "workspace_identifier",
"alternative_names": [
"workspace_id",
"organization_id"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "user_identifier",
"alternative_names": [
"user_id_or_email",
"user_reference"
],
"description": "Identifies the user to be removed. Accepts 'me', an email, or a globally unique user ID.",
"endpoint_argument_name": "data.user"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"debug_pretty_output"
],
"description": "Enable to receive formatted and more readable output. Use for debugging due to increased response size and time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "POST",
"path": "/workspaces/{workspace_gid}/removeUser",
"tags": [
"Workspaces"
],
"summary": "Remove a user from a workspace or organization",
"description": "Remove a user from a workspace or organization.\n\nThe user making this call must be an admin in the workspace. The user can\nbe referenced by their globally unique user ID or their email address.\n\nWhen invoked using a **Service Account Token (SAT)**, this endpoint follows the same behavior as the\n[SCIM API Delete endpoint](/docs/scim).\nTo learn more about how Asana handles user deprovisioning, refer to our\n[Help Center article on deprovisioning users](https://help.asana.com/s/article/user-deprovisioning).\n\nWhen invoked using a **Personal Access Token (PAT)**, the endpoint behaves similarly, except that\nownership of the user\u2019s resources is transferred to the **PAT owner** instead of the admin\n[specified in the Admin Console](https://help.asana.com/s/article/user-deprovisioning#gl-deprovisioning).\n\n**Note:** If you wish to retain access to a user\u2019s private resources\n(i.e., those visible only to that user), you have to make them public manually\n(or ask the user to do so) before removal.\n\nReturns an empty data record.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": [
{
"name": "data.user",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user."
},
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"required": false,
"deprecated": false,
"default": null,
"location": "body",
"content_type": "application/json",
"json_schema": {
"type": "string",
"description": "A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.",
"example": "12345"
},
"schema_required": false
}
]
},
"request_body_spec": "{\n \"description\": \"The user to remove from the workspace.\",\n \"required\": true,\n \"content\": {\n \"application/json\": {\n \"schema\": {\n \"type\": \"object\",\n \"properties\": {\n \"data\": {\n \"type\": \"object\",\n \"description\": \"A user identification object for specification with the addUser/removeUser endpoints.\",\n \"properties\": {\n \"user\": {\n \"description\": \"A string identifying a user. This can either be the string \\\"me\\\", an email, or the gid of a user.\",\n \"type\": \"string\",\n \"example\": \"12345\"\n }\n }\n }\n }\n }\n }\n }\n}",
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": true
},
{
"name": "getWorkspaceEvents",
"selected_for_wrapping": false,
"spec_built": true,
"wrap_finished": true,
"should_skip": false,
"skip_reason": null,
"wrapper_tool": {
"name": "get_workspace_events",
"description": {
"tagline": "Retrieve all events in a workspace since a specific sync token.",
"detailed": "Use this tool to get a full record of events that have occurred in an Asana workspace since a specified sync token. If the number of events exceeds 1000, the response will indicate there are more events to retrieve."
},
"return_annotation": "List of events and a sync indicator if more are available.",
"arguments": [
{
"name": "workspace_global_id",
"alternative_names": [
"workspace_identifier",
"workspace_gid"
],
"description": "Globally unique identifier for the workspace or organization in Asana.",
"endpoint_argument_name": "workspace_gid"
},
{
"name": "sync_token",
"alternative_names": [
"sync_key",
"event_sync_token"
],
"description": "A sync token received from the last request to fetch events from a specific point in time. Omit on first sync to receive a new token.",
"endpoint_argument_name": "sync"
},
{
"name": "enable_pretty_output",
"alternative_names": [
"pretty_formatting",
"formatted_output"
],
"description": "Enable pretty output for better readability. Recommended for debugging as it increases response size and takes extra time.",
"endpoint_argument_name": "opt_pretty"
}
]
},
"method": "GET",
"path": "/workspaces/{workspace_gid}/events",
"tags": [
"Workspaces"
],
"summary": "Get workspace events",
"description": "Returns the full record for all events that have occurred since the sync token was created.\nThe response is a list of events and the schema of each event is as described [here](/reference/events).\nAsana limits a single sync token to 1000 events. If more than 1000 events exist for a given domain, `has_more: true` will be returned in the response, indicating that there are more events to pull.",
"requires_security": true,
"oauth_scopes": [],
"security_schemes": [
"oauth2",
"personalAccessToken"
],
"parameters": {
"query": [
{
"name": "opt_pretty",
"value_schema": {
"val_type": "boolean",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging."
},
"description": "Provides \u201cpretty\u201d output.\nProvides the response in a \u201cpretty\u201d format. In the case of JSON this means doing proper line breaking and indentation to make it readable. This will take extra time and increase the response size so it is advisable only to use this during debugging.",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "boolean"
},
"schema_required": false
},
{
"name": "sync",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "A sync token received from the last request, or none on first sync. Events will be returned from the point in time that the sync token was generated.\n*Note: On your first request, omit the sync token. The response will be the same as for an expired sync token, and will include a new valid sync token. If the sync token is too old (which may happen from time to time) the API will return a `412 Precondition Failed` error, and include a fresh sync token in the response.*"
},
"description": "A sync token received from the last request, or none on first sync. Events will be returned from the point in time that the sync token was generated.\n*Note: On your first request, omit the sync token. The response will be the same as for an expired sync token, and will include a new valid sync token. If the sync token is too old (which may happen from time to time) the API will return a `412 Precondition Failed` error, and include a fresh sync token in the response.*",
"required": false,
"deprecated": false,
"default": null,
"location": "query",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"path": [
{
"name": "workspace_gid",
"value_schema": {
"val_type": "string",
"inner_val_type": null,
"enum": null,
"properties": null,
"inner_properties": null,
"description": "Globally unique identifier for the workspace or organization."
},
"description": "Globally unique identifier for the workspace or organization.",
"required": true,
"deprecated": false,
"default": null,
"location": "path",
"content_type": null,
"json_schema": {
"type": "string"
},
"schema_required": false
}
],
"header": [],
"cookie": [],
"body": []
},
"request_body_spec": null,
"use_request_body_schema_mode": false,
"validate_request_body_schema": false,
"use_flatten_mode": false
}
],
"security_scheme_key_selected": "oauth2",
"security_scheme_selected": {
"type": "oauth2",
"description": "We require that applications designed to access the Asana API on behalf of multiple users implement OAuth 2.0.\nAsana supports the Authorization Code Grant flow.",
"flows": {
"authorizationCode": {
"authorizationUrl": "https://app.asana.com/-/oauth_authorize",
"tokenUrl": "https://app.asana.com/-/oauth_token",
"refreshUrl": "https://app.asana.com/-/oauth_token",
"scopes": {
"default": "Provides access to all endpoints documented in our API reference. If no scopes are requested, this scope is assumed by default.",
"openid": "Provides access to OpenID Connect ID tokens and the OpenID Connect user info endpoint.",
"email": "Provides access to the user\u2019s email through the OpenID Connect user info endpoint.",
"profile": "Provides access to the user\u2019s name and profile photo through the OpenID Connect user info endpoint.",
"attachments:read": "View access to attachments",
"attachments:write": "Create and modify access to attachments",
"attachments:delete": "Delete access to attachments",
"custom_fields:read": "View access to custom fields",
"custom_fields:write": "Create and modify access to custom fields",
"goals:read": "View access to goals",
"tasks:read": "View access to tasks",
"tasks:write": "Create and modify access to tasks",
"tasks:delete": "Delete access to tasks",
"task_custom_types:read": "View access to task custom types",
"task_templates:read": "View access to task templates",
"team_memberships:read": "View access to team memberships",
"portfolios:read": "View access to portfolios",
"portfolios:write": "Create and modify access to portfolios",
"project_templates:read": "View access to project templates",
"projects:delete": "Delete access to projects",
"projects:read": "View access to projects",
"projects:write": "Create and modify access to projects",
"users:read": "View access to users",
"teams:read": "View access to teams",
"time_tracking_entries:read": "View access to time tracking entries",
"stories:read": "View access to stories",
"stories:write": "Create and modify access to stories",
"tags:read": "View access to tags",
"tags:write": "Create and modify access to tags",
"webhooks:read": "View access to webhooks",
"webhooks:write": "Create and modify access to webhooks",
"webhooks:delete": "Delete access to webhooks",
"workspaces:read": "View access to workspaces"
}
}
}
}
}