Socket
Socket
Sign inDemoInstall

asana

Package Overview
Dependencies
118
Maintainers
3
Versions
81
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

asana

This_is_the_interface_for_interacting_with_the__Asana_Platform_httpsdevelopers_asana_com__Our_API_reference_is_generated_from_our__OpenAPI_spec__httpsraw_githubusercontent_comAsanaopenapimasterdefsasana_oas_yaml_


Version published
Maintainers
3
Weekly downloads
69,845
decreased by-5.63%

Weekly downloads

Readme

Source

asana GitHub release NPM Version

  • API version: 1.0
  • Package version: 3.0.4

Installation

For Node.js

npm install from npmjs
npm install asana --save

For browser

Include the latest release directly from GitHub:

<script src="https://github.com/Asana/node-asana/releases/download/v3.0.4/asana-min.js"></script>

Example usage (NOTE: be careful not to expose your access token):

<script>
    let client = Asana.ApiClient.instance;
    let token = client.authentications['token'];
    token.accessToken = '<YOUR_ACCESS_TOKEN>';

    let usersApiInstance = new Asana.UsersApi();
    let user_gid = "me";
    let opts = {};

    usersApiInstance.getUser(user_gid, opts).then((result) => {
        console.log('API called successfully. Returned data: ' +  JSON.stringify(result.data, null, 2));
    }, (error) => {
        console.error(error.response.body);
    });
</script>

Webpack Configuration

Using Webpack you may encounter the following error: "Module not found: Error: Cannot resolve module", most certainly you should disable AMD loader. Add/merge the following section to your webpack config:

module: {
  rules: [
    {
      parser: {
        amd: false
      }
    }
  ]
}

Getting Started

Please follow the installation instruction and execute the following JS code:

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let usersApiInstance = new Asana.UsersApi();
let user_gid = "me"; // String | A string identifying a user. This can either be the string \"me\", an email, or the gid of a user.
let opts = { 
    "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.
};

usersApiInstance.getUser(user_gid, opts).then((result) => {
    console.log('API called successfully. Returned data: ' +  JSON.stringify(result.data, null, 2));
}, (error) => {
    console.error(error.response.body);
});

Example: GET, POST, PUT, DELETE on tasks

GET - get multiple tasks
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let opts = { 
    "limit": 50, // Number | Results per page. The number of objects to return per page. The value must be between 1 and 100.
    "project": "<YOUR_PROJECT_GID>", // String | The project to filter tasks on.
    "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.*
    "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.
};

// GET - get multiple tasks
tasksApiInstance.getTasks(opts).then((result) => {
    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));
}, (error) => {
    console.error(error.response.body);
});
POST - create a task
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let body = {
    "data": {
        "name": "New Task",
        "approval_status": "pending",
        "assignee_status": "upcoming",
        "completed": false,
        "external": {
            "gid": "1234",
            "data": "A blob of information.",
        },
        "html_notes": "<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>",
        "is_rendered_as_separator": false,
        "liked": true,
        "assignee": "me",
        "projects": ["<YOUR_PROJECT_GID>"],
    },
};
let opts = {};

// POST - Create a task
tasksApiInstance.createTask(body, opts).then((result) => {
    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));
}, (error) => {
    console.error(error.response.body);
});
PUT - update a task
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let task_gid = "<YOUR_TASK_GID>";
let body = {
    "data": {
        "name": "Updated Task",
    },
};
let opts = {};

// PUT - Update a task
tasksApiInstance.updateTask(body, task_gid, opts).then((result) => {
    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));
}, (error) => {
    console.error(error.response.body);
});
DELETE - delete a task
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let task_gid = "<YOUR_TASK_GID>";

// DELETE - Delete a task
tasksApiInstance.deleteTask(task_gid).then((result) => {
    console.log('API called successfully. Returned data: ' + JSON.stringify(result.data, null, 2));
}, (error) => {
    console.error(error.response.body);
});

Documentation for API Endpoints

All URIs are relative to https://app.asana.com/api/1.0

