{"id":13990107,"url":"https://github.com/Asana/node-asana","last_synced_at":"2025-07-22T12:30:37.711Z","repository":{"id":37663506,"uuid":"21468928","full_name":"Asana/node-asana","owner":"Asana","description":"Official node.js and browser JS client for the Asana API v1","archived":false,"fork":false,"pushed_at":"2025-06-17T18:53:55.000Z","size":2678,"stargazers_count":272,"open_issues_count":63,"forks_count":76,"subscribers_count":229,"default_branch":"master","last_synced_at":"2025-07-14T07:53:28.670Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Asana.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-07-03T16:11:41.000Z","updated_at":"2025-06-17T18:53:57.000Z","dependencies_parsed_at":"2023-02-14T01:01:02.662Z","dependency_job_id":"242508e3-ff91-4595-a41e-db27297ea5a3","html_url":"https://github.com/Asana/node-asana","commit_stats":{"total_commits":573,"total_committers":47,"mean_commits":"12.191489361702128","dds":0.774869109947644,"last_synced_commit":"43b490b74ff681fa551e84c47e250418f8ceda0d"},"previous_names":[],"tags_count":100,"template":false,"template_full_name":null,"purl":"pkg:github/Asana/node-asana","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asana%2Fnode-asana","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asana%2Fnode-asana/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asana%2Fnode-asana/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asana%2Fnode-asana/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Asana","download_url":"https://codeload.github.com/Asana/node-asana/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Asana%2Fnode-asana/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265730357,"owners_count":23818763,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-09T13:02:22.012Z","updated_at":"2025-07-22T12:30:37.688Z","avatar_url":"https://github.com/Asana.png","language":"JavaScript","readme":"# asana [![GitHub release][release-image]][release-url] [![NPM Version][npm-image]][npm-url]\n\n- API version: 1.0\n- Package version: 3.1.0\n\n## Installation\n\n### For [Node.js](https://nodejs.org/)\n\n#### npm install from [npmjs](https://www.npmjs.com/package/asana)\n\n```shell\nnpm install asana --save\n```\n\n### For browser\n\nInclude the latest release directly from GitHub:\n\n```html\n\u003cscript src=\"https://github.com/Asana/node-asana/releases/download/v3.1.0/asana-min.js\"\u003e\u003c/script\u003e\n```\n\nExample usage (**NOTE**: be careful not to expose your access token):\n\n```html\n\u003cscript\u003e\n    let client = Asana.ApiClient.instance;\n    let token = client.authentications['token'];\n    token.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n    let usersApiInstance = new Asana.UsersApi();\n    let user_gid = \"me\";\n    let opts = {};\n\n    usersApiInstance.getUser(user_gid, opts).then((result) =\u003e {\n        console.log('API called successfully. Returned data: ' +  JSON.stringify(result.data, null, 2));\n    }, (error) =\u003e {\n        console.error(error.response.body);\n    });\n\u003c/script\u003e\n```\n\n### Webpack Configuration\n\nUsing Webpack you may encounter the following error: \"Module not found: Error:\nCannot resolve module\", most certainly you should disable AMD loader. Add/merge\nthe following section to your webpack config:\n\n```javascript\nmodule: {\n  rules: [\n    {\n      parser: {\n        amd: false\n      }\n    }\n  ]\n}\n```\n\n## Getting Started\n\nPlease follow the [installation](#installation) instruction and execute the following JS code:\n\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet usersApiInstance = new Asana.UsersApi();\nlet user_gid = \"me\"; // String | A string identifying a user. This can either be the string \\\"me\\\", an email, or the gid of a user.\nlet opts = { \n    \"opt_fields\": \"email,name,photo,photo.image_1024x1024,photo.image_128x128,photo.image_21x21,photo.image_27x27,photo.image_36x36,photo.image_60x60,workspaces,workspaces.name\" // [String] | This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.\n};\n\nusersApiInstance.getUser(user_gid, opts).then((result) =\u003e {\n    console.log('API called successfully. Returned data: ' +  JSON.stringify(result.data, null, 2));\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n### Example: GET, POST, PUT, DELETE on tasks\n\n#### GET - get multiple tasks\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet opts = { \n    \"limit\": 50, // Number | Results per page. The number of objects to return per page. The value must be between 1 and 100.\n    \"project\": \"\u003cYOUR_PROJECT_GID\u003e\", // String | The project to filter tasks on.\n    \"modified_since\": \"2012-02-22T02:06:58.158Z\", // Date | Only return tasks that have been modified since the given time.  *Note: A task is considered “modified” if any of its properties change, or associations between it and other objects are modified (e.g.  a task being added to a project). A task is not considered modified just because another object it is associated with (e.g. a subtask) is modified. Actions that count as modifying the task include assigning, renaming, completing, and adding stories.*\n    \"opt_fields\": \"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.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.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.resource_subtype,custom_fields.text_value,custom_fields.type,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\" // [String] | This endpoint returns a compact resource, which excludes some properties by default. To include those optional properties, set this query parameter to a comma-separated list of the properties you wish to include.\n};\n\n// GET - get multiple tasks\ntasksApiInstance.getTasks(opts).then((result) =\u003e {\n    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### POST - create a task\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet body = {\n    \"data\": {\n        \"name\": \"New Task\",\n        \"approval_status\": \"pending\",\n        \"assignee_status\": \"upcoming\",\n        \"completed\": false,\n        \"external\": {\n            \"gid\": \"1234\",\n            \"data\": \"A blob of information.\",\n        },\n        \"html_notes\": \"\u003cbody\u003eMittens \u003cem\u003ereally\u003c/em\u003e likes the stuff from Humboldt.\u003c/body\u003e\",\n        \"is_rendered_as_separator\": false,\n        \"liked\": true,\n        \"assignee\": \"me\",\n        \"projects\": [\"\u003cYOUR_PROJECT_GID\u003e\"],\n    },\n};\nlet opts = {};\n\n// POST - Create a task\ntasksApiInstance.createTask(body, opts).then((result) =\u003e {\n    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### PUT - update a task\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet task_gid = \"\u003cYOUR_TASK_GID\u003e\";\nlet body = {\n    \"data\": {\n        \"name\": \"Updated Task\",\n    },\n};\nlet opts = {};\n\n// PUT - Update a task\ntasksApiInstance.updateTask(body, task_gid, opts).then((result) =\u003e {\n    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### DELETE - delete a task\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet task_gid = \"\u003cYOUR_TASK_GID\u003e\";\n\n// DELETE - Delete a task\ntasksApiInstance.deleteTask(task_gid).then((result) =\u003e {\n    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n## Documentation for API Endpoints\n\nAll URIs are relative to *https://app.asana.com/api/1.0*\n\nClass | Method | HTTP request | Description\n------------ | ------------- | ------------- | -------------\n*Asana.AllocationsApi* | [**createAllocation**](docs/AllocationsApi.md#createAllocation) | **POST** /allocations | Create an allocation\n*Asana.AllocationsApi* | [**deleteAllocation**](docs/AllocationsApi.md#deleteAllocation) | **DELETE** /allocations/{allocation_gid} | Delete an allocation\n*Asana.AllocationsApi* | [**getAllocation**](docs/AllocationsApi.md#getAllocation) | **GET** /allocations/{allocation_gid} | Get an allocation\n*Asana.AllocationsApi* | [**getAllocations**](docs/AllocationsApi.md#getAllocations) | **GET** /allocations | Get multiple allocations\n*Asana.AllocationsApi* | [**updateAllocation**](docs/AllocationsApi.md#updateAllocation) | **PUT** /allocations/{allocation_gid} | Update an allocation\n*Asana.AttachmentsApi* | [**createAttachmentForObject**](docs/AttachmentsApi.md#createAttachmentForObject) | **POST** /attachments | Upload an attachment\n*Asana.AttachmentsApi* | [**deleteAttachment**](docs/AttachmentsApi.md#deleteAttachment) | **DELETE** /attachments/{attachment_gid} | Delete an attachment\n*Asana.AttachmentsApi* | [**getAttachment**](docs/AttachmentsApi.md#getAttachment) | **GET** /attachments/{attachment_gid} | Get an attachment\n*Asana.AttachmentsApi* | [**getAttachmentsForObject**](docs/AttachmentsApi.md#getAttachmentsForObject) | **GET** /attachments | Get attachments from an object\n*Asana.AuditLogAPIApi* | [**getAuditLogEvents**](docs/AuditLogAPIApi.md#getAuditLogEvents) | **GET** /workspaces/{workspace_gid}/audit_log_events | Get audit log events\n*Asana.BatchAPIApi* | [**createBatchRequest**](docs/BatchAPIApi.md#createBatchRequest) | **POST** /batch | Submit parallel requests\n*Asana.CustomFieldSettingsApi* | [**getCustomFieldSettingsForPortfolio**](docs/CustomFieldSettingsApi.md#getCustomFieldSettingsForPortfolio) | **GET** /portfolios/{portfolio_gid}/custom_field_settings | Get a portfolio\u0026#x27;s custom fields\n*Asana.CustomFieldSettingsApi* | [**getCustomFieldSettingsForProject**](docs/CustomFieldSettingsApi.md#getCustomFieldSettingsForProject) | **GET** /projects/{project_gid}/custom_field_settings | Get a project\u0026#x27;s custom fields\n*Asana.CustomFieldsApi* | [**createCustomField**](docs/CustomFieldsApi.md#createCustomField) | **POST** /custom_fields | Create a custom field\n*Asana.CustomFieldsApi* | [**createEnumOptionForCustomField**](docs/CustomFieldsApi.md#createEnumOptionForCustomField) | **POST** /custom_fields/{custom_field_gid}/enum_options | Create an enum option\n*Asana.CustomFieldsApi* | [**deleteCustomField**](docs/CustomFieldsApi.md#deleteCustomField) | **DELETE** /custom_fields/{custom_field_gid} | Delete a custom field\n*Asana.CustomFieldsApi* | [**getCustomField**](docs/CustomFieldsApi.md#getCustomField) | **GET** /custom_fields/{custom_field_gid} | Get a custom field\n*Asana.CustomFieldsApi* | [**getCustomFieldsForWorkspace**](docs/CustomFieldsApi.md#getCustomFieldsForWorkspace) | **GET** /workspaces/{workspace_gid}/custom_fields | Get a workspace\u0026#x27;s custom fields\n*Asana.CustomFieldsApi* | [**insertEnumOptionForCustomField**](docs/CustomFieldsApi.md#insertEnumOptionForCustomField) | **POST** /custom_fields/{custom_field_gid}/enum_options/insert | Reorder a custom field\u0026#x27;s enum\n*Asana.CustomFieldsApi* | [**updateCustomField**](docs/CustomFieldsApi.md#updateCustomField) | **PUT** /custom_fields/{custom_field_gid} | Update a custom field\n*Asana.CustomFieldsApi* | [**updateEnumOption**](docs/CustomFieldsApi.md#updateEnumOption) | **PUT** /enum_options/{enum_option_gid} | Update an enum option\n*Asana.CustomTypesApi* | [**getCustomTypes**](docs/CustomTypesApi.md#getCustomTypes) | **GET** /custom_types | Get all custom types associated with an object\n*Asana.EventsApi* | [**getEvents**](docs/EventsApi.md#getEvents) | **GET** /events | Get events on a resource\n*Asana.ExportsApi* | [**createGraphExport**](docs/ExportsApi.md#createGraphExport) | **POST** /exports/graph | Initiate graph export\n*Asana.GoalRelationshipsApi* | [**addSupportingRelationship**](docs/GoalRelationshipsApi.md#addSupportingRelationship) | **POST** /goals/{goal_gid}/addSupportingRelationship | Add a supporting goal relationship\n*Asana.GoalRelationshipsApi* | [**getGoalRelationship**](docs/GoalRelationshipsApi.md#getGoalRelationship) | **GET** /goal_relationships/{goal_relationship_gid} | Get a goal relationship\n*Asana.GoalRelationshipsApi* | [**getGoalRelationships**](docs/GoalRelationshipsApi.md#getGoalRelationships) | **GET** /goal_relationships | Get goal relationships\n*Asana.GoalRelationshipsApi* | [**removeSupportingRelationship**](docs/GoalRelationshipsApi.md#removeSupportingRelationship) | **POST** /goals/{goal_gid}/removeSupportingRelationship | Removes a supporting goal relationship\n*Asana.GoalRelationshipsApi* | [**updateGoalRelationship**](docs/GoalRelationshipsApi.md#updateGoalRelationship) | **PUT** /goal_relationships/{goal_relationship_gid} | Update a goal relationship\n*Asana.GoalsApi* | [**addFollowers**](docs/GoalsApi.md#addFollowers) | **POST** /goals/{goal_gid}/addFollowers | Add a collaborator to a goal\n*Asana.GoalsApi* | [**createGoal**](docs/GoalsApi.md#createGoal) | **POST** /goals | Create a goal\n*Asana.GoalsApi* | [**createGoalMetric**](docs/GoalsApi.md#createGoalMetric) | **POST** /goals/{goal_gid}/setMetric | Create a goal metric\n*Asana.GoalsApi* | [**deleteGoal**](docs/GoalsApi.md#deleteGoal) | **DELETE** /goals/{goal_gid} | Delete a goal\n*Asana.GoalsApi* | [**getGoal**](docs/GoalsApi.md#getGoal) | **GET** /goals/{goal_gid} | Get a goal\n*Asana.GoalsApi* | [**getGoals**](docs/GoalsApi.md#getGoals) | **GET** /goals | Get goals\n*Asana.GoalsApi* | [**getParentGoalsForGoal**](docs/GoalsApi.md#getParentGoalsForGoal) | **GET** /goals/{goal_gid}/parentGoals | Get parent goals from a goal\n*Asana.GoalsApi* | [**removeFollowers**](docs/GoalsApi.md#removeFollowers) | **POST** /goals/{goal_gid}/removeFollowers | Remove a collaborator from a goal\n*Asana.GoalsApi* | [**updateGoal**](docs/GoalsApi.md#updateGoal) | **PUT** /goals/{goal_gid} | Update a goal\n*Asana.GoalsApi* | [**updateGoalMetric**](docs/GoalsApi.md#updateGoalMetric) | **POST** /goals/{goal_gid}/setMetricCurrentValue | Update a goal metric\n*Asana.JobsApi* | [**getJob**](docs/JobsApi.md#getJob) | **GET** /jobs/{job_gid} | Get a job by id\n*Asana.MembershipsApi* | [**createMembership**](docs/MembershipsApi.md#createMembership) | **POST** /memberships | Create a membership\n*Asana.MembershipsApi* | [**deleteMembership**](docs/MembershipsApi.md#deleteMembership) | **DELETE** /memberships/{membership_gid} | Delete a membership\n*Asana.MembershipsApi* | [**getMembership**](docs/MembershipsApi.md#getMembership) | **GET** /memberships/{membership_gid} | Get a membership\n*Asana.MembershipsApi* | [**getMemberships**](docs/MembershipsApi.md#getMemberships) | **GET** /memberships | Get multiple memberships\n*Asana.MembershipsApi* | [**updateMembership**](docs/MembershipsApi.md#updateMembership) | **PUT** /memberships/{membership_gid} | Update a membership\n*Asana.OrganizationExportsApi* | [**createOrganizationExport**](docs/OrganizationExportsApi.md#createOrganizationExport) | **POST** /organization_exports | Create an organization export request\n*Asana.OrganizationExportsApi* | [**getOrganizationExport**](docs/OrganizationExportsApi.md#getOrganizationExport) | **GET** /organization_exports/{organization_export_gid} | Get details on an org export request\n*Asana.PortfolioMembershipsApi* | [**getPortfolioMembership**](docs/PortfolioMembershipsApi.md#getPortfolioMembership) | **GET** /portfolio_memberships/{portfolio_membership_gid} | Get a portfolio membership\n*Asana.PortfolioMembershipsApi* | [**getPortfolioMemberships**](docs/PortfolioMembershipsApi.md#getPortfolioMemberships) | **GET** /portfolio_memberships | Get multiple portfolio memberships\n*Asana.PortfolioMembershipsApi* | [**getPortfolioMembershipsForPortfolio**](docs/PortfolioMembershipsApi.md#getPortfolioMembershipsForPortfolio) | **GET** /portfolios/{portfolio_gid}/portfolio_memberships | Get memberships from a portfolio\n*Asana.PortfoliosApi* | [**addCustomFieldSettingForPortfolio**](docs/PortfoliosApi.md#addCustomFieldSettingForPortfolio) | **POST** /portfolios/{portfolio_gid}/addCustomFieldSetting | Add a custom field to a portfolio\n*Asana.PortfoliosApi* | [**addItemForPortfolio**](docs/PortfoliosApi.md#addItemForPortfolio) | **POST** /portfolios/{portfolio_gid}/addItem | Add a portfolio item\n*Asana.PortfoliosApi* | [**addMembersForPortfolio**](docs/PortfoliosApi.md#addMembersForPortfolio) | **POST** /portfolios/{portfolio_gid}/addMembers | Add users to a portfolio\n*Asana.PortfoliosApi* | [**createPortfolio**](docs/PortfoliosApi.md#createPortfolio) | **POST** /portfolios | Create a portfolio\n*Asana.PortfoliosApi* | [**deletePortfolio**](docs/PortfoliosApi.md#deletePortfolio) | **DELETE** /portfolios/{portfolio_gid} | Delete a portfolio\n*Asana.PortfoliosApi* | [**getItemsForPortfolio**](docs/PortfoliosApi.md#getItemsForPortfolio) | **GET** /portfolios/{portfolio_gid}/items | Get portfolio items\n*Asana.PortfoliosApi* | [**getPortfolio**](docs/PortfoliosApi.md#getPortfolio) | **GET** /portfolios/{portfolio_gid} | Get a portfolio\n*Asana.PortfoliosApi* | [**getPortfolios**](docs/PortfoliosApi.md#getPortfolios) | **GET** /portfolios | Get multiple portfolios\n*Asana.PortfoliosApi* | [**removeCustomFieldSettingForPortfolio**](docs/PortfoliosApi.md#removeCustomFieldSettingForPortfolio) | **POST** /portfolios/{portfolio_gid}/removeCustomFieldSetting | Remove a custom field from a portfolio\n*Asana.PortfoliosApi* | [**removeItemForPortfolio**](docs/PortfoliosApi.md#removeItemForPortfolio) | **POST** /portfolios/{portfolio_gid}/removeItem | Remove a portfolio item\n*Asana.PortfoliosApi* | [**removeMembersForPortfolio**](docs/PortfoliosApi.md#removeMembersForPortfolio) | **POST** /portfolios/{portfolio_gid}/removeMembers | Remove users from a portfolio\n*Asana.PortfoliosApi* | [**updatePortfolio**](docs/PortfoliosApi.md#updatePortfolio) | **PUT** /portfolios/{portfolio_gid} | Update a portfolio\n*Asana.ProjectBriefsApi* | [**createProjectBrief**](docs/ProjectBriefsApi.md#createProjectBrief) | **POST** /projects/{project_gid}/project_briefs | Create a project brief\n*Asana.ProjectBriefsApi* | [**deleteProjectBrief**](docs/ProjectBriefsApi.md#deleteProjectBrief) | **DELETE** /project_briefs/{project_brief_gid} | Delete a project brief\n*Asana.ProjectBriefsApi* | [**getProjectBrief**](docs/ProjectBriefsApi.md#getProjectBrief) | **GET** /project_briefs/{project_brief_gid} | Get a project brief\n*Asana.ProjectBriefsApi* | [**updateProjectBrief**](docs/ProjectBriefsApi.md#updateProjectBrief) | **PUT** /project_briefs/{project_brief_gid} | Update a project brief\n*Asana.ProjectMembershipsApi* | [**getProjectMembership**](docs/ProjectMembershipsApi.md#getProjectMembership) | **GET** /project_memberships/{project_membership_gid} | Get a project membership\n*Asana.ProjectMembershipsApi* | [**getProjectMembershipsForProject**](docs/ProjectMembershipsApi.md#getProjectMembershipsForProject) | **GET** /projects/{project_gid}/project_memberships | Get memberships from a project\n*Asana.ProjectStatusesApi* | [**createProjectStatusForProject**](docs/ProjectStatusesApi.md#createProjectStatusForProject) | **POST** /projects/{project_gid}/project_statuses | Create a project status\n*Asana.ProjectStatusesApi* | [**deleteProjectStatus**](docs/ProjectStatusesApi.md#deleteProjectStatus) | **DELETE** /project_statuses/{project_status_gid} | Delete a project status\n*Asana.ProjectStatusesApi* | [**getProjectStatus**](docs/ProjectStatusesApi.md#getProjectStatus) | **GET** /project_statuses/{project_status_gid} | Get a project status\n*Asana.ProjectStatusesApi* | [**getProjectStatusesForProject**](docs/ProjectStatusesApi.md#getProjectStatusesForProject) | **GET** /projects/{project_gid}/project_statuses | Get statuses from a project\n*Asana.ProjectTemplatesApi* | [**deleteProjectTemplate**](docs/ProjectTemplatesApi.md#deleteProjectTemplate) | **DELETE** /project_templates/{project_template_gid} | Delete a project template\n*Asana.ProjectTemplatesApi* | [**getProjectTemplate**](docs/ProjectTemplatesApi.md#getProjectTemplate) | **GET** /project_templates/{project_template_gid} | Get a project template\n*Asana.ProjectTemplatesApi* | [**getProjectTemplates**](docs/ProjectTemplatesApi.md#getProjectTemplates) | **GET** /project_templates | Get multiple project templates\n*Asana.ProjectTemplatesApi* | [**getProjectTemplatesForTeam**](docs/ProjectTemplatesApi.md#getProjectTemplatesForTeam) | **GET** /teams/{team_gid}/project_templates | Get a team\u0026#x27;s project templates\n*Asana.ProjectTemplatesApi* | [**instantiateProject**](docs/ProjectTemplatesApi.md#instantiateProject) | **POST** /project_templates/{project_template_gid}/instantiateProject | Instantiate a project from a project template\n*Asana.ProjectsApi* | [**addCustomFieldSettingForProject**](docs/ProjectsApi.md#addCustomFieldSettingForProject) | **POST** /projects/{project_gid}/addCustomFieldSetting | Add a custom field to a project\n*Asana.ProjectsApi* | [**addFollowersForProject**](docs/ProjectsApi.md#addFollowersForProject) | **POST** /projects/{project_gid}/addFollowers | Add followers to a project\n*Asana.ProjectsApi* | [**addMembersForProject**](docs/ProjectsApi.md#addMembersForProject) | **POST** /projects/{project_gid}/addMembers | Add users to a project\n*Asana.ProjectsApi* | [**createProject**](docs/ProjectsApi.md#createProject) | **POST** /projects | Create a project\n*Asana.ProjectsApi* | [**createProjectForTeam**](docs/ProjectsApi.md#createProjectForTeam) | **POST** /teams/{team_gid}/projects | Create a project in a team\n*Asana.ProjectsApi* | [**createProjectForWorkspace**](docs/ProjectsApi.md#createProjectForWorkspace) | **POST** /workspaces/{workspace_gid}/projects | Create a project in a workspace\n*Asana.ProjectsApi* | [**deleteProject**](docs/ProjectsApi.md#deleteProject) | **DELETE** /projects/{project_gid} | Delete a project\n*Asana.ProjectsApi* | [**duplicateProject**](docs/ProjectsApi.md#duplicateProject) | **POST** /projects/{project_gid}/duplicate | Duplicate a project\n*Asana.ProjectsApi* | [**getProject**](docs/ProjectsApi.md#getProject) | **GET** /projects/{project_gid} | Get a project\n*Asana.ProjectsApi* | [**getProjects**](docs/ProjectsApi.md#getProjects) | **GET** /projects | Get multiple projects\n*Asana.ProjectsApi* | [**getProjectsForTask**](docs/ProjectsApi.md#getProjectsForTask) | **GET** /tasks/{task_gid}/projects | Get projects a task is in\n*Asana.ProjectsApi* | [**getProjectsForTeam**](docs/ProjectsApi.md#getProjectsForTeam) | **GET** /teams/{team_gid}/projects | Get a team\u0026#x27;s projects\n*Asana.ProjectsApi* | [**getProjectsForWorkspace**](docs/ProjectsApi.md#getProjectsForWorkspace) | **GET** /workspaces/{workspace_gid}/projects | Get all projects in a workspace\n*Asana.ProjectsApi* | [**getTaskCountsForProject**](docs/ProjectsApi.md#getTaskCountsForProject) | **GET** /projects/{project_gid}/task_counts | Get task count of a project\n*Asana.ProjectsApi* | [**projectSaveAsTemplate**](docs/ProjectsApi.md#projectSaveAsTemplate) | **POST** /projects/{project_gid}/saveAsTemplate | Create a project template from a project\n*Asana.ProjectsApi* | [**removeCustomFieldSettingForProject**](docs/ProjectsApi.md#removeCustomFieldSettingForProject) | **POST** /projects/{project_gid}/removeCustomFieldSetting | Remove a custom field from a project\n*Asana.ProjectsApi* | [**removeFollowersForProject**](docs/ProjectsApi.md#removeFollowersForProject) | **POST** /projects/{project_gid}/removeFollowers | Remove followers from a project\n*Asana.ProjectsApi* | [**removeMembersForProject**](docs/ProjectsApi.md#removeMembersForProject) | **POST** /projects/{project_gid}/removeMembers | Remove users from a project\n*Asana.ProjectsApi* | [**updateProject**](docs/ProjectsApi.md#updateProject) | **PUT** /projects/{project_gid} | Update a project\n*Asana.RulesApi* | [**triggerRule**](docs/RulesApi.md#triggerRule) | **POST** /rule_triggers/{rule_trigger_gid}/run | Trigger a rule\n*Asana.SectionsApi* | [**addTaskForSection**](docs/SectionsApi.md#addTaskForSection) | **POST** /sections/{section_gid}/addTask | Add task to section\n*Asana.SectionsApi* | [**createSectionForProject**](docs/SectionsApi.md#createSectionForProject) | **POST** /projects/{project_gid}/sections | Create a section in a project\n*Asana.SectionsApi* | [**deleteSection**](docs/SectionsApi.md#deleteSection) | **DELETE** /sections/{section_gid} | Delete a section\n*Asana.SectionsApi* | [**getSection**](docs/SectionsApi.md#getSection) | **GET** /sections/{section_gid} | Get a section\n*Asana.SectionsApi* | [**getSectionsForProject**](docs/SectionsApi.md#getSectionsForProject) | **GET** /projects/{project_gid}/sections | Get sections in a project\n*Asana.SectionsApi* | [**insertSectionForProject**](docs/SectionsApi.md#insertSectionForProject) | **POST** /projects/{project_gid}/sections/insert | Move or Insert sections\n*Asana.SectionsApi* | [**updateSection**](docs/SectionsApi.md#updateSection) | **PUT** /sections/{section_gid} | Update a section\n*Asana.StatusUpdatesApi* | [**createStatusForObject**](docs/StatusUpdatesApi.md#createStatusForObject) | **POST** /status_updates | Create a status update\n*Asana.StatusUpdatesApi* | [**deleteStatus**](docs/StatusUpdatesApi.md#deleteStatus) | **DELETE** /status_updates/{status_update_gid} | Delete a status update\n*Asana.StatusUpdatesApi* | [**getStatus**](docs/StatusUpdatesApi.md#getStatus) | **GET** /status_updates/{status_update_gid} | Get a status update\n*Asana.StatusUpdatesApi* | [**getStatusesForObject**](docs/StatusUpdatesApi.md#getStatusesForObject) | **GET** /status_updates | Get status updates from an object\n*Asana.StoriesApi* | [**createStoryForTask**](docs/StoriesApi.md#createStoryForTask) | **POST** /tasks/{task_gid}/stories | Create a story on a task\n*Asana.StoriesApi* | [**deleteStory**](docs/StoriesApi.md#deleteStory) | **DELETE** /stories/{story_gid} | Delete a story\n*Asana.StoriesApi* | [**getStoriesForTask**](docs/StoriesApi.md#getStoriesForTask) | **GET** /tasks/{task_gid}/stories | Get stories from a task\n*Asana.StoriesApi* | [**getStory**](docs/StoriesApi.md#getStory) | **GET** /stories/{story_gid} | Get a story\n*Asana.StoriesApi* | [**updateStory**](docs/StoriesApi.md#updateStory) | **PUT** /stories/{story_gid} | Update a story\n*Asana.TagsApi* | [**createTag**](docs/TagsApi.md#createTag) | **POST** /tags | Create a tag\n*Asana.TagsApi* | [**createTagForWorkspace**](docs/TagsApi.md#createTagForWorkspace) | **POST** /workspaces/{workspace_gid}/tags | Create a tag in a workspace\n*Asana.TagsApi* | [**deleteTag**](docs/TagsApi.md#deleteTag) | **DELETE** /tags/{tag_gid} | Delete a tag\n*Asana.TagsApi* | [**getTag**](docs/TagsApi.md#getTag) | **GET** /tags/{tag_gid} | Get a tag\n*Asana.TagsApi* | [**getTags**](docs/TagsApi.md#getTags) | **GET** /tags | Get multiple tags\n*Asana.TagsApi* | [**getTagsForTask**](docs/TagsApi.md#getTagsForTask) | **GET** /tasks/{task_gid}/tags | Get a task\u0026#x27;s tags\n*Asana.TagsApi* | [**getTagsForWorkspace**](docs/TagsApi.md#getTagsForWorkspace) | **GET** /workspaces/{workspace_gid}/tags | Get tags in a workspace\n*Asana.TagsApi* | [**updateTag**](docs/TagsApi.md#updateTag) | **PUT** /tags/{tag_gid} | Update a tag\n*Asana.TaskTemplatesApi* | [**deleteTaskTemplate**](docs/TaskTemplatesApi.md#deleteTaskTemplate) | **DELETE** /task_templates/{task_template_gid} | Delete a task template\n*Asana.TaskTemplatesApi* | [**getTaskTemplate**](docs/TaskTemplatesApi.md#getTaskTemplate) | **GET** /task_templates/{task_template_gid} | Get a task template\n*Asana.TaskTemplatesApi* | [**getTaskTemplates**](docs/TaskTemplatesApi.md#getTaskTemplates) | **GET** /task_templates | Get multiple task templates\n*Asana.TaskTemplatesApi* | [**instantiateTask**](docs/TaskTemplatesApi.md#instantiateTask) | **POST** /task_templates/{task_template_gid}/instantiateTask | Instantiate a task from a task template\n*Asana.TasksApi* | [**addDependenciesForTask**](docs/TasksApi.md#addDependenciesForTask) | **POST** /tasks/{task_gid}/addDependencies | Set dependencies for a task\n*Asana.TasksApi* | [**addDependentsForTask**](docs/TasksApi.md#addDependentsForTask) | **POST** /tasks/{task_gid}/addDependents | Set dependents for a task\n*Asana.TasksApi* | [**addFollowersForTask**](docs/TasksApi.md#addFollowersForTask) | **POST** /tasks/{task_gid}/addFollowers | Add followers to a task\n*Asana.TasksApi* | [**addProjectForTask**](docs/TasksApi.md#addProjectForTask) | **POST** /tasks/{task_gid}/addProject | Add a project to a task\n*Asana.TasksApi* | [**addTagForTask**](docs/TasksApi.md#addTagForTask) | **POST** /tasks/{task_gid}/addTag | Add a tag to a task\n*Asana.TasksApi* | [**createSubtaskForTask**](docs/TasksApi.md#createSubtaskForTask) | **POST** /tasks/{task_gid}/subtasks | Create a subtask\n*Asana.TasksApi* | [**createTask**](docs/TasksApi.md#createTask) | **POST** /tasks | Create a task\n*Asana.TasksApi* | [**deleteTask**](docs/TasksApi.md#deleteTask) | **DELETE** /tasks/{task_gid} | Delete a task\n*Asana.TasksApi* | [**duplicateTask**](docs/TasksApi.md#duplicateTask) | **POST** /tasks/{task_gid}/duplicate | Duplicate a task\n*Asana.TasksApi* | [**getDependenciesForTask**](docs/TasksApi.md#getDependenciesForTask) | **GET** /tasks/{task_gid}/dependencies | Get dependencies from a task\n*Asana.TasksApi* | [**getDependentsForTask**](docs/TasksApi.md#getDependentsForTask) | **GET** /tasks/{task_gid}/dependents | Get dependents from a task\n*Asana.TasksApi* | [**getSubtasksForTask**](docs/TasksApi.md#getSubtasksForTask) | **GET** /tasks/{task_gid}/subtasks | Get subtasks from a task\n*Asana.TasksApi* | [**getTask**](docs/TasksApi.md#getTask) | **GET** /tasks/{task_gid} | Get a task\n*Asana.TasksApi* | [**getTaskForCustomID**](docs/TasksApi.md#getTaskForCustomID) | **GET** /workspaces/{workspace_gid}/tasks/custom_id/{custom_id} | Get a task for a given custom ID\n*Asana.TasksApi* | [**getTasks**](docs/TasksApi.md#getTasks) | **GET** /tasks | Get multiple tasks\n*Asana.TasksApi* | [**getTasksForProject**](docs/TasksApi.md#getTasksForProject) | **GET** /projects/{project_gid}/tasks | Get tasks from a project\n*Asana.TasksApi* | [**getTasksForSection**](docs/TasksApi.md#getTasksForSection) | **GET** /sections/{section_gid}/tasks | Get tasks from a section\n*Asana.TasksApi* | [**getTasksForTag**](docs/TasksApi.md#getTasksForTag) | **GET** /tags/{tag_gid}/tasks | Get tasks from a tag\n*Asana.TasksApi* | [**getTasksForUserTaskList**](docs/TasksApi.md#getTasksForUserTaskList) | **GET** /user_task_lists/{user_task_list_gid}/tasks | Get tasks from a user task list\n*Asana.TasksApi* | [**removeDependenciesForTask**](docs/TasksApi.md#removeDependenciesForTask) | **POST** /tasks/{task_gid}/removeDependencies | Unlink dependencies from a task\n*Asana.TasksApi* | [**removeDependentsForTask**](docs/TasksApi.md#removeDependentsForTask) | **POST** /tasks/{task_gid}/removeDependents | Unlink dependents from a task\n*Asana.TasksApi* | [**removeFollowerForTask**](docs/TasksApi.md#removeFollowerForTask) | **POST** /tasks/{task_gid}/removeFollowers | Remove followers from a task\n*Asana.TasksApi* | [**removeProjectForTask**](docs/TasksApi.md#removeProjectForTask) | **POST** /tasks/{task_gid}/removeProject | Remove a project from a task\n*Asana.TasksApi* | [**removeTagForTask**](docs/TasksApi.md#removeTagForTask) | **POST** /tasks/{task_gid}/removeTag | Remove a tag from a task\n*Asana.TasksApi* | [**searchTasksForWorkspace**](docs/TasksApi.md#searchTasksForWorkspace) | **GET** /workspaces/{workspace_gid}/tasks/search | Search tasks in a workspace\n*Asana.TasksApi* | [**setParentForTask**](docs/TasksApi.md#setParentForTask) | **POST** /tasks/{task_gid}/setParent | Set the parent of a task\n*Asana.TasksApi* | [**updateTask**](docs/TasksApi.md#updateTask) | **PUT** /tasks/{task_gid} | Update a task\n*Asana.TeamMembershipsApi* | [**getTeamMembership**](docs/TeamMembershipsApi.md#getTeamMembership) | **GET** /team_memberships/{team_membership_gid} | Get a team membership\n*Asana.TeamMembershipsApi* | [**getTeamMemberships**](docs/TeamMembershipsApi.md#getTeamMemberships) | **GET** /team_memberships | Get team memberships\n*Asana.TeamMembershipsApi* | [**getTeamMembershipsForTeam**](docs/TeamMembershipsApi.md#getTeamMembershipsForTeam) | **GET** /teams/{team_gid}/team_memberships | Get memberships from a team\n*Asana.TeamMembershipsApi* | [**getTeamMembershipsForUser**](docs/TeamMembershipsApi.md#getTeamMembershipsForUser) | **GET** /users/{user_gid}/team_memberships | Get memberships from a user\n*Asana.TeamsApi* | [**addUserForTeam**](docs/TeamsApi.md#addUserForTeam) | **POST** /teams/{team_gid}/addUser | Add a user to a team\n*Asana.TeamsApi* | [**createTeam**](docs/TeamsApi.md#createTeam) | **POST** /teams | Create a team\n*Asana.TeamsApi* | [**getTeam**](docs/TeamsApi.md#getTeam) | **GET** /teams/{team_gid} | Get a team\n*Asana.TeamsApi* | [**getTeamsForUser**](docs/TeamsApi.md#getTeamsForUser) | **GET** /users/{user_gid}/teams | Get teams for a user\n*Asana.TeamsApi* | [**getTeamsForWorkspace**](docs/TeamsApi.md#getTeamsForWorkspace) | **GET** /workspaces/{workspace_gid}/teams | Get teams in a workspace\n*Asana.TeamsApi* | [**removeUserForTeam**](docs/TeamsApi.md#removeUserForTeam) | **POST** /teams/{team_gid}/removeUser | Remove a user from a team\n*Asana.TeamsApi* | [**updateTeam**](docs/TeamsApi.md#updateTeam) | **PUT** /teams/{team_gid} | Update a team\n*Asana.TimePeriodsApi* | [**getTimePeriod**](docs/TimePeriodsApi.md#getTimePeriod) | **GET** /time_periods/{time_period_gid} | Get a time period\n*Asana.TimePeriodsApi* | [**getTimePeriods**](docs/TimePeriodsApi.md#getTimePeriods) | **GET** /time_periods | Get time periods\n*Asana.TimeTrackingEntriesApi* | [**createTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#createTimeTrackingEntry) | **POST** /tasks/{task_gid}/time_tracking_entries | Create a time tracking entry\n*Asana.TimeTrackingEntriesApi* | [**deleteTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#deleteTimeTrackingEntry) | **DELETE** /time_tracking_entries/{time_tracking_entry_gid} | Delete a time tracking entry\n*Asana.TimeTrackingEntriesApi* | [**getTimeTrackingEntriesForTask**](docs/TimeTrackingEntriesApi.md#getTimeTrackingEntriesForTask) | **GET** /tasks/{task_gid}/time_tracking_entries | Get time tracking entries for a task\n*Asana.TimeTrackingEntriesApi* | [**getTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#getTimeTrackingEntry) | **GET** /time_tracking_entries/{time_tracking_entry_gid} | Get a time tracking entry\n*Asana.TimeTrackingEntriesApi* | [**updateTimeTrackingEntry**](docs/TimeTrackingEntriesApi.md#updateTimeTrackingEntry) | **PUT** /time_tracking_entries/{time_tracking_entry_gid} | Update a time tracking entry\n*Asana.TypeaheadApi* | [**typeaheadForWorkspace**](docs/TypeaheadApi.md#typeaheadForWorkspace) | **GET** /workspaces/{workspace_gid}/typeahead | Get objects via typeahead\n*Asana.UserTaskListsApi* | [**getUserTaskList**](docs/UserTaskListsApi.md#getUserTaskList) | **GET** /user_task_lists/{user_task_list_gid} | Get a user task list\n*Asana.UserTaskListsApi* | [**getUserTaskListForUser**](docs/UserTaskListsApi.md#getUserTaskListForUser) | **GET** /users/{user_gid}/user_task_list | Get a user\u0026#x27;s task list\n*Asana.UsersApi* | [**getFavoritesForUser**](docs/UsersApi.md#getFavoritesForUser) | **GET** /users/{user_gid}/favorites | Get a user\u0026#x27;s favorites\n*Asana.UsersApi* | [**getUser**](docs/UsersApi.md#getUser) | **GET** /users/{user_gid} | Get a user\n*Asana.UsersApi* | [**getUsers**](docs/UsersApi.md#getUsers) | **GET** /users | Get multiple users\n*Asana.UsersApi* | [**getUsersForTeam**](docs/UsersApi.md#getUsersForTeam) | **GET** /teams/{team_gid}/users | Get users in a team\n*Asana.UsersApi* | [**getUsersForWorkspace**](docs/UsersApi.md#getUsersForWorkspace) | **GET** /workspaces/{workspace_gid}/users | Get users in a workspace or organization\n*Asana.WebhooksApi* | [**createWebhook**](docs/WebhooksApi.md#createWebhook) | **POST** /webhooks | Establish a webhook\n*Asana.WebhooksApi* | [**deleteWebhook**](docs/WebhooksApi.md#deleteWebhook) | **DELETE** /webhooks/{webhook_gid} | Delete a webhook\n*Asana.WebhooksApi* | [**getWebhook**](docs/WebhooksApi.md#getWebhook) | **GET** /webhooks/{webhook_gid} | Get a webhook\n*Asana.WebhooksApi* | [**getWebhooks**](docs/WebhooksApi.md#getWebhooks) | **GET** /webhooks | Get multiple webhooks\n*Asana.WebhooksApi* | [**updateWebhook**](docs/WebhooksApi.md#updateWebhook) | **PUT** /webhooks/{webhook_gid} | Update a webhook\n*Asana.WorkspaceMembershipsApi* | [**getWorkspaceMembership**](docs/WorkspaceMembershipsApi.md#getWorkspaceMembership) | **GET** /workspace_memberships/{workspace_membership_gid} | Get a workspace membership\n*Asana.WorkspaceMembershipsApi* | [**getWorkspaceMembershipsForUser**](docs/WorkspaceMembershipsApi.md#getWorkspaceMembershipsForUser) | **GET** /users/{user_gid}/workspace_memberships | Get workspace memberships for a user\n*Asana.WorkspaceMembershipsApi* | [**getWorkspaceMembershipsForWorkspace**](docs/WorkspaceMembershipsApi.md#getWorkspaceMembershipsForWorkspace) | **GET** /workspaces/{workspace_gid}/workspace_memberships | Get the workspace memberships for a workspace\n*Asana.WorkspacesApi* | [**addUserForWorkspace**](docs/WorkspacesApi.md#addUserForWorkspace) | **POST** /workspaces/{workspace_gid}/addUser | Add a user to a workspace or organization\n*Asana.WorkspacesApi* | [**getWorkspace**](docs/WorkspacesApi.md#getWorkspace) | **GET** /workspaces/{workspace_gid} | Get a workspace\n*Asana.WorkspacesApi* | [**getWorkspaceEvents**](docs/WorkspacesApi.md#getWorkspaceEvents) | **GET** /workspaces/{workspace_gid}/events | Get workspace events\n*Asana.WorkspacesApi* | [**getWorkspaces**](docs/WorkspacesApi.md#getWorkspaces) | **GET** /workspaces | Get multiple workspaces\n*Asana.WorkspacesApi* | [**removeUserForWorkspace**](docs/WorkspacesApi.md#removeUserForWorkspace) | **POST** /workspaces/{workspace_gid}/removeUser | Remove a user from a workspace or organization\n*Asana.WorkspacesApi* | [**updateWorkspace**](docs/WorkspacesApi.md#updateWorkspace) | **PUT** /workspaces/{workspace_gid} | Update a workspace\n\n## Optional fields\n\nOur `opt_fields` feature allows you to request for properties of a resource that you want to be returned in the response (more information [here](https://developers.asana.com/docs/inputoutput-options)).\n\n**NOTE**: by default, endpoints that return an array of results (EX: [Get multiple tasks](https://developers.asana.com/reference/gettasks), [Get multiple projects](https://developers.asana.com/reference/getprojects)), will return a compact version of those results (EX: [Get multiple tasks](https://developers.asana.com/reference/gettasks) returns an array of [TaskCompact](https://developers.asana.com/reference/tasks#taskcompact) objects).\n\n### EX: [Get multiple tasks](https://developers.asana.com/reference/gettasks) / [**getTasks**](docs/TasksApi.md#getTasks) without `opt_fields`\n\n#### Example Request\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet opts = {\n    \"limit\": 2,\n    \"project\": \"\u003cYOUR_PROJECT_GID\u003e\"\n};\n\n// GET - get multiple tasks\ntasksApiInstance.getTasks(opts).then((result) =\u003e {\n    console.log(JSON.stringify(result.data, null, 2));\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### Example Response\n```javascript\n[\n  {\n    \"gid\": \"123\",\n    \"name\": \"Task 1\",\n    \"resource_type\": \"task\",\n    \"resource_subtype\": \"default_task\"\n  },\n  {\n    \"gid\": \"456\",\n    \"name\": \"Task 2\",\n    \"resource_type\": \"task\",\n    \"resource_subtype\": \"default_task\"\n  }\n]\n```\n\n### EX: [Get multiple tasks](https://developers.asana.com/reference/gettasks) / [**getTasks**](docs/TasksApi.md#getTasks) with `opt_fields`\n\n#### Example Request\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet opts = { \n    \"limit\": 1,\n    \"project\": \"\u003cYOUR_PROJECT_GID\u003e\",\n    \"opt_fields\": \"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.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.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.resource_subtype,custom_fields.text_value,custom_fields.type,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\"\n};\n\n// GET - get multiple tasks\ntasksApiInstance.getTasks(opts).then((result) =\u003e {\n    console.log(JSON.stringify(result.data, null, 2));\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### Example Response\n```javascript\n[\n  {\n    \"gid\": \"129839839\",\n    \"actual_time_minutes\": null,\n    \"assignee\": {\n      \"gid\": \"120938293\",\n      \"name\": \"user@example.com\"\n    },\n    \"assignee_status\": \"upcoming\",\n    \"assignee_section\": {\n      \"gid\": \"1094838938\",\n      \"name\": \"Recently assigned\"\n    },\n    \"completed\": false,\n    \"completed_at\": null,\n    \"completed_by\": null,\n    \"created_at\": \"2023-01-01T20:31:21.717Z\",\n    \"created_by\": {\n      \"gid\": \"1201784467042440\",\n      \"resource_type\": \"user\"\n    },\n    \"custom_fields\": [\n      {\n        \"gid\": \"191859815\",\n        \"enabled\": true,\n        \"name\": \"Estimated time\",\n        \"description\": \"Asana-created. Estimate time to complete a task.\",\n        \"number_value\": null,\n        \"precision\": 0,\n        \"format\": \"duration\",\n        \"currency_code\": null,\n        \"custom_label\": null,\n        \"created_by\": null,\n        \"custom_label_position\": null,\n        \"display_value\": null,\n        \"resource_subtype\": \"number\",\n        \"is_formula_field\": false,\n        \"is_value_read_only\": false,\n        \"type\": \"number\"\n      }\n    ],\n    \"dependencies\": [],\n    \"dependents\": [],\n    \"due_at\": \"2025-01-20T02:06:58.000Z\",\n    \"due_on\": \"2025-01-19\",\n    \"followers\": [\n      {\n        \"gid\": \"120938293\",\n        \"name\": \"user@example.com\"\n      }\n    ],\n    \"hearted\": true,\n    \"hearts\": [\n      {\n        \"gid\": \"594849843\",\n        \"user\": {\n          \"gid\": \"120938293\",\n          \"name\": \"user@example.com\"\n        }\n      }\n    ],\n    \"html_notes\": \"\u003cbody\u003eExample task notes\u003c/body\u003e\",\n    \"is_rendered_as_separator\": false,\n    \"liked\": true,\n    \"likes\": [\n      {\n        \"gid\": \"58303939\",\n        \"user\": {\n          \"gid\": \"120938293\",\n          \"name\": \"user@example.com\"\n        }\n      }\n    ],\n    \"memberships\": [\n      {\n        \"project\": {\n          \"gid\": \"4567\",\n          \"name\": \"Example Project\"\n        },\n        \"section\": {\n          \"gid\": \"8900\",\n          \"name\": \"Untitled section\"\n        }\n      }\n    ],\n    \"modified_at\": \"2023-01-25T21:24:06.996Z\",\n    \"name\": \"Task 1\",\n    \"notes\": \"Example task notes\",\n    \"num_hearts\": 1,\n    \"num_likes\": 1,\n    \"num_subtasks\": 0,\n    \"parent\": null,\n    \"permalink_url\": \"https://app.asana.com/0/58303939/129839839\",\n    \"projects\": [\n      {\n        \"gid\": \"4567\",\n        \"name\": \"Example Project\"\n      }\n    ],\n    \"start_at\": null,\n    \"start_on\": null,\n    \"tags\": [],\n    \"resource_subtype\": \"default_task\",\n    \"workspace\": {\n      \"gid\": \"111111\",\n      \"name\": \"Example Workspace\"\n    }\n  }\n]\n```\n\n## Pagination\n\nBy default, endpoints that return an array of results (EX: [Get multiple tasks](https://developers.asana.com/reference/gettasks), [Get multiple projects](https://developers.asana.com/reference/getprojects)), will return a [Collection](src/utils/collection.js) object.\nThis collection object contains a `nextPage` method that can be used to fetch for the next page of results. **NOTE**: in order to use `nextPage` you must have provided a `limit` query parameter argument in the initial request.\n\n### Use case\n\nYou may run into the following error when making a request to an endpoint that has \u003e1000 results:\n\n\u003e \"The result is too large. You should use pagination (may require specifying a workspace)!\"\n\nIn this scenario you will want to use pagaintion to gather your results. To do this, you will need to provide a `limit` query parameter argument in your request. This `limit` query parameter represents the number of results per page. NOTE: the `limit` can only be between 1 and 100.\n\nEX: Pagination gather all resources\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet opts = {\n    \"project\": \"\u003cYOUR_PROJECT_GID\u003e\",\n    \"limit\": 100,\n};\n\nasync function getAllTasks(opts) {\n    let tasks = await tasksApiInstance.getTasks(opts).then(async (response) =\u003e {\n        let result = [];\n        let page = response;\n        while(true) {\n            // Add items on page to list of results\n            result = result.concat(page.data);\n            // Fetch the next page\n            page = await page.nextPage();\n            // If the there is no data in the next page break from the loop\n            if (!page.data) {\n                break;\n            }\n        }\n        return result;\n    }, (error) =\u003e {\n        console.error(error.response.body);\n    });\n    // Do something with the tasks. EX: print out results\n    console.log('Tasks: ' + JSON.stringify(tasks, null, 2));\n}\n\ngetAllTasks(opts);\n\n```\n\nSample output:\n```bash\nTasks: [\n    {\n      \"gid\": \"123\",\n      \"name\": \"task 1\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"456\",\n      \"name\": \"task 2\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"789\",\n      \"name\": \"task 3\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"101112\",\n      \"name\": \"task 4\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"131415\",\n      \"name\": \"task 5\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"161718\",\n      \"name\": \"task 6\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"192021\",\n      \"name\": \"task 7\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"222324\",\n      \"name\": \"task 8\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"252627\",\n      \"name\": \"task 9\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"282930\",\n      \"name\": \"task 10\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n    {\n      \"gid\": \"313233\",\n      \"name\": \"task 11\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n]\n```\n\nEX: Pagination do something per page\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet opts = {\n    'project': \"\u003cYOUR_PROJECT_GID\u003e\",\n    \"limit\": 5,\n};\n\nlet pageIndex = 1;\n\ntasksApiInstance.getTasks(opts).then(async (response) =\u003e {\n    let page = response;\n    while(true) {\n        // Do something with the page results\n        // EX: print the name of the tasks on that page\n        console.log(`Page ${pageIndex}: `);\n        page.data.forEach(task =\u003e {\n            console.log(`    ${task.name}`);\n        });\n        pageIndex += 1;\n\n        page = await page.nextPage();\n        // If the there is no data in the next page break from the loop\n        if (!page.data) {\n            break;\n        }\n    }\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n\n```\n\nSample output:\n\n```bash\nPage 1:\n    task 1\n    task 2\n    task 3\n    task 4\n    task 5\nPage 2:\n    task 6\n    task 7\n    task 8\n    task 9\n    task 10\nPage 3:\n    task 11\n    task 12\n    task 13\n    task 14\n    task 15\n```\n\n### Turning off Pagination\n\nIf you do not want a [Collection](src/utils/collection.js) object returned and want to implement your own pagination, you can disable pagination by setting `RETURN_COLLECTION` to `false`:\n\nEX: Turning off pagination\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// Turn off pagination\nclient.RETURN_COLLECTION = false;\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet opts = {\n    'project': \"\u003cYOUR_PROJECT_GID\u003e\",\n    'limit': 1\n};\ntasksApiInstance.getTasks(opts).then((result) =\u003e {\n    console.log('API called successfully. Returned data: ' + JSON.stringify(result, null, 2));\n})\n```\n\nSample response:\n```\nAPI called successfully. Returned data: {\n  \"data\": [\n    {\n      \"gid\": \"\u003cTASK_GID\u003e\",\n      \"name\": \"Task 1\",\n      \"resource_type\": \"task\",\n      \"resource_subtype\": \"default_task\"\n    },\n  ],\n  \"next_page\": {\n    \"offset\": \"gjJl2xAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJib3JkZXJfcmHilbI6IltcIlZ5IixcIjlaWlhVMkkzUUdOoXcEIsMTIwNDYxNTc0NTypNDI3MF0iLCJpYXQiOjE2OTc4MjgsSkjjQsImV4cCI6MTY5NzgyOTM2NH0.5VuMfKvqexoEsKfoPFtayWBNWiKvfR7_hN6MJaaIkx8\",\n    \"path\": \"/tasks?project=123456\u0026limit=1\u0026offset=gjJl2xAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJib3JkZXJfcmHilbI6IltcIlZ5IixcIjlaWlhVMkkzUUdOoXcEIsMTIwNDYxNTc0NTypNDI3MF0iLCJpYXQiOjE2OTc4MjgsSkjjQsImV4cCI6MTY5NzgyOTM2NH0.5VuMfKvqexoEsKfoPFtayWBNWiKvfR7_hN6MJaaIkx8\",\n    \"uri\": \"https://app.asana.com/api/1.0/tasks?project=123456\u0026limit=1\u0026offset=gjJl2xAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJib3JkZXJfcmHilbI6IltcIlZ5IixcIjlaWlhVMkkzUUdOoXcEIsMTIwNDYxNTc0NTypNDI3MF0iLCJpYXQiOjE2OTc4MjgsSkjjQsImV4cCI6MTY5NzgyOTM2NH0.5VuMfKvqexoEsKfoPFtayWBNWiKvfR7_hN6MJaaIkx8\"\n  }\n}\n```\n\n## Getting events\n\nIn order to get events you will need a sync token. This sync token can be acquired in the error message from the initial\nrequest to [getEvents](docs/EventsApi.md#getEvents).\n\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet eventsApiInstance = new Asana.EventsApi();\nlet resource = \"\u003cYOUR_TASK_OR_PROJECT_GID\u003e\"; // String | A resource ID to subscribe to. The resource can be a task or project.\nlet opts = {\n    \"sync\": \"\"\n};\nconst timeouts = 5000\n\n// Used to fetch for initial sync token\nconst setSyncToken = async () =\u003e {\n    await eventsApiInstance.getEvents(resource, opts).then((result) =\u003e {\n        console.log(JSON.stringify(result.data, null, 2));\n    }, (error) =\u003e {\n        let syncToken = error.response.body.sync;\n        opts['sync'] = syncToken;\n    });\n}\n\nconst getEvents = async () =\u003e {\n    console.log(\"Setting sync token\");\n    await setSyncToken();\n    // Fetch for new events every 5 seconds\n    console.log(`Fetching events every ${timeouts/1000} second(s)`);\n    while(true) {\n        await eventsApiInstance.getEvents(resource, opts).then((result) =\u003e {\n            // Print response\n            console.log(`Fetching events since sync: ${opts['sync']}`);\n            console.log(JSON.stringify(result.data, null, 2));\n\n            // Update the sync token with the new sync token provided in the response\n            opts['sync'] = result._response.sync;\n        }, (error) =\u003e {\n            if (error.status === 412) {\n                let syncToken = error.response.body.sync;\n                opts['sync'] = syncToken;\n                console.log(`412 error new sync token: ${syncToken}`);\n            } else{\n                console.error(error.response.text);\n            }\n        });\n        await new Promise(resolve =\u003e setTimeout(resolve, timeouts));\n    }\n}\n\ngetEvents();\n```\n\n## Accessing repsonse data\n\n```javascript\n.\n.\n.\ntasksApiInstance.getTask(task_gid, opts).then((task) =\u003e {\n    let taskName = task.data.name;\n    let taskNotes = task.data.notes;\n    console.log(`taskName: ${taskName}`);\n    console.log(`taskNotes: ${taskNotes}`);\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n## Accessing response status code and headers\nUse the `\u003cMETHOD_NAME\u003eWithHttpInfo` (EX: `getTaskWithHttpInfo`) method to make a request that returns a response with headers.\n\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\nlet tasksApiInstance = new Asana.TasksApi();\nlet task_gid = \"\u003cYOUR_TASK_GID\u003e\";\nlet opts = {};\n\ntasksApiInstance.getTaskWithHttpInfo(task_gid, opts).then((response_and_data) =\u003e {\n    let data = response_and_data.data;\n    let response = response_and_data.response;\n    let task = data.data;\n    let headers = response.headers;\n    console.log(task);\n    console.log(headers);\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n## Adding deprecation flag: \"asana-enable\" or \"asana-disable\" header\n\nEX: Asana-Enable header\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// Add asana-enable header for the client\nclient.defaultHeaders['asana-enable'] = 'new_goal_memberships';\n```\n\nEX: Asana-Disable header\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// Add asana-disable header for the client\nclient.defaultHeaders['asana-disable'] = 'new_goal_memberships';\n```\n\n## Using the `callApi` method\n\nUse the `callApi` method to make http calls when the endpoint does not exist in the current library version or has bugs\n\n### Example: GET, POST, PUT, DELETE on tasks\n\n#### GET - get a task\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// GET - get a task\nclient.callApi(\n    path='/tasks/{task_gid}',\n    httpMethod='GET',\n    pathParams={\"task_gid\": \"\u003cYOUR_TASK_GID\u003e\"},\n    queryParams={},\n    headerParams={},\n    formParams={},\n    bodyParam=null,\n    authNames=['token'],\n    contentTypes=[],\n    accepts=['application/json; charset=UTF-8'],\n    returnType='Blob'\n).then((response_and_data) =\u003e {\n    let result = response_and_data.data;\n    let task = result.data;\n    console.log(task.name);\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### GET - get multiple tasks -\u003e with opt_fields\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// GET - get multiple tasks -\u003e with opt_fields\nclient.callApi(\n    path='/tasks',\n    httpMethod='GET',\n    pathParams={},\n    queryParams={\n        \"limit\": 50,\n        \"modified_since\": '2012-02-22T02:06:58.158Z', // OR new Date(\"2012-02-22T02:06:58.158Z\")\n        \"project\": '\u003cYOUR_PROJECT_GID\u003e',\n        \"opt_fields\": 'name,notes'\n    },\n    headerParams={},\n    formParams={},\n    bodyParam=null,\n    authNames=['token'],\n    contentTypes=[],\n    accepts=['application/json; charset=UTF-8'],\n    returnType='Blob'\n).then((response_and_data) =\u003e {\n    let result = response_and_data.data;\n    let tasks = result.data;\n    if (tasks.length \u003e 0) {\n        console.log(`Task 1 Name: ${tasks[0].name}`);\n        console.log(`Task 1 Notes: ${tasks[0].notes}`);\n    }\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### POST - create a task\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// POST - create a task\nclient.callApi(\n    path='/tasks',\n    httpMethod='POST',\n    pathParams={},\n    queryParams={},\n    headerParams={},\n    formParams={},\n    bodyParam={\n        data: {\n            \"name\": \"New Task\",\n            \"approval_status\": \"pending\",\n            \"assignee_status\": \"upcoming\",\n            \"completed\": false,\n            \"html_notes\": \"\u003cbody\u003eMittens \u003cem\u003ereally\u003c/em\u003e likes the stuff from Humboldt.\u003c/body\u003e\",\n            \"is_rendered_as_separator\": false,\n            \"liked\": true,\n            \"assignee\": \"me\",\n            \"projects\": [\"\u003cYOUR_PROJECT_GID\u003e\"],\n        }\n    },\n    authNames=['token'],\n    contentTypes=[],\n    accepts=['application/json; charset=UTF-8'],\n    returnType='Blob'\n).then((response_and_data) =\u003e {\n    let result = response_and_data.data;\n    let task = result.data;\n    console.log(task.name);\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### PUT - update a task\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// PUT - update a task\nclient.callApi(\n    path='/tasks/{task_gid}',\n    httpMethod='PUT',\n    pathParams={task_gid: \"\u003cYOUR_TASK_GID\u003e\"},\n    queryParams={},\n    headerParams={},\n    formParams={},\n    bodyParam={\n        \"data\": {\n            \"name\": \"Updated Task\",\n            \"html_notes\": \"\u003cbody\u003eUpdated task notes\u003c/body\u003e\",\n            \"due_at\": \"2025-01-20T02:06:58.147Z\"\n        }\n    },\n    authNames=['token'],\n    contentTypes=[],\n    accepts=['application/json; charset=UTF-8'],\n    returnType='Blob'\n).then((response_and_data) =\u003e {\n    let result = response_and_data.data;\n    let task = result.data;\n    console.log(task.name);\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n#### DELETE - delete a task\n```javascript\nconst Asana = require('asana');\n\nlet client = Asana.ApiClient.instance;\nlet token = client.authentications['token'];\ntoken.accessToken = '\u003cYOUR_ACCESS_TOKEN\u003e';\n\n// DELETE - delete a task\nclient.callApi(\n    path='/tasks/{task_gid}',\n    httpMethod='DELETE',\n    pathParams={\"task_gid\": \"\u003cYOUR_TASK_GID\u003e\"},\n    queryParams={},\n    headerParams={},\n    formParams={},\n    bodyParam=null,\n    authNames=['token'],\n    contentTypes=[],\n    accepts=['application/json; charset=UTF-8'],\n    returnType='Blob'\n).then((response_and_data) =\u003e {\n    let result = response_and_data.data;\n    let result = result.data;\n    console.log(result);\n}, (error) =\u003e {\n    console.error(error.response.body);\n});\n```\n\n[release-image]: https://img.shields.io/github/release/asana/node-asana.svg\n[release-url]: https://github.com/Asana/node-asana/releases/tag/v3.1.0\n[npm-image]: http://img.shields.io/npm/v/asana.svg?style=flat-square\n[npm-url]: https://www.npmjs.org/package/asana\n","funding_links":[],"categories":["⚙️ Backend \u0026 APIs","JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAsana%2Fnode-asana","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FAsana%2Fnode-asana","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FAsana%2Fnode-asana/lists"}