From 4e750df6ed4e24d6acc5f3312187ec520946a4e1 Mon Sep 17 00:00:00 2001 From: "asana-publish-client-libraries[bot]" <159857493+asana-publish-client-libraries[bot]@users.noreply.github.com> Date: Sat, 27 Jul 2024 01:38:00 +0000 Subject: [PATCH] Updated Python SDK: v5.0.8 --- README.md | 386 +++++++++++++++++++------------------- asana/api/webhooks_api.py | 4 +- asana/api_client.py | 4 +- asana/configuration.py | 2 +- docs/TeamsApi.md | 10 +- docs/TeamsApi.yaml | 10 +- docs/WebhooksApi.md | 2 +- setup.py | 2 +- 8 files changed, 210 insertions(+), 210 deletions(-) diff --git a/README.md b/README.md index eb6c48f..43227a5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # asana [![GitHub release][release-image]]() [![PyPi Version][pypi-image]][pypi-url] - API version: 1.0 -- Package version: 5.0.7 +- Package version: 5.0.8 ## Requirements. @@ -178,195 +178,195 @@ All URIs are relative to *https://app.asana.com/api/1.0* Class | Method | HTTP request | Description ------------ | ------------- | ------------- | ------------- -*AllocationsApi* | [**create_allocation**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AllocationsApi.md#create_allocation) | **POST** /allocations | Create an allocation -*AllocationsApi* | [**delete_allocation**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AllocationsApi.md#delete_allocation) | **DELETE** /allocations/{allocation_gid} | Delete an allocation -*AllocationsApi* | [**get_allocation**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AllocationsApi.md#get_allocation) | **GET** /allocations/{allocation_gid} | Get an allocation -*AllocationsApi* | [**get_allocations**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AllocationsApi.md#get_allocations) | **GET** /allocations | Get multiple allocations -*AllocationsApi* | [**update_allocation**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AllocationsApi.md#update_allocation) | **PUT** /allocations/{allocation_gid} | Update an allocation -*AttachmentsApi* | [**create_attachment_for_object**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AttachmentsApi.md#create_attachment_for_object) | **POST** /attachments | Upload an attachment -*AttachmentsApi* | [**delete_attachment**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AttachmentsApi.md#delete_attachment) | **DELETE** /attachments/{attachment_gid} | Delete an attachment -*AttachmentsApi* | [**get_attachment**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AttachmentsApi.md#get_attachment) | **GET** /attachments/{attachment_gid} | Get an attachment -*AttachmentsApi* | [**get_attachments_for_object**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AttachmentsApi.md#get_attachments_for_object) | **GET** /attachments | Get attachments from an object -*AuditLogAPIApi* | [**get_audit_log_events**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/AuditLogAPIApi.md#get_audit_log_events) | **GET** /workspaces/{workspace_gid}/audit_log_events | Get audit log events -*BatchAPIApi* | [**create_batch_request**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/BatchAPIApi.md#create_batch_request) | **POST** /batch | Submit parallel requests -*CustomFieldSettingsApi* | [**get_custom_field_settings_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldSettingsApi.md#get_custom_field_settings_for_portfolio) | **GET** /portfolios/{portfolio_gid}/custom_field_settings | Get a portfolio's custom fields -*CustomFieldSettingsApi* | [**get_custom_field_settings_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldSettingsApi.md#get_custom_field_settings_for_project) | **GET** /projects/{project_gid}/custom_field_settings | Get a project's custom fields -*CustomFieldsApi* | [**create_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#create_custom_field) | **POST** /custom_fields | Create a custom field -*CustomFieldsApi* | [**create_enum_option_for_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#create_enum_option_for_custom_field) | **POST** /custom_fields/{custom_field_gid}/enum_options | Create an enum option -*CustomFieldsApi* | [**delete_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#delete_custom_field) | **DELETE** /custom_fields/{custom_field_gid} | Delete a custom field -*CustomFieldsApi* | [**get_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#get_custom_field) | **GET** /custom_fields/{custom_field_gid} | Get a custom field -*CustomFieldsApi* | [**get_custom_fields_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#get_custom_fields_for_workspace) | **GET** /workspaces/{workspace_gid}/custom_fields | Get a workspace's custom fields -*CustomFieldsApi* | [**insert_enum_option_for_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#insert_enum_option_for_custom_field) | **POST** /custom_fields/{custom_field_gid}/enum_options/insert | Reorder a custom field's enum -*CustomFieldsApi* | [**update_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#update_custom_field) | **PUT** /custom_fields/{custom_field_gid} | Update a custom field -*CustomFieldsApi* | [**update_enum_option**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/CustomFieldsApi.md#update_enum_option) | **PUT** /enum_options/{enum_option_gid} | Update an enum option -*EventsApi* | [**get_events**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/EventsApi.md#get_events) | **GET** /events | Get events on a resource -*GoalRelationshipsApi* | [**add_supporting_relationship**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalRelationshipsApi.md#add_supporting_relationship) | **POST** /goals/{goal_gid}/addSupportingRelationship | Add a supporting goal relationship -*GoalRelationshipsApi* | [**get_goal_relationship**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalRelationshipsApi.md#get_goal_relationship) | **GET** /goal_relationships/{goal_relationship_gid} | Get a goal relationship -*GoalRelationshipsApi* | [**get_goal_relationships**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalRelationshipsApi.md#get_goal_relationships) | **GET** /goal_relationships | Get goal relationships -*GoalRelationshipsApi* | [**remove_supporting_relationship**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalRelationshipsApi.md#remove_supporting_relationship) | **POST** /goals/{goal_gid}/removeSupportingRelationship | Removes a supporting goal relationship -*GoalRelationshipsApi* | [**update_goal_relationship**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalRelationshipsApi.md#update_goal_relationship) | **PUT** /goal_relationships/{goal_relationship_gid} | Update a goal relationship -*GoalsApi* | [**add_followers**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#add_followers) | **POST** /goals/{goal_gid}/addFollowers | Add a collaborator to a goal -*GoalsApi* | [**create_goal**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#create_goal) | **POST** /goals | Create a goal -*GoalsApi* | [**create_goal_metric**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#create_goal_metric) | **POST** /goals/{goal_gid}/setMetric | Create a goal metric -*GoalsApi* | [**delete_goal**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#delete_goal) | **DELETE** /goals/{goal_gid} | Delete a goal -*GoalsApi* | [**get_goal**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#get_goal) | **GET** /goals/{goal_gid} | Get a goal -*GoalsApi* | [**get_goals**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#get_goals) | **GET** /goals | Get goals -*GoalsApi* | [**get_parent_goals_for_goal**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#get_parent_goals_for_goal) | **GET** /goals/{goal_gid}/parentGoals | Get parent goals from a goal -*GoalsApi* | [**remove_followers**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#remove_followers) | **POST** /goals/{goal_gid}/removeFollowers | Remove a collaborator from a goal -*GoalsApi* | [**update_goal**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#update_goal) | **PUT** /goals/{goal_gid} | Update a goal -*GoalsApi* | [**update_goal_metric**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/GoalsApi.md#update_goal_metric) | **POST** /goals/{goal_gid}/setMetricCurrentValue | Update a goal metric -*JobsApi* | [**get_job**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/JobsApi.md#get_job) | **GET** /jobs/{job_gid} | Get a job by id -*MembershipsApi* | [**create_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/MembershipsApi.md#create_membership) | **POST** /memberships | Create a membership -*MembershipsApi* | [**delete_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/MembershipsApi.md#delete_membership) | **DELETE** /memberships/{membership_gid} | Delete a membership -*MembershipsApi* | [**get_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/MembershipsApi.md#get_membership) | **GET** /memberships/{membership_gid} | Get a membership -*MembershipsApi* | [**get_memberships**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/MembershipsApi.md#get_memberships) | **GET** /memberships | Get multiple memberships -*MembershipsApi* | [**update_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/MembershipsApi.md#update_membership) | **PUT** /memberships/{membership_gid} | Update a membership -*OrganizationExportsApi* | [**create_organization_export**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/OrganizationExportsApi.md#create_organization_export) | **POST** /organization_exports | Create an organization export request -*OrganizationExportsApi* | [**get_organization_export**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/OrganizationExportsApi.md#get_organization_export) | **GET** /organization_exports/{organization_export_gid} | Get details on an org export request -*PortfolioMembershipsApi* | [**get_portfolio_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfolioMembershipsApi.md#get_portfolio_membership) | **GET** /portfolio_memberships/{portfolio_membership_gid} | Get a portfolio membership -*PortfolioMembershipsApi* | [**get_portfolio_memberships**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfolioMembershipsApi.md#get_portfolio_memberships) | **GET** /portfolio_memberships | Get multiple portfolio memberships -*PortfolioMembershipsApi* | [**get_portfolio_memberships_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfolioMembershipsApi.md#get_portfolio_memberships_for_portfolio) | **GET** /portfolios/{portfolio_gid}/portfolio_memberships | Get memberships from a portfolio -*PortfoliosApi* | [**add_custom_field_setting_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#add_custom_field_setting_for_portfolio) | **POST** /portfolios/{portfolio_gid}/addCustomFieldSetting | Add a custom field to a portfolio -*PortfoliosApi* | [**add_item_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#add_item_for_portfolio) | **POST** /portfolios/{portfolio_gid}/addItem | Add a portfolio item -*PortfoliosApi* | [**add_members_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#add_members_for_portfolio) | **POST** /portfolios/{portfolio_gid}/addMembers | Add users to a portfolio -*PortfoliosApi* | [**create_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#create_portfolio) | **POST** /portfolios | Create a portfolio -*PortfoliosApi* | [**delete_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#delete_portfolio) | **DELETE** /portfolios/{portfolio_gid} | Delete a portfolio -*PortfoliosApi* | [**get_items_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#get_items_for_portfolio) | **GET** /portfolios/{portfolio_gid}/items | Get portfolio items -*PortfoliosApi* | [**get_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#get_portfolio) | **GET** /portfolios/{portfolio_gid} | Get a portfolio -*PortfoliosApi* | [**get_portfolios**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#get_portfolios) | **GET** /portfolios | Get multiple portfolios -*PortfoliosApi* | [**remove_custom_field_setting_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#remove_custom_field_setting_for_portfolio) | **POST** /portfolios/{portfolio_gid}/removeCustomFieldSetting | Remove a custom field from a portfolio -*PortfoliosApi* | [**remove_item_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#remove_item_for_portfolio) | **POST** /portfolios/{portfolio_gid}/removeItem | Remove a portfolio item -*PortfoliosApi* | [**remove_members_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#remove_members_for_portfolio) | **POST** /portfolios/{portfolio_gid}/removeMembers | Remove users from a portfolio -*PortfoliosApi* | [**update_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/PortfoliosApi.md#update_portfolio) | **PUT** /portfolios/{portfolio_gid} | Update a portfolio -*ProjectBriefsApi* | [**create_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectBriefsApi.md#create_project_brief) | **POST** /projects/{project_gid}/project_briefs | Create a project brief -*ProjectBriefsApi* | [**delete_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectBriefsApi.md#delete_project_brief) | **DELETE** /project_briefs/{project_brief_gid} | Delete a project brief -*ProjectBriefsApi* | [**get_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectBriefsApi.md#get_project_brief) | **GET** /project_briefs/{project_brief_gid} | Get a project brief -*ProjectBriefsApi* | [**update_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectBriefsApi.md#update_project_brief) | **PUT** /project_briefs/{project_brief_gid} | Update a project brief -*ProjectMembershipsApi* | [**get_project_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectMembershipsApi.md#get_project_membership) | **GET** /project_memberships/{project_membership_gid} | Get a project membership -*ProjectMembershipsApi* | [**get_project_memberships_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectMembershipsApi.md#get_project_memberships_for_project) | **GET** /projects/{project_gid}/project_memberships | Get memberships from a project -*ProjectStatusesApi* | [**create_project_status_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectStatusesApi.md#create_project_status_for_project) | **POST** /projects/{project_gid}/project_statuses | Create a project status -*ProjectStatusesApi* | [**delete_project_status**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectStatusesApi.md#delete_project_status) | **DELETE** /project_statuses/{project_status_gid} | Delete a project status -*ProjectStatusesApi* | [**get_project_status**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectStatusesApi.md#get_project_status) | **GET** /project_statuses/{project_status_gid} | Get a project status -*ProjectStatusesApi* | [**get_project_statuses_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectStatusesApi.md#get_project_statuses_for_project) | **GET** /projects/{project_gid}/project_statuses | Get statuses from a project -*ProjectTemplatesApi* | [**delete_project_template**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectTemplatesApi.md#delete_project_template) | **DELETE** /project_templates/{project_template_gid} | Delete a project template -*ProjectTemplatesApi* | [**get_project_template**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectTemplatesApi.md#get_project_template) | **GET** /project_templates/{project_template_gid} | Get a project template -*ProjectTemplatesApi* | [**get_project_templates**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectTemplatesApi.md#get_project_templates) | **GET** /project_templates | Get multiple project templates -*ProjectTemplatesApi* | [**get_project_templates_for_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectTemplatesApi.md#get_project_templates_for_team) | **GET** /teams/{team_gid}/project_templates | Get a team's project templates -*ProjectTemplatesApi* | [**instantiate_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectTemplatesApi.md#instantiate_project) | **POST** /project_templates/{project_template_gid}/instantiateProject | Instantiate a project from a project template -*ProjectsApi* | [**add_custom_field_setting_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#add_custom_field_setting_for_project) | **POST** /projects/{project_gid}/addCustomFieldSetting | Add a custom field to a project -*ProjectsApi* | [**add_followers_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#add_followers_for_project) | **POST** /projects/{project_gid}/addFollowers | Add followers to a project -*ProjectsApi* | [**add_members_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#add_members_for_project) | **POST** /projects/{project_gid}/addMembers | Add users to a project -*ProjectsApi* | [**create_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#create_project) | **POST** /projects | Create a project -*ProjectsApi* | [**create_project_for_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#create_project_for_team) | **POST** /teams/{team_gid}/projects | Create a project in a team -*ProjectsApi* | [**create_project_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#create_project_for_workspace) | **POST** /workspaces/{workspace_gid}/projects | Create a project in a workspace -*ProjectsApi* | [**delete_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#delete_project) | **DELETE** /projects/{project_gid} | Delete a project -*ProjectsApi* | [**duplicate_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#duplicate_project) | **POST** /projects/{project_gid}/duplicate | Duplicate a project -*ProjectsApi* | [**get_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#get_project) | **GET** /projects/{project_gid} | Get a project -*ProjectsApi* | [**get_projects**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#get_projects) | **GET** /projects | Get multiple projects -*ProjectsApi* | [**get_projects_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#get_projects_for_task) | **GET** /tasks/{task_gid}/projects | Get projects a task is in -*ProjectsApi* | [**get_projects_for_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#get_projects_for_team) | **GET** /teams/{team_gid}/projects | Get a team's projects -*ProjectsApi* | [**get_projects_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#get_projects_for_workspace) | **GET** /workspaces/{workspace_gid}/projects | Get all projects in a workspace -*ProjectsApi* | [**get_task_counts_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#get_task_counts_for_project) | **GET** /projects/{project_gid}/task_counts | Get task count of a project -*ProjectsApi* | [**project_save_as_template**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#project_save_as_template) | **POST** /projects/{project_gid}/saveAsTemplate | Create a project template from a project -*ProjectsApi* | [**remove_custom_field_setting_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#remove_custom_field_setting_for_project) | **POST** /projects/{project_gid}/removeCustomFieldSetting | Remove a custom field from a project -*ProjectsApi* | [**remove_followers_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#remove_followers_for_project) | **POST** /projects/{project_gid}/removeFollowers | Remove followers from a project -*ProjectsApi* | [**remove_members_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#remove_members_for_project) | **POST** /projects/{project_gid}/removeMembers | Remove users from a project -*ProjectsApi* | [**update_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#update_project) | **PUT** /projects/{project_gid} | Update a project -*RulesApi* | [**trigger_rule**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/RulesApi.md#trigger_rule) | **POST** /rule_triggers/{rule_trigger_gid}/run | Trigger a rule -*SectionsApi* | [**add_task_for_section**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/SectionsApi.md#add_task_for_section) | **POST** /sections/{section_gid}/addTask | Add task to section -*SectionsApi* | [**create_section_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/SectionsApi.md#create_section_for_project) | **POST** /projects/{project_gid}/sections | Create a section in a project -*SectionsApi* | [**delete_section**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/SectionsApi.md#delete_section) | **DELETE** /sections/{section_gid} | Delete a section -*SectionsApi* | [**get_section**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/SectionsApi.md#get_section) | **GET** /sections/{section_gid} | Get a section -*SectionsApi* | [**get_sections_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/SectionsApi.md#get_sections_for_project) | **GET** /projects/{project_gid}/sections | Get sections in a project -*SectionsApi* | [**insert_section_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/SectionsApi.md#insert_section_for_project) | **POST** /projects/{project_gid}/sections/insert | Move or Insert sections -*SectionsApi* | [**update_section**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/SectionsApi.md#update_section) | **PUT** /sections/{section_gid} | Update a section -*StatusUpdatesApi* | [**create_status_for_object**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StatusUpdatesApi.md#create_status_for_object) | **POST** /status_updates | Create a status update -*StatusUpdatesApi* | [**delete_status**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StatusUpdatesApi.md#delete_status) | **DELETE** /status_updates/{status_update_gid} | Delete a status update -*StatusUpdatesApi* | [**get_status**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StatusUpdatesApi.md#get_status) | **GET** /status_updates/{status_update_gid} | Get a status update -*StatusUpdatesApi* | [**get_statuses_for_object**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StatusUpdatesApi.md#get_statuses_for_object) | **GET** /status_updates | Get status updates from an object -*StoriesApi* | [**create_story_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StoriesApi.md#create_story_for_task) | **POST** /tasks/{task_gid}/stories | Create a story on a task -*StoriesApi* | [**delete_story**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StoriesApi.md#delete_story) | **DELETE** /stories/{story_gid} | Delete a story -*StoriesApi* | [**get_stories_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StoriesApi.md#get_stories_for_task) | **GET** /tasks/{task_gid}/stories | Get stories from a task -*StoriesApi* | [**get_story**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StoriesApi.md#get_story) | **GET** /stories/{story_gid} | Get a story -*StoriesApi* | [**update_story**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/StoriesApi.md#update_story) | **PUT** /stories/{story_gid} | Update a story -*TagsApi* | [**create_tag**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#create_tag) | **POST** /tags | Create a tag -*TagsApi* | [**create_tag_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#create_tag_for_workspace) | **POST** /workspaces/{workspace_gid}/tags | Create a tag in a workspace -*TagsApi* | [**delete_tag**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#delete_tag) | **DELETE** /tags/{tag_gid} | Delete a tag -*TagsApi* | [**get_tag**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#get_tag) | **GET** /tags/{tag_gid} | Get a tag -*TagsApi* | [**get_tags**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#get_tags) | **GET** /tags | Get multiple tags -*TagsApi* | [**get_tags_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#get_tags_for_task) | **GET** /tasks/{task_gid}/tags | Get a task's tags -*TagsApi* | [**get_tags_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#get_tags_for_workspace) | **GET** /workspaces/{workspace_gid}/tags | Get tags in a workspace -*TagsApi* | [**update_tag**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TagsApi.md#update_tag) | **PUT** /tags/{tag_gid} | Update a tag -*TaskTemplatesApi* | [**delete_task_template**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TaskTemplatesApi.md#delete_task_template) | **DELETE** /task_templates/{task_template_gid} | Delete a task template -*TaskTemplatesApi* | [**get_task_template**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TaskTemplatesApi.md#get_task_template) | **GET** /task_templates/{task_template_gid} | Get a task template -*TaskTemplatesApi* | [**get_task_templates**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TaskTemplatesApi.md#get_task_templates) | **GET** /task_templates | Get multiple task templates -*TaskTemplatesApi* | [**instantiate_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TaskTemplatesApi.md#instantiate_task) | **POST** /task_templates/{task_template_gid}/instantiateTask | Instantiate a task from a task template -*TasksApi* | [**add_dependencies_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#add_dependencies_for_task) | **POST** /tasks/{task_gid}/addDependencies | Set dependencies for a task -*TasksApi* | [**add_dependents_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#add_dependents_for_task) | **POST** /tasks/{task_gid}/addDependents | Set dependents for a task -*TasksApi* | [**add_followers_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#add_followers_for_task) | **POST** /tasks/{task_gid}/addFollowers | Add followers to a task -*TasksApi* | [**add_project_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#add_project_for_task) | **POST** /tasks/{task_gid}/addProject | Add a project to a task -*TasksApi* | [**add_tag_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#add_tag_for_task) | **POST** /tasks/{task_gid}/addTag | Add a tag to a task -*TasksApi* | [**create_subtask_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#create_subtask_for_task) | **POST** /tasks/{task_gid}/subtasks | Create a subtask -*TasksApi* | [**create_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#create_task) | **POST** /tasks | Create a task -*TasksApi* | [**delete_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#delete_task) | **DELETE** /tasks/{task_gid} | Delete a task -*TasksApi* | [**duplicate_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#duplicate_task) | **POST** /tasks/{task_gid}/duplicate | Duplicate a task -*TasksApi* | [**get_dependencies_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_dependencies_for_task) | **GET** /tasks/{task_gid}/dependencies | Get dependencies from a task -*TasksApi* | [**get_dependents_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_dependents_for_task) | **GET** /tasks/{task_gid}/dependents | Get dependents from a task -*TasksApi* | [**get_subtasks_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_subtasks_for_task) | **GET** /tasks/{task_gid}/subtasks | Get subtasks from a task -*TasksApi* | [**get_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_task) | **GET** /tasks/{task_gid} | Get a task -*TasksApi* | [**get_task_for_custom_id**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_task_for_custom_id) | **GET** /workspaces/{workspace_gid}/tasks/custom_id/{custom_id} | Get a task for a given custom ID -*TasksApi* | [**get_tasks**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_tasks) | **GET** /tasks | Get multiple tasks -*TasksApi* | [**get_tasks_for_project**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_tasks_for_project) | **GET** /projects/{project_gid}/tasks | Get tasks from a project -*TasksApi* | [**get_tasks_for_section**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_tasks_for_section) | **GET** /sections/{section_gid}/tasks | Get tasks from a section -*TasksApi* | [**get_tasks_for_tag**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_tasks_for_tag) | **GET** /tags/{tag_gid}/tasks | Get tasks from a tag -*TasksApi* | [**get_tasks_for_user_task_list**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_tasks_for_user_task_list) | **GET** /user_task_lists/{user_task_list_gid}/tasks | Get tasks from a user task list -*TasksApi* | [**remove_dependencies_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#remove_dependencies_for_task) | **POST** /tasks/{task_gid}/removeDependencies | Unlink dependencies from a task -*TasksApi* | [**remove_dependents_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#remove_dependents_for_task) | **POST** /tasks/{task_gid}/removeDependents | Unlink dependents from a task -*TasksApi* | [**remove_follower_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#remove_follower_for_task) | **POST** /tasks/{task_gid}/removeFollowers | Remove followers from a task -*TasksApi* | [**remove_project_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#remove_project_for_task) | **POST** /tasks/{task_gid}/removeProject | Remove a project from a task -*TasksApi* | [**remove_tag_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#remove_tag_for_task) | **POST** /tasks/{task_gid}/removeTag | Remove a tag from a task -*TasksApi* | [**search_tasks_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#search_tasks_for_workspace) | **GET** /workspaces/{workspace_gid}/tasks/search | Search tasks in a workspace -*TasksApi* | [**set_parent_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#set_parent_for_task) | **POST** /tasks/{task_gid}/setParent | Set the parent of a task -*TasksApi* | [**update_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#update_task) | **PUT** /tasks/{task_gid} | Update a task -*TeamMembershipsApi* | [**get_team_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamMembershipsApi.md#get_team_membership) | **GET** /team_memberships/{team_membership_gid} | Get a team membership -*TeamMembershipsApi* | [**get_team_memberships**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamMembershipsApi.md#get_team_memberships) | **GET** /team_memberships | Get team memberships -*TeamMembershipsApi* | [**get_team_memberships_for_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamMembershipsApi.md#get_team_memberships_for_team) | **GET** /teams/{team_gid}/team_memberships | Get memberships from a team -*TeamMembershipsApi* | [**get_team_memberships_for_user**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamMembershipsApi.md#get_team_memberships_for_user) | **GET** /users/{user_gid}/team_memberships | Get memberships from a user -*TeamsApi* | [**add_user_for_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamsApi.md#add_user_for_team) | **POST** /teams/{team_gid}/addUser | Add a user to a team -*TeamsApi* | [**create_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamsApi.md#create_team) | **POST** /teams | Create a team -*TeamsApi* | [**get_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamsApi.md#get_team) | **GET** /teams/{team_gid} | Get a team -*TeamsApi* | [**get_teams_for_user**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamsApi.md#get_teams_for_user) | **GET** /users/{user_gid}/teams | Get teams for a user -*TeamsApi* | [**get_teams_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamsApi.md#get_teams_for_workspace) | **GET** /workspaces/{workspace_gid}/teams | Get teams in a workspace -*TeamsApi* | [**remove_user_for_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamsApi.md#remove_user_for_team) | **POST** /teams/{team_gid}/removeUser | Remove a user from a team -*TeamsApi* | [**update_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TeamsApi.md#update_team) | **PUT** /teams/{team_gid} | Update a team -*TimePeriodsApi* | [**get_time_period**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TimePeriodsApi.md#get_time_period) | **GET** /time_periods/{time_period_gid} | Get a time period -*TimePeriodsApi* | [**get_time_periods**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TimePeriodsApi.md#get_time_periods) | **GET** /time_periods | Get time periods -*TimeTrackingEntriesApi* | [**create_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TimeTrackingEntriesApi.md#create_time_tracking_entry) | **POST** /tasks/{task_gid}/time_tracking_entries | Create a time tracking entry -*TimeTrackingEntriesApi* | [**delete_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TimeTrackingEntriesApi.md#delete_time_tracking_entry) | **DELETE** /time_tracking_entries/{time_tracking_entry_gid} | Delete a time tracking entry -*TimeTrackingEntriesApi* | [**get_time_tracking_entries_for_task**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TimeTrackingEntriesApi.md#get_time_tracking_entries_for_task) | **GET** /tasks/{task_gid}/time_tracking_entries | Get time tracking entries for a task -*TimeTrackingEntriesApi* | [**get_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TimeTrackingEntriesApi.md#get_time_tracking_entry) | **GET** /time_tracking_entries/{time_tracking_entry_gid} | Get a time tracking entry -*TimeTrackingEntriesApi* | [**update_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TimeTrackingEntriesApi.md#update_time_tracking_entry) | **PUT** /time_tracking_entries/{time_tracking_entry_gid} | Update a time tracking entry -*TypeaheadApi* | [**typeahead_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TypeaheadApi.md#typeahead_for_workspace) | **GET** /workspaces/{workspace_gid}/typeahead | Get objects via typeahead -*UserTaskListsApi* | [**get_user_task_list**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/UserTaskListsApi.md#get_user_task_list) | **GET** /user_task_lists/{user_task_list_gid} | Get a user task list -*UserTaskListsApi* | [**get_user_task_list_for_user**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/UserTaskListsApi.md#get_user_task_list_for_user) | **GET** /users/{user_gid}/user_task_list | Get a user's task list -*UsersApi* | [**get_favorites_for_user**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/UsersApi.md#get_favorites_for_user) | **GET** /users/{user_gid}/favorites | Get a user's favorites -*UsersApi* | [**get_user**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/UsersApi.md#get_user) | **GET** /users/{user_gid} | Get a user -*UsersApi* | [**get_users**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/UsersApi.md#get_users) | **GET** /users | Get multiple users -*UsersApi* | [**get_users_for_team**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/UsersApi.md#get_users_for_team) | **GET** /teams/{team_gid}/users | Get users in a team -*UsersApi* | [**get_users_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/UsersApi.md#get_users_for_workspace) | **GET** /workspaces/{workspace_gid}/users | Get users in a workspace or organization -*WebhooksApi* | [**create_webhook**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WebhooksApi.md#create_webhook) | **POST** /webhooks | Establish a webhook -*WebhooksApi* | [**delete_webhook**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WebhooksApi.md#delete_webhook) | **DELETE** /webhooks/{webhook_gid} | Delete a webhook -*WebhooksApi* | [**get_webhook**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WebhooksApi.md#get_webhook) | **GET** /webhooks/{webhook_gid} | Get a webhook -*WebhooksApi* | [**get_webhooks**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WebhooksApi.md#get_webhooks) | **GET** /webhooks | Get multiple webhooks -*WebhooksApi* | [**update_webhook**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WebhooksApi.md#update_webhook) | **PUT** /webhooks/{webhook_gid} | Update a webhook -*WorkspaceMembershipsApi* | [**get_workspace_membership**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspaceMembershipsApi.md#get_workspace_membership) | **GET** /workspace_memberships/{workspace_membership_gid} | Get a workspace membership -*WorkspaceMembershipsApi* | [**get_workspace_memberships_for_user**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspaceMembershipsApi.md#get_workspace_memberships_for_user) | **GET** /users/{user_gid}/workspace_memberships | Get workspace memberships for a user -*WorkspaceMembershipsApi* | [**get_workspace_memberships_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspaceMembershipsApi.md#get_workspace_memberships_for_workspace) | **GET** /workspaces/{workspace_gid}/workspace_memberships | Get the workspace memberships for a workspace -*WorkspacesApi* | [**add_user_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspacesApi.md#add_user_for_workspace) | **POST** /workspaces/{workspace_gid}/addUser | Add a user to a workspace or organization -*WorkspacesApi* | [**get_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspacesApi.md#get_workspace) | **GET** /workspaces/{workspace_gid} | Get a workspace -*WorkspacesApi* | [**get_workspaces**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspacesApi.md#get_workspaces) | **GET** /workspaces | Get multiple workspaces -*WorkspacesApi* | [**remove_user_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspacesApi.md#remove_user_for_workspace) | **POST** /workspaces/{workspace_gid}/removeUser | Remove a user from a workspace or organization -*WorkspacesApi* | [**update_workspace**](https://github.com/Asana/python-asana/blob/v5.0.7/docs/WorkspacesApi.md#update_workspace) | **PUT** /workspaces/{workspace_gid} | Update a workspace +*AllocationsApi* | [**create_allocation**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AllocationsApi.md#create_allocation) | **POST** /allocations | Create an allocation +*AllocationsApi* | [**delete_allocation**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AllocationsApi.md#delete_allocation) | **DELETE** /allocations/{allocation_gid} | Delete an allocation +*AllocationsApi* | [**get_allocation**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AllocationsApi.md#get_allocation) | **GET** /allocations/{allocation_gid} | Get an allocation +*AllocationsApi* | [**get_allocations**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AllocationsApi.md#get_allocations) | **GET** /allocations | Get multiple allocations +*AllocationsApi* | [**update_allocation**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AllocationsApi.md#update_allocation) | **PUT** /allocations/{allocation_gid} | Update an allocation +*AttachmentsApi* | [**create_attachment_for_object**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AttachmentsApi.md#create_attachment_for_object) | **POST** /attachments | Upload an attachment +*AttachmentsApi* | [**delete_attachment**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AttachmentsApi.md#delete_attachment) | **DELETE** /attachments/{attachment_gid} | Delete an attachment +*AttachmentsApi* | [**get_attachment**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AttachmentsApi.md#get_attachment) | **GET** /attachments/{attachment_gid} | Get an attachment +*AttachmentsApi* | [**get_attachments_for_object**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AttachmentsApi.md#get_attachments_for_object) | **GET** /attachments | Get attachments from an object +*AuditLogAPIApi* | [**get_audit_log_events**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/AuditLogAPIApi.md#get_audit_log_events) | **GET** /workspaces/{workspace_gid}/audit_log_events | Get audit log events +*BatchAPIApi* | [**create_batch_request**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/BatchAPIApi.md#create_batch_request) | **POST** /batch | Submit parallel requests +*CustomFieldSettingsApi* | [**get_custom_field_settings_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldSettingsApi.md#get_custom_field_settings_for_portfolio) | **GET** /portfolios/{portfolio_gid}/custom_field_settings | Get a portfolio's custom fields +*CustomFieldSettingsApi* | [**get_custom_field_settings_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldSettingsApi.md#get_custom_field_settings_for_project) | **GET** /projects/{project_gid}/custom_field_settings | Get a project's custom fields +*CustomFieldsApi* | [**create_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#create_custom_field) | **POST** /custom_fields | Create a custom field +*CustomFieldsApi* | [**create_enum_option_for_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#create_enum_option_for_custom_field) | **POST** /custom_fields/{custom_field_gid}/enum_options | Create an enum option +*CustomFieldsApi* | [**delete_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#delete_custom_field) | **DELETE** /custom_fields/{custom_field_gid} | Delete a custom field +*CustomFieldsApi* | [**get_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#get_custom_field) | **GET** /custom_fields/{custom_field_gid} | Get a custom field +*CustomFieldsApi* | [**get_custom_fields_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#get_custom_fields_for_workspace) | **GET** /workspaces/{workspace_gid}/custom_fields | Get a workspace's custom fields +*CustomFieldsApi* | [**insert_enum_option_for_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#insert_enum_option_for_custom_field) | **POST** /custom_fields/{custom_field_gid}/enum_options/insert | Reorder a custom field's enum +*CustomFieldsApi* | [**update_custom_field**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#update_custom_field) | **PUT** /custom_fields/{custom_field_gid} | Update a custom field +*CustomFieldsApi* | [**update_enum_option**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/CustomFieldsApi.md#update_enum_option) | **PUT** /enum_options/{enum_option_gid} | Update an enum option +*EventsApi* | [**get_events**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/EventsApi.md#get_events) | **GET** /events | Get events on a resource +*GoalRelationshipsApi* | [**add_supporting_relationship**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalRelationshipsApi.md#add_supporting_relationship) | **POST** /goals/{goal_gid}/addSupportingRelationship | Add a supporting goal relationship +*GoalRelationshipsApi* | [**get_goal_relationship**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalRelationshipsApi.md#get_goal_relationship) | **GET** /goal_relationships/{goal_relationship_gid} | Get a goal relationship +*GoalRelationshipsApi* | [**get_goal_relationships**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalRelationshipsApi.md#get_goal_relationships) | **GET** /goal_relationships | Get goal relationships +*GoalRelationshipsApi* | [**remove_supporting_relationship**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalRelationshipsApi.md#remove_supporting_relationship) | **POST** /goals/{goal_gid}/removeSupportingRelationship | Removes a supporting goal relationship +*GoalRelationshipsApi* | [**update_goal_relationship**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalRelationshipsApi.md#update_goal_relationship) | **PUT** /goal_relationships/{goal_relationship_gid} | Update a goal relationship +*GoalsApi* | [**add_followers**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#add_followers) | **POST** /goals/{goal_gid}/addFollowers | Add a collaborator to a goal +*GoalsApi* | [**create_goal**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#create_goal) | **POST** /goals | Create a goal +*GoalsApi* | [**create_goal_metric**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#create_goal_metric) | **POST** /goals/{goal_gid}/setMetric | Create a goal metric +*GoalsApi* | [**delete_goal**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#delete_goal) | **DELETE** /goals/{goal_gid} | Delete a goal +*GoalsApi* | [**get_goal**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#get_goal) | **GET** /goals/{goal_gid} | Get a goal +*GoalsApi* | [**get_goals**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#get_goals) | **GET** /goals | Get goals +*GoalsApi* | [**get_parent_goals_for_goal**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#get_parent_goals_for_goal) | **GET** /goals/{goal_gid}/parentGoals | Get parent goals from a goal +*GoalsApi* | [**remove_followers**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#remove_followers) | **POST** /goals/{goal_gid}/removeFollowers | Remove a collaborator from a goal +*GoalsApi* | [**update_goal**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#update_goal) | **PUT** /goals/{goal_gid} | Update a goal +*GoalsApi* | [**update_goal_metric**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/GoalsApi.md#update_goal_metric) | **POST** /goals/{goal_gid}/setMetricCurrentValue | Update a goal metric +*JobsApi* | [**get_job**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/JobsApi.md#get_job) | **GET** /jobs/{job_gid} | Get a job by id +*MembershipsApi* | [**create_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/MembershipsApi.md#create_membership) | **POST** /memberships | Create a membership +*MembershipsApi* | [**delete_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/MembershipsApi.md#delete_membership) | **DELETE** /memberships/{membership_gid} | Delete a membership +*MembershipsApi* | [**get_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/MembershipsApi.md#get_membership) | **GET** /memberships/{membership_gid} | Get a membership +*MembershipsApi* | [**get_memberships**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/MembershipsApi.md#get_memberships) | **GET** /memberships | Get multiple memberships +*MembershipsApi* | [**update_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/MembershipsApi.md#update_membership) | **PUT** /memberships/{membership_gid} | Update a membership +*OrganizationExportsApi* | [**create_organization_export**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/OrganizationExportsApi.md#create_organization_export) | **POST** /organization_exports | Create an organization export request +*OrganizationExportsApi* | [**get_organization_export**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/OrganizationExportsApi.md#get_organization_export) | **GET** /organization_exports/{organization_export_gid} | Get details on an org export request +*PortfolioMembershipsApi* | [**get_portfolio_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfolioMembershipsApi.md#get_portfolio_membership) | **GET** /portfolio_memberships/{portfolio_membership_gid} | Get a portfolio membership +*PortfolioMembershipsApi* | [**get_portfolio_memberships**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfolioMembershipsApi.md#get_portfolio_memberships) | **GET** /portfolio_memberships | Get multiple portfolio memberships +*PortfolioMembershipsApi* | [**get_portfolio_memberships_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfolioMembershipsApi.md#get_portfolio_memberships_for_portfolio) | **GET** /portfolios/{portfolio_gid}/portfolio_memberships | Get memberships from a portfolio +*PortfoliosApi* | [**add_custom_field_setting_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#add_custom_field_setting_for_portfolio) | **POST** /portfolios/{portfolio_gid}/addCustomFieldSetting | Add a custom field to a portfolio +*PortfoliosApi* | [**add_item_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#add_item_for_portfolio) | **POST** /portfolios/{portfolio_gid}/addItem | Add a portfolio item +*PortfoliosApi* | [**add_members_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#add_members_for_portfolio) | **POST** /portfolios/{portfolio_gid}/addMembers | Add users to a portfolio +*PortfoliosApi* | [**create_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#create_portfolio) | **POST** /portfolios | Create a portfolio +*PortfoliosApi* | [**delete_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#delete_portfolio) | **DELETE** /portfolios/{portfolio_gid} | Delete a portfolio +*PortfoliosApi* | [**get_items_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#get_items_for_portfolio) | **GET** /portfolios/{portfolio_gid}/items | Get portfolio items +*PortfoliosApi* | [**get_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#get_portfolio) | **GET** /portfolios/{portfolio_gid} | Get a portfolio +*PortfoliosApi* | [**get_portfolios**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#get_portfolios) | **GET** /portfolios | Get multiple portfolios +*PortfoliosApi* | [**remove_custom_field_setting_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#remove_custom_field_setting_for_portfolio) | **POST** /portfolios/{portfolio_gid}/removeCustomFieldSetting | Remove a custom field from a portfolio +*PortfoliosApi* | [**remove_item_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#remove_item_for_portfolio) | **POST** /portfolios/{portfolio_gid}/removeItem | Remove a portfolio item +*PortfoliosApi* | [**remove_members_for_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#remove_members_for_portfolio) | **POST** /portfolios/{portfolio_gid}/removeMembers | Remove users from a portfolio +*PortfoliosApi* | [**update_portfolio**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/PortfoliosApi.md#update_portfolio) | **PUT** /portfolios/{portfolio_gid} | Update a portfolio +*ProjectBriefsApi* | [**create_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectBriefsApi.md#create_project_brief) | **POST** /projects/{project_gid}/project_briefs | Create a project brief +*ProjectBriefsApi* | [**delete_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectBriefsApi.md#delete_project_brief) | **DELETE** /project_briefs/{project_brief_gid} | Delete a project brief +*ProjectBriefsApi* | [**get_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectBriefsApi.md#get_project_brief) | **GET** /project_briefs/{project_brief_gid} | Get a project brief +*ProjectBriefsApi* | [**update_project_brief**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectBriefsApi.md#update_project_brief) | **PUT** /project_briefs/{project_brief_gid} | Update a project brief +*ProjectMembershipsApi* | [**get_project_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectMembershipsApi.md#get_project_membership) | **GET** /project_memberships/{project_membership_gid} | Get a project membership +*ProjectMembershipsApi* | [**get_project_memberships_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectMembershipsApi.md#get_project_memberships_for_project) | **GET** /projects/{project_gid}/project_memberships | Get memberships from a project +*ProjectStatusesApi* | [**create_project_status_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectStatusesApi.md#create_project_status_for_project) | **POST** /projects/{project_gid}/project_statuses | Create a project status +*ProjectStatusesApi* | [**delete_project_status**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectStatusesApi.md#delete_project_status) | **DELETE** /project_statuses/{project_status_gid} | Delete a project status +*ProjectStatusesApi* | [**get_project_status**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectStatusesApi.md#get_project_status) | **GET** /project_statuses/{project_status_gid} | Get a project status +*ProjectStatusesApi* | [**get_project_statuses_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectStatusesApi.md#get_project_statuses_for_project) | **GET** /projects/{project_gid}/project_statuses | Get statuses from a project +*ProjectTemplatesApi* | [**delete_project_template**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectTemplatesApi.md#delete_project_template) | **DELETE** /project_templates/{project_template_gid} | Delete a project template +*ProjectTemplatesApi* | [**get_project_template**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectTemplatesApi.md#get_project_template) | **GET** /project_templates/{project_template_gid} | Get a project template +*ProjectTemplatesApi* | [**get_project_templates**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectTemplatesApi.md#get_project_templates) | **GET** /project_templates | Get multiple project templates +*ProjectTemplatesApi* | [**get_project_templates_for_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectTemplatesApi.md#get_project_templates_for_team) | **GET** /teams/{team_gid}/project_templates | Get a team's project templates +*ProjectTemplatesApi* | [**instantiate_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectTemplatesApi.md#instantiate_project) | **POST** /project_templates/{project_template_gid}/instantiateProject | Instantiate a project from a project template +*ProjectsApi* | [**add_custom_field_setting_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#add_custom_field_setting_for_project) | **POST** /projects/{project_gid}/addCustomFieldSetting | Add a custom field to a project +*ProjectsApi* | [**add_followers_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#add_followers_for_project) | **POST** /projects/{project_gid}/addFollowers | Add followers to a project +*ProjectsApi* | [**add_members_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#add_members_for_project) | **POST** /projects/{project_gid}/addMembers | Add users to a project +*ProjectsApi* | [**create_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#create_project) | **POST** /projects | Create a project +*ProjectsApi* | [**create_project_for_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#create_project_for_team) | **POST** /teams/{team_gid}/projects | Create a project in a team +*ProjectsApi* | [**create_project_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#create_project_for_workspace) | **POST** /workspaces/{workspace_gid}/projects | Create a project in a workspace +*ProjectsApi* | [**delete_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#delete_project) | **DELETE** /projects/{project_gid} | Delete a project +*ProjectsApi* | [**duplicate_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#duplicate_project) | **POST** /projects/{project_gid}/duplicate | Duplicate a project +*ProjectsApi* | [**get_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#get_project) | **GET** /projects/{project_gid} | Get a project +*ProjectsApi* | [**get_projects**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#get_projects) | **GET** /projects | Get multiple projects +*ProjectsApi* | [**get_projects_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#get_projects_for_task) | **GET** /tasks/{task_gid}/projects | Get projects a task is in +*ProjectsApi* | [**get_projects_for_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#get_projects_for_team) | **GET** /teams/{team_gid}/projects | Get a team's projects +*ProjectsApi* | [**get_projects_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#get_projects_for_workspace) | **GET** /workspaces/{workspace_gid}/projects | Get all projects in a workspace +*ProjectsApi* | [**get_task_counts_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#get_task_counts_for_project) | **GET** /projects/{project_gid}/task_counts | Get task count of a project +*ProjectsApi* | [**project_save_as_template**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#project_save_as_template) | **POST** /projects/{project_gid}/saveAsTemplate | Create a project template from a project +*ProjectsApi* | [**remove_custom_field_setting_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#remove_custom_field_setting_for_project) | **POST** /projects/{project_gid}/removeCustomFieldSetting | Remove a custom field from a project +*ProjectsApi* | [**remove_followers_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#remove_followers_for_project) | **POST** /projects/{project_gid}/removeFollowers | Remove followers from a project +*ProjectsApi* | [**remove_members_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#remove_members_for_project) | **POST** /projects/{project_gid}/removeMembers | Remove users from a project +*ProjectsApi* | [**update_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#update_project) | **PUT** /projects/{project_gid} | Update a project +*RulesApi* | [**trigger_rule**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/RulesApi.md#trigger_rule) | **POST** /rule_triggers/{rule_trigger_gid}/run | Trigger a rule +*SectionsApi* | [**add_task_for_section**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/SectionsApi.md#add_task_for_section) | **POST** /sections/{section_gid}/addTask | Add task to section +*SectionsApi* | [**create_section_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/SectionsApi.md#create_section_for_project) | **POST** /projects/{project_gid}/sections | Create a section in a project +*SectionsApi* | [**delete_section**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/SectionsApi.md#delete_section) | **DELETE** /sections/{section_gid} | Delete a section +*SectionsApi* | [**get_section**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/SectionsApi.md#get_section) | **GET** /sections/{section_gid} | Get a section +*SectionsApi* | [**get_sections_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/SectionsApi.md#get_sections_for_project) | **GET** /projects/{project_gid}/sections | Get sections in a project +*SectionsApi* | [**insert_section_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/SectionsApi.md#insert_section_for_project) | **POST** /projects/{project_gid}/sections/insert | Move or Insert sections +*SectionsApi* | [**update_section**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/SectionsApi.md#update_section) | **PUT** /sections/{section_gid} | Update a section +*StatusUpdatesApi* | [**create_status_for_object**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StatusUpdatesApi.md#create_status_for_object) | **POST** /status_updates | Create a status update +*StatusUpdatesApi* | [**delete_status**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StatusUpdatesApi.md#delete_status) | **DELETE** /status_updates/{status_update_gid} | Delete a status update +*StatusUpdatesApi* | [**get_status**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StatusUpdatesApi.md#get_status) | **GET** /status_updates/{status_update_gid} | Get a status update +*StatusUpdatesApi* | [**get_statuses_for_object**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StatusUpdatesApi.md#get_statuses_for_object) | **GET** /status_updates | Get status updates from an object +*StoriesApi* | [**create_story_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StoriesApi.md#create_story_for_task) | **POST** /tasks/{task_gid}/stories | Create a story on a task +*StoriesApi* | [**delete_story**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StoriesApi.md#delete_story) | **DELETE** /stories/{story_gid} | Delete a story +*StoriesApi* | [**get_stories_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StoriesApi.md#get_stories_for_task) | **GET** /tasks/{task_gid}/stories | Get stories from a task +*StoriesApi* | [**get_story**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StoriesApi.md#get_story) | **GET** /stories/{story_gid} | Get a story +*StoriesApi* | [**update_story**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/StoriesApi.md#update_story) | **PUT** /stories/{story_gid} | Update a story +*TagsApi* | [**create_tag**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#create_tag) | **POST** /tags | Create a tag +*TagsApi* | [**create_tag_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#create_tag_for_workspace) | **POST** /workspaces/{workspace_gid}/tags | Create a tag in a workspace +*TagsApi* | [**delete_tag**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#delete_tag) | **DELETE** /tags/{tag_gid} | Delete a tag +*TagsApi* | [**get_tag**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#get_tag) | **GET** /tags/{tag_gid} | Get a tag +*TagsApi* | [**get_tags**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#get_tags) | **GET** /tags | Get multiple tags +*TagsApi* | [**get_tags_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#get_tags_for_task) | **GET** /tasks/{task_gid}/tags | Get a task's tags +*TagsApi* | [**get_tags_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#get_tags_for_workspace) | **GET** /workspaces/{workspace_gid}/tags | Get tags in a workspace +*TagsApi* | [**update_tag**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TagsApi.md#update_tag) | **PUT** /tags/{tag_gid} | Update a tag +*TaskTemplatesApi* | [**delete_task_template**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TaskTemplatesApi.md#delete_task_template) | **DELETE** /task_templates/{task_template_gid} | Delete a task template +*TaskTemplatesApi* | [**get_task_template**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TaskTemplatesApi.md#get_task_template) | **GET** /task_templates/{task_template_gid} | Get a task template +*TaskTemplatesApi* | [**get_task_templates**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TaskTemplatesApi.md#get_task_templates) | **GET** /task_templates | Get multiple task templates +*TaskTemplatesApi* | [**instantiate_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TaskTemplatesApi.md#instantiate_task) | **POST** /task_templates/{task_template_gid}/instantiateTask | Instantiate a task from a task template +*TasksApi* | [**add_dependencies_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#add_dependencies_for_task) | **POST** /tasks/{task_gid}/addDependencies | Set dependencies for a task +*TasksApi* | [**add_dependents_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#add_dependents_for_task) | **POST** /tasks/{task_gid}/addDependents | Set dependents for a task +*TasksApi* | [**add_followers_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#add_followers_for_task) | **POST** /tasks/{task_gid}/addFollowers | Add followers to a task +*TasksApi* | [**add_project_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#add_project_for_task) | **POST** /tasks/{task_gid}/addProject | Add a project to a task +*TasksApi* | [**add_tag_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#add_tag_for_task) | **POST** /tasks/{task_gid}/addTag | Add a tag to a task +*TasksApi* | [**create_subtask_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#create_subtask_for_task) | **POST** /tasks/{task_gid}/subtasks | Create a subtask +*TasksApi* | [**create_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#create_task) | **POST** /tasks | Create a task +*TasksApi* | [**delete_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#delete_task) | **DELETE** /tasks/{task_gid} | Delete a task +*TasksApi* | [**duplicate_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#duplicate_task) | **POST** /tasks/{task_gid}/duplicate | Duplicate a task +*TasksApi* | [**get_dependencies_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_dependencies_for_task) | **GET** /tasks/{task_gid}/dependencies | Get dependencies from a task +*TasksApi* | [**get_dependents_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_dependents_for_task) | **GET** /tasks/{task_gid}/dependents | Get dependents from a task +*TasksApi* | [**get_subtasks_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_subtasks_for_task) | **GET** /tasks/{task_gid}/subtasks | Get subtasks from a task +*TasksApi* | [**get_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_task) | **GET** /tasks/{task_gid} | Get a task +*TasksApi* | [**get_task_for_custom_id**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_task_for_custom_id) | **GET** /workspaces/{workspace_gid}/tasks/custom_id/{custom_id} | Get a task for a given custom ID +*TasksApi* | [**get_tasks**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_tasks) | **GET** /tasks | Get multiple tasks +*TasksApi* | [**get_tasks_for_project**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_tasks_for_project) | **GET** /projects/{project_gid}/tasks | Get tasks from a project +*TasksApi* | [**get_tasks_for_section**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_tasks_for_section) | **GET** /sections/{section_gid}/tasks | Get tasks from a section +*TasksApi* | [**get_tasks_for_tag**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_tasks_for_tag) | **GET** /tags/{tag_gid}/tasks | Get tasks from a tag +*TasksApi* | [**get_tasks_for_user_task_list**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_tasks_for_user_task_list) | **GET** /user_task_lists/{user_task_list_gid}/tasks | Get tasks from a user task list +*TasksApi* | [**remove_dependencies_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#remove_dependencies_for_task) | **POST** /tasks/{task_gid}/removeDependencies | Unlink dependencies from a task +*TasksApi* | [**remove_dependents_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#remove_dependents_for_task) | **POST** /tasks/{task_gid}/removeDependents | Unlink dependents from a task +*TasksApi* | [**remove_follower_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#remove_follower_for_task) | **POST** /tasks/{task_gid}/removeFollowers | Remove followers from a task +*TasksApi* | [**remove_project_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#remove_project_for_task) | **POST** /tasks/{task_gid}/removeProject | Remove a project from a task +*TasksApi* | [**remove_tag_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#remove_tag_for_task) | **POST** /tasks/{task_gid}/removeTag | Remove a tag from a task +*TasksApi* | [**search_tasks_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#search_tasks_for_workspace) | **GET** /workspaces/{workspace_gid}/tasks/search | Search tasks in a workspace +*TasksApi* | [**set_parent_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#set_parent_for_task) | **POST** /tasks/{task_gid}/setParent | Set the parent of a task +*TasksApi* | [**update_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#update_task) | **PUT** /tasks/{task_gid} | Update a task +*TeamMembershipsApi* | [**get_team_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamMembershipsApi.md#get_team_membership) | **GET** /team_memberships/{team_membership_gid} | Get a team membership +*TeamMembershipsApi* | [**get_team_memberships**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamMembershipsApi.md#get_team_memberships) | **GET** /team_memberships | Get team memberships +*TeamMembershipsApi* | [**get_team_memberships_for_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamMembershipsApi.md#get_team_memberships_for_team) | **GET** /teams/{team_gid}/team_memberships | Get memberships from a team +*TeamMembershipsApi* | [**get_team_memberships_for_user**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamMembershipsApi.md#get_team_memberships_for_user) | **GET** /users/{user_gid}/team_memberships | Get memberships from a user +*TeamsApi* | [**add_user_for_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamsApi.md#add_user_for_team) | **POST** /teams/{team_gid}/addUser | Add a user to a team +*TeamsApi* | [**create_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamsApi.md#create_team) | **POST** /teams | Create a team +*TeamsApi* | [**get_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamsApi.md#get_team) | **GET** /teams/{team_gid} | Get a team +*TeamsApi* | [**get_teams_for_user**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamsApi.md#get_teams_for_user) | **GET** /users/{user_gid}/teams | Get teams for a user +*TeamsApi* | [**get_teams_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamsApi.md#get_teams_for_workspace) | **GET** /workspaces/{workspace_gid}/teams | Get teams in a workspace +*TeamsApi* | [**remove_user_for_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamsApi.md#remove_user_for_team) | **POST** /teams/{team_gid}/removeUser | Remove a user from a team +*TeamsApi* | [**update_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TeamsApi.md#update_team) | **PUT** /teams/{team_gid} | Update a team +*TimePeriodsApi* | [**get_time_period**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TimePeriodsApi.md#get_time_period) | **GET** /time_periods/{time_period_gid} | Get a time period +*TimePeriodsApi* | [**get_time_periods**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TimePeriodsApi.md#get_time_periods) | **GET** /time_periods | Get time periods +*TimeTrackingEntriesApi* | [**create_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TimeTrackingEntriesApi.md#create_time_tracking_entry) | **POST** /tasks/{task_gid}/time_tracking_entries | Create a time tracking entry +*TimeTrackingEntriesApi* | [**delete_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TimeTrackingEntriesApi.md#delete_time_tracking_entry) | **DELETE** /time_tracking_entries/{time_tracking_entry_gid} | Delete a time tracking entry +*TimeTrackingEntriesApi* | [**get_time_tracking_entries_for_task**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TimeTrackingEntriesApi.md#get_time_tracking_entries_for_task) | **GET** /tasks/{task_gid}/time_tracking_entries | Get time tracking entries for a task +*TimeTrackingEntriesApi* | [**get_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TimeTrackingEntriesApi.md#get_time_tracking_entry) | **GET** /time_tracking_entries/{time_tracking_entry_gid} | Get a time tracking entry +*TimeTrackingEntriesApi* | [**update_time_tracking_entry**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TimeTrackingEntriesApi.md#update_time_tracking_entry) | **PUT** /time_tracking_entries/{time_tracking_entry_gid} | Update a time tracking entry +*TypeaheadApi* | [**typeahead_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TypeaheadApi.md#typeahead_for_workspace) | **GET** /workspaces/{workspace_gid}/typeahead | Get objects via typeahead +*UserTaskListsApi* | [**get_user_task_list**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/UserTaskListsApi.md#get_user_task_list) | **GET** /user_task_lists/{user_task_list_gid} | Get a user task list +*UserTaskListsApi* | [**get_user_task_list_for_user**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/UserTaskListsApi.md#get_user_task_list_for_user) | **GET** /users/{user_gid}/user_task_list | Get a user's task list +*UsersApi* | [**get_favorites_for_user**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/UsersApi.md#get_favorites_for_user) | **GET** /users/{user_gid}/favorites | Get a user's favorites +*UsersApi* | [**get_user**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/UsersApi.md#get_user) | **GET** /users/{user_gid} | Get a user +*UsersApi* | [**get_users**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/UsersApi.md#get_users) | **GET** /users | Get multiple users +*UsersApi* | [**get_users_for_team**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/UsersApi.md#get_users_for_team) | **GET** /teams/{team_gid}/users | Get users in a team +*UsersApi* | [**get_users_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/UsersApi.md#get_users_for_workspace) | **GET** /workspaces/{workspace_gid}/users | Get users in a workspace or organization +*WebhooksApi* | [**create_webhook**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WebhooksApi.md#create_webhook) | **POST** /webhooks | Establish a webhook +*WebhooksApi* | [**delete_webhook**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WebhooksApi.md#delete_webhook) | **DELETE** /webhooks/{webhook_gid} | Delete a webhook +*WebhooksApi* | [**get_webhook**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WebhooksApi.md#get_webhook) | **GET** /webhooks/{webhook_gid} | Get a webhook +*WebhooksApi* | [**get_webhooks**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WebhooksApi.md#get_webhooks) | **GET** /webhooks | Get multiple webhooks +*WebhooksApi* | [**update_webhook**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WebhooksApi.md#update_webhook) | **PUT** /webhooks/{webhook_gid} | Update a webhook +*WorkspaceMembershipsApi* | [**get_workspace_membership**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspaceMembershipsApi.md#get_workspace_membership) | **GET** /workspace_memberships/{workspace_membership_gid} | Get a workspace membership +*WorkspaceMembershipsApi* | [**get_workspace_memberships_for_user**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspaceMembershipsApi.md#get_workspace_memberships_for_user) | **GET** /users/{user_gid}/workspace_memberships | Get workspace memberships for a user +*WorkspaceMembershipsApi* | [**get_workspace_memberships_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspaceMembershipsApi.md#get_workspace_memberships_for_workspace) | **GET** /workspaces/{workspace_gid}/workspace_memberships | Get the workspace memberships for a workspace +*WorkspacesApi* | [**add_user_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspacesApi.md#add_user_for_workspace) | **POST** /workspaces/{workspace_gid}/addUser | Add a user to a workspace or organization +*WorkspacesApi* | [**get_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspacesApi.md#get_workspace) | **GET** /workspaces/{workspace_gid} | Get a workspace +*WorkspacesApi* | [**get_workspaces**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspacesApi.md#get_workspaces) | **GET** /workspaces | Get multiple workspaces +*WorkspacesApi* | [**remove_user_for_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspacesApi.md#remove_user_for_workspace) | **POST** /workspaces/{workspace_gid}/removeUser | Remove a user from a workspace or organization +*WorkspacesApi* | [**update_workspace**](https://github.com/Asana/python-asana/blob/v5.0.8/docs/WorkspacesApi.md#update_workspace) | **PUT** /workspaces/{workspace_gid} | Update a workspace ## Accessing response data @@ -498,7 +498,7 @@ for thread in threads: The pagination feature is enabled by default. This means two things: -1: Endpoints that return a single response (EX: [get_task](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_task) ([Get a task](https://developers.asana.com/reference/gettask)), [get_project](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_project) ([Get a project](https://developers.asana.com/reference/getproject)), etc...) +1: Endpoints that return a single response (EX: [get_task](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_task) ([Get a task](https://developers.asana.com/reference/gettask)), [get_project](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_project) ([Get a project](https://developers.asana.com/reference/getproject)), etc...) will return a response with the `"data"` key abstracted from the response. Instead of returning: @@ -533,8 +533,8 @@ It returns: } ``` -2: Endpoints that return an array of resources (EX: [get_tasks](https://github.com/Asana/python-asana/blob/v5.0.7/docs/TasksApi.md#get_tasks) ([Get multiple tasks](https://developers.asana.com/reference/gettasks)), [get_projects](https://github.com/Asana/python-asana/blob/v5.0.7/docs/ProjectsApi.md#get_projects) ([Get multiple projects](https://developers.asana.com/reference/getprojects)), etc...) -will return a generator object ([PageIterator.items](https://github.com/Asana/python-asana/blob/v5.0.7/asana/pagination/page_iterator.py)) that you can use to iterate through each result. +2: Endpoints that return an array of resources (EX: [get_tasks](https://github.com/Asana/python-asana/blob/v5.0.8/docs/TasksApi.md#get_tasks) ([Get multiple tasks](https://developers.asana.com/reference/gettasks)), [get_projects](https://github.com/Asana/python-asana/blob/v5.0.8/docs/ProjectsApi.md#get_projects) ([Get multiple projects](https://developers.asana.com/reference/getprojects)), etc...) +will return a generator object ([PageIterator.items](https://github.com/Asana/python-asana/blob/v5.0.8/asana/pagination/page_iterator.py)) that you can use to iterate through each result. Example usage 1: ```python diff --git a/asana/api/webhooks_api.py b/asana/api/webhooks_api.py index cf05748..ba7b37a 100644 --- a/asana/api/webhooks_api.py +++ b/asana/api/webhooks_api.py @@ -35,7 +35,7 @@ def __init__(self, api_client=None): def create_webhook(self, body, opts, **kwargs): # noqa: E501 """Establish a webhook # noqa: E501 - Establishing a webhook is a two-part process. First, a simple HTTP POST request initiates the creation similar to creating any other resource. Next, in the middle of this request comes the confirmation handshake. When a webhook is created, we will send a test POST to the target with an `X-Hook-Secret` header. The target must respond with a `200 OK` or `204 No Content` and a matching `X-Hook-Secret` header to confirm that this webhook subscription is indeed expected. We strongly recommend storing this secret to be used to verify future webhook event signatures. The POST request to create the webhook will then return with the status of the request. If you do not acknowledge the webhook’s confirmation handshake it will fail to setup, and you will receive an error in response to your attempt to create it. This means you need to be able to receive and complete the webhook *while* the POST request is in-flight (in other words, have a server that can handle requests asynchronously). Invalid hostnames like localhost will recieve a 403 Forbidden status code. ``` # Request curl -H \"Authorization: Bearer \" \\ -X POST https://app.asana.com/api/1.0/webhooks \\ -d \"resource=8675309\" \\ -d \"target=https://example.com/receive-webhook/7654\" ``` ``` # Handshake sent to https://example.com/ POST /receive-webhook/7654 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Handshake response sent by example.com HTTP/1.1 200 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Response HTTP/1.1 201 { \"data\": { \"gid\": \"43214\", \"resource\": { \"gid\": \"8675309\", \"name\": \"Bugs\" }, \"target\": \"https://example.com/receive-webhook/7654\", \"active\": false, \"last_success_at\": null, \"last_failure_at\": null, \"last_failure_content\": null } } ``` # noqa: E501 + Establishing a webhook is a two-part process. First, a simple HTTP POST request initiates the creation similar to creating any other resource. Next, in the middle of this request comes the confirmation handshake. When a webhook is created, we will send a test POST to the target with an `X-Hook-Secret` header. The target must respond with a `200 OK` or `204 No Content` and a matching `X-Hook-Secret` header to confirm that this webhook subscription is indeed expected. We strongly recommend storing this secret to be used to verify future webhook event signatures. The POST request to create the webhook will then return with the status of the request. If you do not acknowledge the webhook’s confirmation handshake it will fail to setup, and you will receive an error in response to your attempt to create it. This means you need to be able to receive and complete the webhook *while* the POST request is in-flight (in other words, have a server that can handle requests asynchronously). Invalid hostnames like localhost will recieve a 403 Forbidden status code. ``` # Request curl -H \"Authorization: Bearer \" \\ -X POST https://app.asana.com/api/1.0/webhooks \\ -d \"resource=8675309\" \\ -d \"target=https://example.com/receive-webhook/7654\" ``` ``` # Handshake sent to https://example.com/ POST /receive-webhook/7654 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Handshake response sent by example.com HTTP/1.1 200 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Response HTTP/1.1 201 { \"data\": { \"gid\": \"43214\", \"resource\": { \"gid\": \"8675309\", \"name\": \"Bugs\" }, \"target\": \"https://example.com/receive-webhook/7654\", \"active\": false, \"last_success_at\": null, \"last_failure_at\": null, \"last_failure_content\": null }, \"X-Hook-Secret\": \"b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81\" } ``` # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.create_webhook(body, async_req=True) @@ -58,7 +58,7 @@ def create_webhook(self, body, opts, **kwargs): # noqa: E501 def create_webhook_with_http_info(self, body, opts, **kwargs): # noqa: E501 """Establish a webhook # noqa: E501 - Establishing a webhook is a two-part process. First, a simple HTTP POST request initiates the creation similar to creating any other resource. Next, in the middle of this request comes the confirmation handshake. When a webhook is created, we will send a test POST to the target with an `X-Hook-Secret` header. The target must respond with a `200 OK` or `204 No Content` and a matching `X-Hook-Secret` header to confirm that this webhook subscription is indeed expected. We strongly recommend storing this secret to be used to verify future webhook event signatures. The POST request to create the webhook will then return with the status of the request. If you do not acknowledge the webhook’s confirmation handshake it will fail to setup, and you will receive an error in response to your attempt to create it. This means you need to be able to receive and complete the webhook *while* the POST request is in-flight (in other words, have a server that can handle requests asynchronously). Invalid hostnames like localhost will recieve a 403 Forbidden status code. ``` # Request curl -H \"Authorization: Bearer \" \\ -X POST https://app.asana.com/api/1.0/webhooks \\ -d \"resource=8675309\" \\ -d \"target=https://example.com/receive-webhook/7654\" ``` ``` # Handshake sent to https://example.com/ POST /receive-webhook/7654 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Handshake response sent by example.com HTTP/1.1 200 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Response HTTP/1.1 201 { \"data\": { \"gid\": \"43214\", \"resource\": { \"gid\": \"8675309\", \"name\": \"Bugs\" }, \"target\": \"https://example.com/receive-webhook/7654\", \"active\": false, \"last_success_at\": null, \"last_failure_at\": null, \"last_failure_content\": null } } ``` # noqa: E501 + Establishing a webhook is a two-part process. First, a simple HTTP POST request initiates the creation similar to creating any other resource. Next, in the middle of this request comes the confirmation handshake. When a webhook is created, we will send a test POST to the target with an `X-Hook-Secret` header. The target must respond with a `200 OK` or `204 No Content` and a matching `X-Hook-Secret` header to confirm that this webhook subscription is indeed expected. We strongly recommend storing this secret to be used to verify future webhook event signatures. The POST request to create the webhook will then return with the status of the request. If you do not acknowledge the webhook’s confirmation handshake it will fail to setup, and you will receive an error in response to your attempt to create it. This means you need to be able to receive and complete the webhook *while* the POST request is in-flight (in other words, have a server that can handle requests asynchronously). Invalid hostnames like localhost will recieve a 403 Forbidden status code. ``` # Request curl -H \"Authorization: Bearer \" \\ -X POST https://app.asana.com/api/1.0/webhooks \\ -d \"resource=8675309\" \\ -d \"target=https://example.com/receive-webhook/7654\" ``` ``` # Handshake sent to https://example.com/ POST /receive-webhook/7654 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Handshake response sent by example.com HTTP/1.1 200 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Response HTTP/1.1 201 { \"data\": { \"gid\": \"43214\", \"resource\": { \"gid\": \"8675309\", \"name\": \"Bugs\" }, \"target\": \"https://example.com/receive-webhook/7654\", \"active\": false, \"last_success_at\": null, \"last_failure_at\": null, \"last_failure_content\": null }, \"X-Hook-Secret\": \"b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81\" } ``` # noqa: E501 This method makes a synchronous HTTP request by default. To make an asynchronous HTTP request, please pass async_req=True >>> thread = api.create_webhook_with_http_info(body, async_req=True) diff --git a/asana/api_client.py b/asana/api_client.py index 9d23bcb..78ffe96 100644 --- a/asana/api_client.py +++ b/asana/api_client.py @@ -78,12 +78,12 @@ def __init__(self, configuration=None, header_name=None, header_value=None, self.default_headers[header_name] = header_value self.cookie = cookie # Set default User-Agent. - self.user_agent = 'Swagger-Codegen/5.0.7/python' + self.user_agent = 'Swagger-Codegen/5.0.8/python' # Add custom header self.default_headers['X-Asana-Client-Lib'] = urlencode( { 'language': 'Python', - 'version': '5.0.7', + 'version': '5.0.8', 'language_version': platform.python_version(), 'os': platform.system(), 'os_version': platform.release() diff --git a/asana/configuration.py b/asana/configuration.py index f61eb72..5db563b 100644 --- a/asana/configuration.py +++ b/asana/configuration.py @@ -258,5 +258,5 @@ def to_debug_report(self): "OS: {env}\n"\ "Python Version: {pyversion}\n"\ "Version of the API: 1.0\n"\ - "SDK Package Version: 5.0.7".\ + "SDK Package Version: 5.0.8".\ format(env=sys.platform, pyversion=sys.version) diff --git a/docs/TeamsApi.md b/docs/TeamsApi.md index e9d8546..7d540a4 100644 --- a/docs/TeamsApi.md +++ b/docs/TeamsApi.md @@ -87,7 +87,7 @@ api_client = asana.ApiClient(configuration) teams_api_instance = asana.TeamsApi(api_client) body = {"data": {"": "", "": "",}} # dict | The team to create. opts = { - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_member_removal_access_level,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_content_management_access_level,team_member_removal_access_level,visibility", # list[str] | 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. } try: @@ -138,7 +138,7 @@ api_client = asana.ApiClient(configuration) teams_api_instance = asana.TeamsApi(api_client) team_gid = "159874" # str | Globally unique identifier for the team. opts = { - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_member_removal_access_level,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_content_management_access_level,team_member_removal_access_level,visibility", # list[str] | 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. } try: @@ -192,7 +192,7 @@ organization = "1331" # str | The workspace or organization to filter teams on. opts = { 'limit': 50, # int | Results per page. The number of objects to return per page. The value must be between 1 and 100. 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", # str | Offset token. An offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results. *Note: You can only pass in an offset that was returned to you via a previously paginated request.* - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_member_removal_access_level,uri,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_content_management_access_level,team_member_removal_access_level,uri,visibility", # list[str] | 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. } try: @@ -249,7 +249,7 @@ workspace_gid = "12345" # str | Globally unique identifier for the workspace or opts = { 'limit': 50, # int | Results per page. The number of objects to return per page. The value must be between 1 and 100. 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", # str | Offset token. An offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results. *Note: You can only pass in an offset that was returned to you via a previously paginated request.* - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_member_removal_access_level,uri,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_content_management_access_level,team_member_removal_access_level,uri,visibility", # list[str] | 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. } try: @@ -354,7 +354,7 @@ teams_api_instance = asana.TeamsApi(api_client) body = {"data": {"": "", "": "",}} # dict | The team to update. team_gid = "159874" # str | Globally unique identifier for the team. opts = { - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_member_removal_access_level,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_content_management_access_level,team_member_removal_access_level,visibility", # list[str] | 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. } try: diff --git a/docs/TeamsApi.yaml b/docs/TeamsApi.yaml index 80ffe18..8d5588e 100644 --- a/docs/TeamsApi.yaml +++ b/docs/TeamsApi.yaml @@ -35,7 +35,7 @@ TeamsApi: teams_api_instance = asana.TeamsApi(api_client) body = {"data": {"": "", "": "",}} # dict | The team to create. opts = { - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_member_removal_access_level,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_content_management_access_level,team_member_removal_access_level,visibility", # list[str] | 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. } try: @@ -57,7 +57,7 @@ TeamsApi: teams_api_instance = asana.TeamsApi(api_client) team_gid = "159874" # str | Globally unique identifier for the team. opts = { - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_member_removal_access_level,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_content_management_access_level,team_member_removal_access_level,visibility", # list[str] | 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. } try: @@ -82,7 +82,7 @@ TeamsApi: opts = { 'limit': 50, # int | Results per page. The number of objects to return per page. The value must be between 1 and 100. 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", # str | Offset token. An offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results. *Note: You can only pass in an offset that was returned to you via a previously paginated request.* - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_member_removal_access_level,uri,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_content_management_access_level,team_member_removal_access_level,uri,visibility", # list[str] | 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. } try: @@ -107,7 +107,7 @@ TeamsApi: opts = { 'limit': 50, # int | Results per page. The number of objects to return per page. The value must be between 1 and 100. 'offset': "eyJ0eXAiOJiKV1iQLCJhbGciOiJIUzI1NiJ9", # str | Offset token. An offset to the next page returned by the API. A pagination request will return an offset token, which can be used as an input parameter to the next request. If an offset is not passed in, the API will return the first page of results. *Note: You can only pass in an offset that was returned to you via a previously paginated request.* - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_member_removal_access_level,uri,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,offset,organization,organization.name,path,permalink_url,team_content_management_access_level,team_member_removal_access_level,uri,visibility", # list[str] | 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. } try: @@ -152,7 +152,7 @@ TeamsApi: body = {"data": {"": "", "": "",}} # dict | The team to update. team_gid = "159874" # str | Globally unique identifier for the team. opts = { - 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_member_removal_access_level,visibility", # list[str] | 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. + 'opt_fields': "description,edit_team_name_or_description_access_level,edit_team_visibility_or_trash_team_access_level,guest_invite_management_access_level,html_description,join_request_management_access_level,member_invite_management_access_level,name,organization,organization.name,permalink_url,team_content_management_access_level,team_member_removal_access_level,visibility", # list[str] | 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. } try: diff --git a/docs/WebhooksApi.md b/docs/WebhooksApi.md index 99900ef..4f70904 100644 --- a/docs/WebhooksApi.md +++ b/docs/WebhooksApi.md @@ -14,7 +14,7 @@ Method | HTTP request | Description Establish a webhook -Establishing a webhook is a two-part process. First, a simple HTTP POST request initiates the creation similar to creating any other resource. Next, in the middle of this request comes the confirmation handshake. When a webhook is created, we will send a test POST to the target with an `X-Hook-Secret` header. The target must respond with a `200 OK` or `204 No Content` and a matching `X-Hook-Secret` header to confirm that this webhook subscription is indeed expected. We strongly recommend storing this secret to be used to verify future webhook event signatures. The POST request to create the webhook will then return with the status of the request. If you do not acknowledge the webhook’s confirmation handshake it will fail to setup, and you will receive an error in response to your attempt to create it. This means you need to be able to receive and complete the webhook *while* the POST request is in-flight (in other words, have a server that can handle requests asynchronously). Invalid hostnames like localhost will recieve a 403 Forbidden status code. ``` # Request curl -H \"Authorization: Bearer \" \\ -X POST https://app.asana.com/api/1.0/webhooks \\ -d \"resource=8675309\" \\ -d \"target=https://example.com/receive-webhook/7654\" ``` ``` # Handshake sent to https://example.com/ POST /receive-webhook/7654 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Handshake response sent by example.com HTTP/1.1 200 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Response HTTP/1.1 201 { \"data\": { \"gid\": \"43214\", \"resource\": { \"gid\": \"8675309\", \"name\": \"Bugs\" }, \"target\": \"https://example.com/receive-webhook/7654\", \"active\": false, \"last_success_at\": null, \"last_failure_at\": null, \"last_failure_content\": null } } ``` +Establishing a webhook is a two-part process. First, a simple HTTP POST request initiates the creation similar to creating any other resource. Next, in the middle of this request comes the confirmation handshake. When a webhook is created, we will send a test POST to the target with an `X-Hook-Secret` header. The target must respond with a `200 OK` or `204 No Content` and a matching `X-Hook-Secret` header to confirm that this webhook subscription is indeed expected. We strongly recommend storing this secret to be used to verify future webhook event signatures. The POST request to create the webhook will then return with the status of the request. If you do not acknowledge the webhook’s confirmation handshake it will fail to setup, and you will receive an error in response to your attempt to create it. This means you need to be able to receive and complete the webhook *while* the POST request is in-flight (in other words, have a server that can handle requests asynchronously). Invalid hostnames like localhost will recieve a 403 Forbidden status code. ``` # Request curl -H \"Authorization: Bearer \" \\ -X POST https://app.asana.com/api/1.0/webhooks \\ -d \"resource=8675309\" \\ -d \"target=https://example.com/receive-webhook/7654\" ``` ``` # Handshake sent to https://example.com/ POST /receive-webhook/7654 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Handshake response sent by example.com HTTP/1.1 200 X-Hook-Secret: b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81 ``` ``` # Response HTTP/1.1 201 { \"data\": { \"gid\": \"43214\", \"resource\": { \"gid\": \"8675309\", \"name\": \"Bugs\" }, \"target\": \"https://example.com/receive-webhook/7654\", \"active\": false, \"last_success_at\": null, \"last_failure_at\": null, \"last_failure_content\": null }, \"X-Hook-Secret\": \"b537207f20cbfa02357cf448134da559e8bd39d61597dcd5631b8012eae53e81\" } ``` ([more information](https://developers.asana.com/reference/createwebhook)) diff --git a/setup.py b/setup.py index 81b81f5..23c5421 100644 --- a/setup.py +++ b/setup.py @@ -14,7 +14,7 @@ from setuptools import setup, find_packages # noqa: H301 NAME = "asana" -VERSION = "5.0.7" +VERSION = "5.0.8" with open(os.path.join(os.path.dirname(__file__), 'README.md')) as readme: LONG_DESCRIPTION = readme.read() # To install the library, run the following