ClassMethodHTTP requestDescription
Asana.AllocationsApicreateAllocationPOST /allocationsCreate an allocation
Asana.AllocationsApideleteAllocationDELETE /allocations/{allocation_gid}Delete an allocation
Asana.AllocationsApigetAllocationGET /allocations/{allocation_gid}Get an allocation
Asana.AllocationsApigetAllocationsGET /allocationsGet multiple allocations
Asana.AllocationsApiupdateAllocationPUT /allocations/{allocation_gid}Update an allocation
Asana.AttachmentsApicreateAttachmentForObjectPOST /attachmentsUpload an attachment
Asana.AttachmentsApideleteAttachmentDELETE /attachments/{attachment_gid}Delete an attachment
Asana.AttachmentsApigetAttachmentGET /attachments/{attachment_gid}Get an attachment
Asana.AttachmentsApigetAttachmentsForObjectGET /attachmentsGet attachments from an object
Asana.AuditLogAPIApigetAuditLogEventsGET /workspaces/{workspace_gid}/audit_log_eventsGet audit log events
Asana.BatchAPIApicreateBatchRequestPOST /batchSubmit parallel requests
Asana.CustomFieldSettingsApigetCustomFieldSettingsForPortfolioGET /portfolios/{portfolio_gid}/custom_field_settingsGet a portfolio's custom fields
Asana.CustomFieldSettingsApigetCustomFieldSettingsForProjectGET /projects/{project_gid}/custom_field_settingsGet a project's custom fields
Asana.CustomFieldsApicreateCustomFieldPOST /custom_fieldsCreate a custom field
Asana.CustomFieldsApicreateEnumOptionForCustomFieldPOST /custom_fields/{custom_field_gid}/enum_optionsCreate an enum option
Asana.CustomFieldsApideleteCustomFieldDELETE /custom_fields/{custom_field_gid}Delete a custom field
Asana.CustomFieldsApigetCustomFieldGET /custom_fields/{custom_field_gid}Get a custom field
Asana.CustomFieldsApigetCustomFieldsForWorkspaceGET /workspaces/{workspace_gid}/custom_fieldsGet a workspace's custom fields
Asana.CustomFieldsApiinsertEnumOptionForCustomFieldPOST /custom_fields/{custom_field_gid}/enum_options/insertReorder a custom field's enum
Asana.CustomFieldsApiupdateCustomFieldPUT /custom_fields/{custom_field_gid}Update a custom field
Asana.CustomFieldsApiupdateEnumOptionPUT /enum_options/{enum_option_gid}Update an enum option
Asana.EventsApigetEventsGET /eventsGet events on a resource
Asana.GoalRelationshipsApiaddSupportingRelationshipPOST /goals/{goal_gid}/addSupportingRelationshipAdd a supporting goal relationship
Asana.GoalRelationshipsApigetGoalRelationshipGET /goal_relationships/{goal_relationship_gid}Get a goal relationship
Asana.GoalRelationshipsApigetGoalRelationshipsGET /goal_relationshipsGet goal relationships
Asana.GoalRelationshipsApiremoveSupportingRelationshipPOST /goals/{goal_gid}/removeSupportingRelationshipRemoves a supporting goal relationship
Asana.GoalRelationshipsApiupdateGoalRelationshipPUT /goal_relationships/{goal_relationship_gid}Update a goal relationship
Asana.GoalsApiaddFollowersPOST /goals/{goal_gid}/addFollowersAdd a collaborator to a goal
Asana.GoalsApicreateGoalPOST /goalsCreate a goal
Asana.GoalsApicreateGoalMetricPOST /goals/{goal_gid}/setMetricCreate a goal metric
Asana.GoalsApideleteGoalDELETE /goals/{goal_gid}Delete a goal
Asana.GoalsApigetGoalGET /goals/{goal_gid}Get a goal
Asana.GoalsApigetGoalsGET /goalsGet goals
Asana.GoalsApigetParentGoalsForGoalGET /goals/{goal_gid}/parentGoalsGet parent goals from a goal
Asana.GoalsApiremoveFollowersPOST /goals/{goal_gid}/removeFollowersRemove a collaborator from a goal
Asana.GoalsApiupdateGoalPUT /goals/{goal_gid}Update a goal
Asana.GoalsApiupdateGoalMetricPOST /goals/{goal_gid}/setMetricCurrentValueUpdate a goal metric
Asana.JobsApigetJobGET /jobs/{job_gid}Get a job by id
Asana.MembershipsApicreateMembershipPOST /membershipsCreate a membership
Asana.MembershipsApideleteMembershipDELETE /memberships/{membership_gid}Delete a membership
Asana.MembershipsApigetMembershipGET /memberships/{membership_gid}Get a membership
Asana.MembershipsApigetMembershipsGET /membershipsGet multiple memberships
Asana.MembershipsApiupdateMembershipPUT /memberships/{membership_gid}Update a membership
Asana.OrganizationExportsApicreateOrganizationExportPOST /organization_exportsCreate an organization export request
Asana.OrganizationExportsApigetOrganizationExportGET /organization_exports/{organization_export_gid}Get details on an org export request
Asana.PortfolioMembershipsApigetPortfolioMembershipGET /portfolio_memberships/{portfolio_membership_gid}Get a portfolio membership
Asana.PortfolioMembershipsApigetPortfolioMembershipsGET /portfolio_membershipsGet multiple portfolio memberships
Asana.PortfolioMembershipsApigetPortfolioMembershipsForPortfolioGET /portfolios/{portfolio_gid}/portfolio_membershipsGet memberships from a portfolio
Asana.PortfoliosApiaddCustomFieldSettingForPortfolioPOST /portfolios/{portfolio_gid}/addCustomFieldSettingAdd a custom field to a portfolio
Asana.PortfoliosApiaddItemForPortfolioPOST /portfolios/{portfolio_gid}/addItemAdd a portfolio item
Asana.PortfoliosApiaddMembersForPortfolioPOST /portfolios/{portfolio_gid}/addMembersAdd users to a portfolio
Asana.PortfoliosApicreatePortfolioPOST /portfoliosCreate a portfolio
Asana.PortfoliosApideletePortfolioDELETE /portfolios/{portfolio_gid}Delete a portfolio
Asana.PortfoliosApigetItemsForPortfolioGET /portfolios/{portfolio_gid}/itemsGet portfolio items
Asana.PortfoliosApigetPortfolioGET /portfolios/{portfolio_gid}Get a portfolio
Asana.PortfoliosApigetPortfoliosGET /portfoliosGet multiple portfolios
Asana.PortfoliosApiremoveCustomFieldSettingForPortfolioPOST /portfolios/{portfolio_gid}/removeCustomFieldSettingRemove a custom field from a portfolio
Asana.PortfoliosApiremoveItemForPortfolioPOST /portfolios/{portfolio_gid}/removeItemRemove a portfolio item
Asana.PortfoliosApiremoveMembersForPortfolioPOST /portfolios/{portfolio_gid}/removeMembersRemove users from a portfolio
Asana.PortfoliosApiupdatePortfolioPUT /portfolios/{portfolio_gid}Update a portfolio
Asana.ProjectBriefsApicreateProjectBriefPOST /projects/{project_gid}/project_briefsCreate a project brief
Asana.ProjectBriefsApideleteProjectBriefDELETE /project_briefs/{project_brief_gid}Delete a project brief
Asana.ProjectBriefsApigetProjectBriefGET /project_briefs/{project_brief_gid}Get a project brief
Asana.ProjectBriefsApiupdateProjectBriefPUT /project_briefs/{project_brief_gid}Update a project brief
Asana.ProjectMembershipsApigetProjectMembershipGET /project_memberships/{project_membership_gid}Get a project membership
Asana.ProjectMembershipsApigetProjectMembershipsForProjectGET /projects/{project_gid}/project_membershipsGet memberships from a project
Asana.ProjectStatusesApicreateProjectStatusForProjectPOST /projects/{project_gid}/project_statusesCreate a project status
Asana.ProjectStatusesApideleteProjectStatusDELETE /project_statuses/{project_status_gid}Delete a project status
Asana.ProjectStatusesApigetProjectStatusGET /project_statuses/{project_status_gid}Get a project status
Asana.ProjectStatusesApigetProjectStatusesForProjectGET /projects/{project_gid}/project_statusesGet statuses from a project
Asana.ProjectTemplatesApideleteProjectTemplateDELETE /project_templates/{project_template_gid}Delete a project template
Asana.ProjectTemplatesApigetProjectTemplateGET /project_templates/{project_template_gid}Get a project template
Asana.ProjectTemplatesApigetProjectTemplatesGET /project_templatesGet multiple project templates
Asana.ProjectTemplatesApigetProjectTemplatesForTeamGET /teams/{team_gid}/project_templatesGet a team's project templates
Asana.ProjectTemplatesApiinstantiateProjectPOST /project_templates/{project_template_gid}/instantiateProjectInstantiate a project from a project template
Asana.ProjectsApiaddCustomFieldSettingForProjectPOST /projects/{project_gid}/addCustomFieldSettingAdd a custom field to a project
Asana.ProjectsApiaddFollowersForProjectPOST /projects/{project_gid}/addFollowersAdd followers to a project
Asana.ProjectsApiaddMembersForProjectPOST /projects/{project_gid}/addMembersAdd users to a project
Asana.ProjectsApicreateProjectPOST /projectsCreate a project
Asana.ProjectsApicreateProjectForTeamPOST /teams/{team_gid}/projectsCreate a project in a team
Asana.ProjectsApicreateProjectForWorkspacePOST /workspaces/{workspace_gid}/projectsCreate a project in a workspace
Asana.ProjectsApideleteProjectDELETE /projects/{project_gid}Delete a project
Asana.ProjectsApiduplicateProjectPOST /projects/{project_gid}/duplicateDuplicate a project
Asana.ProjectsApigetProjectGET /projects/{project_gid}Get a project
Asana.ProjectsApigetProjectsGET /projectsGet multiple projects
Asana.ProjectsApigetProjectsForTaskGET /tasks/{task_gid}/projectsGet projects a task is in
Asana.ProjectsApigetProjectsForTeamGET /teams/{team_gid}/projectsGet a team's projects
Asana.ProjectsApigetProjectsForWorkspaceGET /workspaces/{workspace_gid}/projectsGet all projects in a workspace
Asana.ProjectsApigetTaskCountsForProjectGET /projects/{project_gid}/task_countsGet task count of a project
Asana.ProjectsApiprojectSaveAsTemplatePOST /projects/{project_gid}/saveAsTemplateCreate a project template from a project
Asana.ProjectsApiremoveCustomFieldSettingForProjectPOST /projects/{project_gid}/removeCustomFieldSettingRemove a custom field from a project
Asana.ProjectsApiremoveFollowersForProjectPOST /projects/{project_gid}/removeFollowersRemove followers from a project
Asana.ProjectsApiremoveMembersForProjectPOST /projects/{project_gid}/removeMembersRemove users from a project
Asana.ProjectsApiupdateProjectPUT /projects/{project_gid}Update a project
Asana.RulesApitriggerRulePOST /rule_triggers/{rule_trigger_gid}/runTrigger a rule
Asana.SectionsApiaddTaskForSectionPOST /sections/{section_gid}/addTaskAdd task to section
Asana.SectionsApicreateSectionForProjectPOST /projects/{project_gid}/sectionsCreate a section in a project
Asana.SectionsApideleteSectionDELETE /sections/{section_gid}Delete a section
Asana.SectionsApigetSectionGET /sections/{section_gid}Get a section
Asana.SectionsApigetSectionsForProjectGET /projects/{project_gid}/sectionsGet sections in a project
Asana.SectionsApiinsertSectionForProjectPOST /projects/{project_gid}/sections/insertMove or Insert sections
Asana.SectionsApiupdateSectionPUT /sections/{section_gid}Update a section
Asana.StatusUpdatesApicreateStatusForObjectPOST /status_updatesCreate a status update
Asana.StatusUpdatesApideleteStatusDELETE /status_updates/{status_update_gid}Delete a status update
Asana.StatusUpdatesApigetStatusGET /status_updates/{status_update_gid}Get a status update
Asana.StatusUpdatesApigetStatusesForObjectGET /status_updatesGet status updates from an object
Asana.StoriesApicreateStoryForTaskPOST /tasks/{task_gid}/storiesCreate a story on a task
Asana.StoriesApideleteStoryDELETE /stories/{story_gid}Delete a story
Asana.StoriesApigetStoriesForTaskGET /tasks/{task_gid}/storiesGet stories from a task
Asana.StoriesApigetStoryGET /stories/{story_gid}Get a story
Asana.StoriesApiupdateStoryPUT /stories/{story_gid}Update a story
Asana.TagsApicreateTagPOST /tagsCreate a tag
Asana.TagsApicreateTagForWorkspacePOST /workspaces/{workspace_gid}/tagsCreate a tag in a workspace
Asana.TagsApideleteTagDELETE /tags/{tag_gid}Delete a tag
Asana.TagsApigetTagGET /tags/{tag_gid}Get a tag
Asana.TagsApigetTagsGET /tagsGet multiple tags
Asana.TagsApigetTagsForTaskGET /tasks/{task_gid}/tagsGet a task's tags
Asana.TagsApigetTagsForWorkspaceGET /workspaces/{workspace_gid}/tagsGet tags in a workspace
Asana.TagsApiupdateTagPUT /tags/{tag_gid}Update a tag
Asana.TaskTemplatesApideleteTaskTemplateDELETE /task_templates/{task_template_gid}Delete a task template
Asana.TaskTemplatesApigetTaskTemplateGET /task_templates/{task_template_gid}Get a task template
Asana.TaskTemplatesApigetTaskTemplatesGET /task_templatesGet multiple task templates
Asana.TaskTemplatesApiinstantiateTaskPOST /task_templates/{task_template_gid}/instantiateTaskInstantiate a task from a task template
Asana.TasksApiaddDependenciesForTaskPOST /tasks/{task_gid}/addDependenciesSet dependencies for a task
Asana.TasksApiaddDependentsForTaskPOST /tasks/{task_gid}/addDependentsSet dependents for a task
Asana.TasksApiaddFollowersForTaskPOST /tasks/{task_gid}/addFollowersAdd followers to a task
Asana.TasksApiaddProjectForTaskPOST /tasks/{task_gid}/addProjectAdd a project to a task
Asana.TasksApiaddTagForTaskPOST /tasks/{task_gid}/addTagAdd a tag to a task
Asana.TasksApicreateSubtaskForTaskPOST /tasks/{task_gid}/subtasksCreate a subtask
Asana.TasksApicreateTaskPOST /tasksCreate a task
Asana.TasksApideleteTaskDELETE /tasks/{task_gid}Delete a task
Asana.TasksApiduplicateTaskPOST /tasks/{task_gid}/duplicateDuplicate a task
Asana.TasksApigetDependenciesForTaskGET /tasks/{task_gid}/dependenciesGet dependencies from a task
Asana.TasksApigetDependentsForTaskGET /tasks/{task_gid}/dependentsGet dependents from a task
Asana.TasksApigetSubtasksForTaskGET /tasks/{task_gid}/subtasksGet subtasks from a task
Asana.TasksApigetTaskGET /tasks/{task_gid}Get a task
Asana.TasksApigetTaskForCustomIDGET /workspaces/{workspace_gid}/tasks/custom_id/{custom_id}Get a task for a given custom ID
Asana.TasksApigetTasksGET /tasksGet multiple tasks
Asana.TasksApigetTasksForProjectGET /projects/{project_gid}/tasksGet tasks from a project
Asana.TasksApigetTasksForSectionGET /sections/{section_gid}/tasksGet tasks from a section
Asana.TasksApigetTasksForTagGET /tags/{tag_gid}/tasksGet tasks from a tag
Asana.TasksApigetTasksForUserTaskListGET /user_task_lists/{user_task_list_gid}/tasksGet tasks from a user task list
Asana.TasksApiremoveDependenciesForTaskPOST /tasks/{task_gid}/removeDependenciesUnlink dependencies from a task
Asana.TasksApiremoveDependentsForTaskPOST /tasks/{task_gid}/removeDependentsUnlink dependents from a task
Asana.TasksApiremoveFollowerForTaskPOST /tasks/{task_gid}/removeFollowersRemove followers from a task
Asana.TasksApiremoveProjectForTaskPOST /tasks/{task_gid}/removeProjectRemove a project from a task
Asana.TasksApiremoveTagForTaskPOST /tasks/{task_gid}/removeTagRemove a tag from a task
Asana.TasksApisearchTasksForWorkspaceGET /workspaces/{workspace_gid}/tasks/searchSearch tasks in a workspace
Asana.TasksApisetParentForTaskPOST /tasks/{task_gid}/setParentSet the parent of a task
Asana.TasksApiupdateTaskPUT /tasks/{task_gid}Update a task
Asana.TeamMembershipsApigetTeamMembershipGET /team_memberships/{team_membership_gid}Get a team membership
Asana.TeamMembershipsApigetTeamMembershipsGET /team_membershipsGet team memberships
Asana.TeamMembershipsApigetTeamMembershipsForTeamGET /teams/{team_gid}/team_membershipsGet memberships from a team
Asana.TeamMembershipsApigetTeamMembershipsForUserGET /users/{user_gid}/team_membershipsGet memberships from a user
Asana.TeamsApiaddUserForTeamPOST /teams/{team_gid}/addUserAdd a user to a team
Asana.TeamsApicreateTeamPOST /teamsCreate a team
Asana.TeamsApigetTeamGET /teams/{team_gid}Get a team
Asana.TeamsApigetTeamsForUserGET /users/{user_gid}/teamsGet teams for a user
Asana.TeamsApigetTeamsForWorkspaceGET /workspaces/{workspace_gid}/teamsGet teams in a workspace
Asana.TeamsApiremoveUserForTeamPOST /teams/{team_gid}/removeUserRemove a user from a team
Asana.TeamsApiupdateTeamPUT /teams/{team_gid}Update a team
Asana.TimePeriodsApigetTimePeriodGET /time_periods/{time_period_gid}Get a time period
Asana.TimePeriodsApigetTimePeriodsGET /time_periodsGet time periods
Asana.TimeTrackingEntriesApicreateTimeTrackingEntryPOST /tasks/{task_gid}/time_tracking_entriesCreate a time tracking entry
Asana.TimeTrackingEntriesApideleteTimeTrackingEntryDELETE /time_tracking_entries/{time_tracking_entry_gid}Delete a time tracking entry
Asana.TimeTrackingEntriesApigetTimeTrackingEntriesForTaskGET /tasks/{task_gid}/time_tracking_entriesGet time tracking entries for a task
Asana.TimeTrackingEntriesApigetTimeTrackingEntryGET /time_tracking_entries/{time_tracking_entry_gid}Get a time tracking entry
Asana.TimeTrackingEntriesApiupdateTimeTrackingEntryPUT /time_tracking_entries/{time_tracking_entry_gid}Update a time tracking entry
Asana.TypeaheadApitypeaheadForWorkspaceGET /workspaces/{workspace_gid}/typeaheadGet objects via typeahead
Asana.UserTaskListsApigetUserTaskListGET /user_task_lists/{user_task_list_gid}Get a user task list
Asana.UserTaskListsApigetUserTaskListForUserGET /users/{user_gid}/user_task_listGet a user's task list
Asana.UsersApigetFavoritesForUserGET /users/{user_gid}/favoritesGet a user's favorites
Asana.UsersApigetUserGET /users/{user_gid}Get a user
Asana.UsersApigetUsersGET /usersGet multiple users
Asana.UsersApigetUsersForTeamGET /teams/{team_gid}/usersGet users in a team
Asana.UsersApigetUsersForWorkspaceGET /workspaces/{workspace_gid}/usersGet users in a workspace or organization
Asana.WebhooksApicreateWebhookPOST /webhooksEstablish a webhook
Asana.WebhooksApideleteWebhookDELETE /webhooks/{webhook_gid}Delete a webhook
Asana.WebhooksApigetWebhookGET /webhooks/{webhook_gid}Get a webhook
Asana.WebhooksApigetWebhooksGET /webhooksGet multiple webhooks
Asana.WebhooksApiupdateWebhookPUT /webhooks/{webhook_gid}Update a webhook
Asana.WorkspaceMembershipsApigetWorkspaceMembershipGET /workspace_memberships/{workspace_membership_gid}Get a workspace membership
Asana.WorkspaceMembershipsApigetWorkspaceMembershipsForUserGET /users/{user_gid}/workspace_membershipsGet workspace memberships for a user
Asana.WorkspaceMembershipsApigetWorkspaceMembershipsForWorkspaceGET /workspaces/{workspace_gid}/workspace_membershipsGet the workspace memberships for a workspace
Asana.WorkspacesApiaddUserForWorkspacePOST /workspaces/{workspace_gid}/addUserAdd a user to a workspace or organization
Asana.WorkspacesApigetWorkspaceGET /workspaces/{workspace_gid}Get a workspace
Asana.WorkspacesApigetWorkspacesGET /workspacesGet multiple workspaces
Asana.WorkspacesApiremoveUserForWorkspacePOST /workspaces/{workspace_gid}/removeUserRemove a user from a workspace or organization
Asana.WorkspacesApiupdateWorkspacePUT /workspaces/{workspace_gid}Update a workspace

Optional fields

Our opt_fields feature allows you to request for properties of a resource that you want to be returned in the response (more information here).

NOTE: by default, endpoints that return an array of results (EX: Get multiple tasks, Get multiple projects), will return a compact version of those results (EX: Get multiple tasks returns an array of TaskCompact objects).

EX: Get multiple tasks / getTasks without opt_fields

Example Request
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let opts = {
    "limit": 2,
    "project": "<YOUR_PROJECT_GID>"
};

// GET - get multiple tasks
tasksApiInstance.getTasks(opts).then((result) => {
    console.log(JSON.stringify(result.data, null, 2));
}, (error) => {
    console.error(error.response.body);
});
Example Response
[
  {
    "gid": "123",
    "name": "Task 1",
    "resource_type": "task",
    "resource_subtype": "default_task"
  },
  {
    "gid": "456",
    "name": "Task 2",
    "resource_type": "task",
    "resource_subtype": "default_task"
  }
]

EX: Get multiple tasks / getTasks with opt_fields

Example Request
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let opts = { 
    "limit": 1,
    "project": "<YOUR_PROJECT_GID>",
    "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"
};

// GET - get multiple tasks
tasksApiInstance.getTasks(opts).then((result) => {
    console.log(JSON.stringify(result.data, null, 2));
}, (error) => {
    console.error(error.response.body);
});
Example Response
[
  {
    "gid": "129839839",
    "actual_time_minutes": null,
    "assignee": {
      "gid": "120938293",
      "name": "user@example.com"
    },
    "assignee_status": "upcoming",
    "assignee_section": {
      "gid": "1094838938",
      "name": "Recently assigned"
    },
    "completed": false,
    "completed_at": null,
    "completed_by": null,
    "created_at": "2023-01-01T20:31:21.717Z",
    "created_by": {
      "gid": "1201784467042440",
      "resource_type": "user"
    },
    "custom_fields": [
      {
        "gid": "191859815",
        "enabled": true,
        "name": "Estimated time",
        "description": "Asana-created. Estimate time to complete a task.",
        "number_value": null,
        "precision": 0,
        "format": "duration",
        "currency_code": null,
        "custom_label": null,
        "created_by": null,
        "custom_label_position": null,
        "display_value": null,
        "resource_subtype": "number",
        "is_formula_field": false,
        "is_value_read_only": false,
        "type": "number"
      }
    ],
    "dependencies": [],
    "dependents": [],
    "due_at": "2025-01-20T02:06:58.000Z",
    "due_on": "2025-01-19",
    "followers": [
      {
        "gid": "120938293",
        "name": "user@example.com"
      }
    ],
    "hearted": true,
    "hearts": [
      {
        "gid": "594849843",
        "user": {
          "gid": "120938293",
          "name": "user@example.com"
        }
      }
    ],
    "html_notes": "<body>Example task notes</body>",
    "is_rendered_as_separator": false,
    "liked": true,
    "likes": [
      {
        "gid": "58303939",
        "user": {
          "gid": "120938293",
          "name": "user@example.com"
        }
      }
    ],
    "memberships": [
      {
        "project": {
          "gid": "4567",
          "name": "Example Project"
        },
        "section": {
          "gid": "8900",
          "name": "Untitled section"
        }
      }
    ],
    "modified_at": "2023-01-25T21:24:06.996Z",
    "name": "Task 1",
    "notes": "Example task notes",
    "num_hearts": 1,
    "num_likes": 1,
    "num_subtasks": 0,
    "parent": null,
    "permalink_url": "https://app.asana.com/0/58303939/129839839",
    "projects": [
      {
        "gid": "4567",
        "name": "Example Project"
      }
    ],
    "start_at": null,
    "start_on": null,
    "tags": [],
    "resource_subtype": "default_task",
    "workspace": {
      "gid": "111111",
      "name": "Example Workspace"
    }
  }
]

Pagination

By default, endpoints that return an array of results (EX: Get multiple tasks, Get multiple projects), will return a Collection object. This 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.

Use case

You may run into the following error when making a request to an endpoint that has >1000 results:

"The result is too large. You should use pagination (may require specifying a workspace)!"

In 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.

EX: Pagination gather all resources

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let opts = {
    "project": "<YOUR_PROJECT_GID>",
    "limit": 100,
};

async function getAllTasks(opts) {
    let tasks = await tasksApiInstance.getTasks(opts).then(async (response) => {
        let result = [];
        let page = response;
        while(true) {
            // Add items on page to list of results
            result = result.concat(page.data);
            // Fetch the next page
            page = await page.nextPage();
            // If the there is no data in the next page break from the loop
            if (!page.data) {
                break;
            }
        }
        return result;
    }, (error) => {
        console.error(error.response.body);
    });
    // Do something with the tasks. EX: print out results
    console.log('Tasks: ' + JSON.stringify(tasks, null, 2));
}

getAllTasks(opts);

Sample output:

Tasks: [
    {
      "gid": "123",
      "name": "task 1",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "456",
      "name": "task 2",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "789",
      "name": "task 3",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "101112",
      "name": "task 4",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "131415",
      "name": "task 5",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "161718",
      "name": "task 6",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "192021",
      "name": "task 7",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "222324",
      "name": "task 8",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "252627",
      "name": "task 9",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "282930",
      "name": "task 10",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
    {
      "gid": "313233",
      "name": "task 11",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
]

EX: Pagination do something per page

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let opts = {
    'project': "<YOUR_PROJECT_GID>",
    "limit": 5,
};

let pageIndex = 1;

tasksApiInstance.getTasks(opts).then(async (response) => {
    let page = response;
    while(true) {
        // Do something with the page results
        // EX: print the name of the tasks on that page
        console.log(`Page ${pageIndex}: `);
        page.data.forEach(task => {
            console.log(`    ${task.name}`);
        });
        pageIndex += 1;

        page = await page.nextPage();
        // If the there is no data in the next page break from the loop
        if (!page.data) {
            break;
        }
    }
}, (error) => {
    console.error(error.response.body);
});

Sample output:

Page 1:
    task 1
    task 2
    task 3
    task 4
    task 5
Page 2:
    task 6
    task 7
    task 8
    task 9
    task 10
Page 3:
    task 11
    task 12
    task 13
    task 14
    task 15

Turning off Pagination

If you do not want a Collection object returned and want to implement your own pagination, you can disable pagination by setting RETURN_COLLECTION to false:

EX: Turning off pagination

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// Turn off pagination
client.RETURN_COLLECTION = false;

let tasksApiInstance = new Asana.TasksApi();
let opts = {
    'project': "<YOUR_PROJECT_GID>",
    'limit': 1
};
tasksApiInstance.getTasks(opts).then((result) => {
    console.log('API called successfully. Returned data: ' + JSON.stringify(result, null, 2));
})

Sample response:

API called successfully. Returned data: {
  "data": [
    {
      "gid": "<TASK_GID>",
      "name": "Task 1",
      "resource_type": "task",
      "resource_subtype": "default_task"
    },
  ],
  "next_page": {
    "offset": "gjJl2xAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJib3JkZXJfcmHilbI6IltcIlZ5IixcIjlaWlhVMkkzUUdOoXcEIsMTIwNDYxNTc0NTypNDI3MF0iLCJpYXQiOjE2OTc4MjgsSkjjQsImV4cCI6MTY5NzgyOTM2NH0.5VuMfKvqexoEsKfoPFtayWBNWiKvfR7_hN6MJaaIkx8",
    "path": "/tasks?project=123456&limit=1&offset=gjJl2xAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJib3JkZXJfcmHilbI6IltcIlZ5IixcIjlaWlhVMkkzUUdOoXcEIsMTIwNDYxNTc0NTypNDI3MF0iLCJpYXQiOjE2OTc4MjgsSkjjQsImV4cCI6MTY5NzgyOTM2NH0.5VuMfKvqexoEsKfoPFtayWBNWiKvfR7_hN6MJaaIkx8",
    "uri": "https://app.asana.com/api/1.0/tasks?project=123456&limit=1&offset=gjJl2xAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJib3JkZXJfcmHilbI6IltcIlZ5IixcIjlaWlhVMkkzUUdOoXcEIsMTIwNDYxNTc0NTypNDI3MF0iLCJpYXQiOjE2OTc4MjgsSkjjQsImV4cCI6MTY5NzgyOTM2NH0.5VuMfKvqexoEsKfoPFtayWBNWiKvfR7_hN6MJaaIkx8"
  }
}

Getting events

In order to get events you will need a sync token. This sync token can be acquired in the error message from the initial request to getEvents.

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let eventsApiInstance = new Asana.EventsApi();
let resource = "<YOUR_TASK_OR_PROJECT_GID>"; // String | A resource ID to subscribe to. The resource can be a task or project.
let opts = {
    "sync": ""
};
const timeouts = 5000

// Used to fetch for initial sync token
const setSyncToken = async () => {
    await eventsApiInstance.getEvents(resource, opts).then((result) => {
        console.log(JSON.stringify(result.data, null, 2));
    }, (error) => {
        let syncToken = error.response.body.sync;
        opts['sync'] = syncToken;
    });
}

const getEvents = async () => {
    console.log("Setting sync token");
    await setSyncToken();
    // Fetch for new events every 5 seconds
    console.log(`Fetching events every ${timeouts/1000} second(s)`);
    while(true) {
        await eventsApiInstance.getEvents(resource, opts).then((result) => {
            // Print response
            console.log(`Fetching events since sync: ${opts['sync']}`);
            console.log(JSON.stringify(result.data, null, 2));

            // Update the sync token with the new sync token provided in the response
            opts['sync'] = result._response.sync;
        }, (error) => {
            if (error.status === 412) {
                let syncToken = error.response.body.sync;
                opts['sync'] = syncToken;
                console.log(`412 error new sync token: ${syncToken}`);
            } else{
                console.error(error.response.text);
            }
        });
        await new Promise(resolve => setTimeout(resolve, timeouts));
    }
}

getEvents();

Accessing repsonse data

.
.
.
tasksApiInstance.getTask(task_gid, opts).then((task) => {
    let taskName = task.data.name;
    let taskNotes = task.data.notes;
    console.log(`taskName: ${taskName}`);
    console.log(`taskNotes: ${taskNotes}`);
}, (error) => {
    console.error(error.response.body);
});

Accessing response status code and headers

Use the <METHOD_NAME>WithHttpInfo (EX: getTaskWithHttpInfo) method to make a request that returns a response with headers.

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

let tasksApiInstance = new Asana.TasksApi();
let task_gid = "<YOUR_TASK_GID>";
let opts = {};

tasksApiInstance.getTaskWithHttpInfo(task_gid, opts).then((response_and_data) => {
    let data = response_and_data.data;
    let response = response_and_data.response;
    let task = data.data;
    let headers = response.headers;
    console.log(task);
    console.log(headers);
}, (error) => {
    console.error(error.response.body);
});

Adding deprecation flag: "asana-enable" or "asana-disable" header

EX: Asana-Enable header

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// Add asana-enable header for the client
client.defaultHeaders['asana-enable'] = 'new_goal_memberships';

EX: Asana-Disable header

const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// Add asana-disable header for the client
client.defaultHeaders['asana-disable'] = 'new_goal_memberships';

Using the callApi method

Use the callApi method to make http calls when the endpoint does not exist in the current library version or has bugs

Example: GET, POST, PUT, DELETE on tasks

GET - get a task
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// GET - get a task
client.callApi(
    path='/tasks/{task_gid}',
    httpMethod='GET',
    pathParams={"task_gid": "<YOUR_TASK_GID>"},
    queryParams={},
    headerParams={},
    formParams={},
    bodyParam=null,
    authNames=['token'],
    contentTypes=[],
    accepts=['application/json; charset=UTF-8'],
    returnType='Blob'
).then((response_and_data) => {
    let result = response_and_data.data;
    let task = result.data;
    console.log(task.name);
}, (error) => {
    console.error(error.response.body);
});
GET - get multiple tasks -> with opt_fields
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// GET - get multiple tasks -> with opt_fields
client.callApi(
    path='/tasks',
    httpMethod='GET',
    pathParams={},
    queryParams={
        "limit": 50,
        "modified_since": '2012-02-22T02:06:58.158Z', // OR new Date("2012-02-22T02:06:58.158Z")
        "project": '<YOUR_PROJECT_GID>',
        "opt_fields": 'name,notes'
    },
    headerParams={},
    formParams={},
    bodyParam=null,
    authNames=['token'],
    contentTypes=[],
    accepts=['application/json; charset=UTF-8'],
    returnType='Blob'
).then((response_and_data) => {
    let result = response_and_data.data;
    let tasks = result.data;
    if (tasks.length > 0) {
        console.log(`Task 1 Name: ${tasks[0].name}`);
        console.log(`Task 1 Notes: ${tasks[0].notes}`);
    }
}, (error) => {
    console.error(error.response.body);
});
POST - create a task
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// POST - create a task
client.callApi(
    path='/tasks',
    httpMethod='POST',
    pathParams={},
    queryParams={},
    headerParams={},
    formParams={},
    bodyParam={
        data: {
            "name": "New Task",
            "approval_status": "pending",
            "assignee_status": "upcoming",
            "completed": false,
            "html_notes": "<body>Mittens <em>really</em> likes the stuff from Humboldt.</body>",
            "is_rendered_as_separator": false,
            "liked": true,
            "assignee": "me",
            "projects": ["<YOUR_PROJECT_GID>"],
        }
    },
    authNames=['token'],
    contentTypes=[],
    accepts=['application/json; charset=UTF-8'],
    returnType='Blob'
).then((response_and_data) => {
    let result = response_and_data.data;
    let task = result.data;
    console.log(task.name);
}, (error) => {
    console.error(error.response.body);
});
PUT - update a task
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// PUT - update a task
client.callApi(
    path='/tasks/{task_gid}',
    httpMethod='PUT',
    pathParams={task_gid: "<YOUR_TASK_GID>"},
    queryParams={},
    headerParams={},
    formParams={},
    bodyParam={
        "data": {
            "name": "Updated Task",
            "html_notes": "<body>Updated task notes</body>",
            "due_at": "2025-01-20T02:06:58.147Z"
        }
    },
    authNames=['token'],
    contentTypes=[],
    accepts=['application/json; charset=UTF-8'],
    returnType='Blob'
).then((response_and_data) => {
    let result = response_and_data.data;
    let task = result.data;
    console.log(task.name);
}, (error) => {
    console.error(error.response.body);
});
DELETE - delete a task
const Asana = require('asana');

let client = Asana.ApiClient.instance;
let token = client.authentications['token'];
token.accessToken = '<YOUR_ACCESS_TOKEN>';

// DELETE - delete a task
client.callApi(
    path='/tasks/{task_gid}',
    httpMethod='DELETE',
    pathParams={"task_gid": "<YOUR_TASK_GID>"},
    queryParams={},
    headerParams={},
    formParams={},
    bodyParam=null,
    authNames=['token'],
    contentTypes=[],
    accepts=['application/json; charset=UTF-8'],
    returnType='Blob'
).then((response_and_data) => {
    let result = response_and_data.data;
    let result = result.data;
    console.log(result);
}, (error) => {
    console.error(error.response.body);
});

FAQs

Last updated on 25 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc